
#8683: add "cpp program" and "cpp program options" to settings file -------------------------------------+------------------------------------ Reporter: carter | Owner: Type: feature request | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: #8439 -------------------------------------+------------------------------------ Comment (by carter): heres my current notes, which sort of restate my prior comment NOTES from config.mk.in {{{ CONTEXT_DIFF = @ContextDiffCmd@ CP = cp # It's not easy to separate the CPP program from its flags, as # AC_PROG_CPP defines CPP as "/usr/bin/gcc -E" CPP = @CPP@ @CPPFLAGS@ # # RAWCPP_FLAGS are the flags to give to cpp (viz, gcc -E) to persuade it to # behave plausibly on Haskell sources. # # Clang in particular is a bit more annoying, so we suppress some warnings. RAWCPP_FLAGS = -undef -traditional ifeq "$(CC_CLANG_BACKEND)" "1" RAWCPP_FLAGS += -Wno-invalid-pp-token -Wno-unicode -Wno- trigraphs endif }}} RAWCPP is then used in compiler/ghc.mk to define {{{ @echo 'cRAWCPP_FLAGS :: String' >> $@ @echo 'cRAWCPP_FLAGS = "$(RAWCPP_FLAGS)"' >> $@ }}} which is then used in compiler/main/SysTools.lhs to do {{{ 234 gcc_prog <- getSetting "C compiler command" 235: gcc_args_str <- getSetting "C compiler flags" .... let cpp_prog = gcc_prog 289 cpp_args = Option "-E" 290 : map Option (words cRAWCPP_FLAGS) 291: ++ gcc_args }}} and then intiizes (still in SysTools) {{{ sPgm_P = (cpp_prog, cpp_args), }}} then in compiler/main/DynFlags.hs {{{ 1807: setPgmP f = let (pgm:args) = words f in alterSettings (\s -> s { sPgm_P = (pgm, map Option args)}) }}} and then still in compiler/main/DynFlags.hs {{{ 2144: , Flag "pgmP" (hasArg setPgmP) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8683#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler