packages feed

aihc-cpp-2.0.0.0: bench/include/cabal_macros.h

/*
 * A deliberately empty stand-in for the cabal_macros.h that Cabal generates,
 * for the benchmark corpus only.
 *
 * Cabal writes one of these per package during a build, defining VERSION_ and
 * MIN_VERSION_ for that package's own dependencies. A bare source tree has
 * none, so a module that includes it by name fails to resolve the include —
 * and because the three preprocessors disagree about whether an unresolvable
 * include is fatal, that turned into a difference in the failure counts that
 * said nothing about preprocessing.
 *
 * This file exists so the include resolves. It defines nothing on purpose.
 *
 * A snapshot-wide file with a MIN_VERSION_ for all 3441 packages was tried and
 * is not here, for two reasons. Resolving the include is nearly all of the
 * benefit: with the macros defined, only two more modules preprocessed
 * cleanly, because an undefined macro in an #if simply takes the other branch
 * rather than failing. And it cannot be pre-included the way a real build
 * pre-includes cabal_macros.h: even pruned to the packages the corpus names it
 * is 212KB against an average module of 12KB, which turned a 71MiB corpus into
 * 1.3GiB and made the benchmark measure macro-file parsing (3.26s to 69.56s).
 *
 * A real per-package cabal_macros.h is small because it holds only that
 * package's dependencies. A shared one cannot be, so this one holds nothing.
 */

#pragma once