Created
January 10, 2016 17:26
-
-
Save AlainODea/bd5b3e0e6f7c4227f009 to your computer and use it in GitHub Desktop.
GHC 7.10.3 build fails with cpphs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* DO NOT EDIT: This file is automatically generated by Cabal */ | |
/* package rts-1.0 */ | |
#define VERSION_rts "1.0" | |
#define MIN_VERSION_rts(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 0 || \ | |
(major1) == 1 && (major2) == 0 && (minor) <= 0) | |
/* package ghc-prim-0.4.0.0 */ | |
#define VERSION_ghc_prim "0.4.0.0" | |
#define MIN_VERSION_ghc_prim(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 4 || \ | |
(major1) == 0 && (major2) == 4 && (minor) <= 0) | |
/* package integer-gmp-1.0.0.0 */ | |
#define VERSION_integer_gmp "1.0.0.0" | |
#define MIN_VERSION_integer_gmp(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 0 || \ | |
(major1) == 1 && (major2) == 0 && (minor) <= 0) | |
/* tool cpphs-1.19.3 */ | |
#define TOOL_VERSION_cpphs "1.19.3" | |
#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 19 || \ | |
(major1) == 1 && (major2) == 19 && (minor) <= 3) | |
/* tool gcc-4.8 */ | |
#define TOOL_VERSION_gcc "4.8" | |
#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\ | |
(major1) < 4 || \ | |
(major1) == 4 && (major2) < 8 || \ | |
(major1) == 4 && (major2) == 8 && (minor) <= 0) | |
/* tool ghc-7.10.3 */ | |
#define TOOL_VERSION_ghc "7.10.3" | |
#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\ | |
(major1) < 7 || \ | |
(major1) == 7 && (major2) < 10 || \ | |
(major1) == 7 && (major2) == 10 && (minor) <= 3) | |
/* tool ghc-pkg-7.10.3 */ | |
#define TOOL_VERSION_ghc_pkg "7.10.3" | |
#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\ | |
(major1) < 7 || \ | |
(major1) == 7 && (major2) < 10 || \ | |
(major1) == 7 && (major2) == 10 && (minor) <= 3) | |
/* tool haddock-2.14.3 */ | |
#define TOOL_VERSION_haddock "2.14.3" | |
#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\ | |
(major1) < 2 || \ | |
(major1) == 2 && (major2) < 14 || \ | |
(major1) == 2 && (major2) == 14 && (minor) <= 3) | |
/* tool hpc-0.67 */ | |
#define TOOL_VERSION_hpc "0.67" | |
#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 67 || \ | |
(major1) == 0 && (major2) == 67 && (minor) <= 0) | |
/* tool hsc2hs-0.67 */ | |
#define TOOL_VERSION_hsc2hs "0.67" | |
#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 67 || \ | |
(major1) == 0 && (major2) == 67 && (minor) <= 0) | |
/* tool pkg-config-0.26 */ | |
#define TOOL_VERSION_pkg_config "0.26" | |
#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 26 || \ | |
(major1) == 0 && (major2) == 26 && (minor) <= 0) | |
/* tool strip-2.24 */ | |
#define TOOL_VERSION_strip "2.24" | |
#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\ | |
(major1) < 2 || \ | |
(major1) == 2 && (major2) < 24 || \ | |
(major1) == 2 && (major2) == 24 && (minor) <= 0) | |
#define CURRENT_PACKAGE_KEY "base_HQfYBxpPvuw8OunzQu6JGM" |
Iterative narrowing.
working2.hs:
{-# LANGUAGE CPP #-}
#define EXAMPLE_MACRO(arg1,arg2) (\
arg1 > arg2)
#ifdef EXAMPLE_MACRO
#endif
can be preprocessed correctly:
$ cpphs --cpp working2.hs -o $tempfile
$
I've isolated the issue to the handling of if defined on multi-argument macros.
if defined works on single-argument macros.
working1.hs:
{-# LANGUAGE CPP #-}
#define EXAMPLE_MACRO(arg) (\
arg)
#if defined(EXAMPLE_MACRO)
#endif
preprocess it (it works!):
$ cpphs --cpp working1.hs -o $tempfile
$
ifdef works on multiple-argument macros.
working2.hs:
{-# LANGUAGE CPP #-}
#define EXAMPLE_MACRO(arg1,arg2) (\
arg1 > arg2)
#ifdef EXAMPLE_MACRO
#endif
preprocess it (it works!):
$ cpphs --cpp working2.hs -o $tempfile
$
if defined fails on multi-argument macros.
broken2.hs:
{-# LANGUAGE CPP #-}
#define EXAMPLE_MACRO(arg1,arg2) (\
arg1 > arg2)
#if defined(EXAMPLE_MACRO)
#endif
preprocess it (it fails!):
$ cpphs --cpp broken2.hs -o $tempfile
cpphs: macro EXAMPLE_MACRO expected 2 arguments, but was given 0
$
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Iterative narrowing.
broken2.hs:
can't be preprocessed correctly:
$ cpphs --cpp broken2.hs -o $tempfile cpphs: macro EXAMPLE_MACRO expected 2 arguments, but was given 0 $