So did you find a bug in the current design of the clang-wrapper hack? If so it'd be better to get it fixed there rather than in the Alex/happy setup HS files.
On Tuesday, November 19, 2013, Kazu Yamamoto wrote: > Hi Carter, > SimonM, please read this message. > > I will answer Carter's question and show a solution of my problem. > > > Kazu. This is exactly the problem I linked to. Could you try the > proposed > > patches to test if they allow builds to succeed with a wrapped clang on > > your machine? > > I installed nkpart's alex and happy with GHC/clang-wrapper. With this > alex and happy, I can build GHC head with GHC/GCC42. But I cannot > build GHC head with GHC/clang-wrapper. > > Moreover, I can install happy and alex with GHC/clang-wrapper without > nkpart's patches. > > I think that your problem is how to build alex and happy with > GHC/clang-wrapper. But my problem is how to compile HS files created > by alex and happy with GHC/clang-wrapper. > > After deep investigation, I found the source of my problem. Consider > the following file created by CPP of clang or GCC: > > ---- > # 1 "<built-inxxx>" 1 > # 1 "templates/GenericTemplatexxx.hs" 2 > {-# FOO > #-} > ---- > > % clang -E -undef -x assembler-with-cpp this_file > generates: > > ---- > # 1 "test" > # 1 "<built-in>" 1 > # 1 "test" 2 > # 1 "<built-inxxx>" 1 > > # 1 "templates/GenericTemplatexxx.hs" 2 > > {-# FOO > #-} > ---- > > So, the line started with " #" cannot be treated by GHC. This is the > problem. > > % clang -E -undef -x c this_file > generates: > > ---- > # 1 "test" > # 1 "<built-in>" 1 > # 1 "<built-in>" 3 > > > > # 1 "<command line>" 1 > # 1 "<built-in>" 2 > # 1 "test" 2 > # 1 "<built-inxxx>" 1 > # 1 "templates/GenericTemplatexxx.hs" 2 > {-# FOO > ---- > > And an error occurs because of " #-}". > > So, replacing "-x c" with "-x assembler-with-cpp" in a wrapper is a > MUST. And HS files generated by alex and happy should not include > lines started with "# ". > > My solution so far is adding "-optP-P" to alex and happy to not > generate line markers. An example patch to alex is attached. > > I can build GHC head with GHC/clang-wrapper and with alex and happy > with this hack. > > --Kazu > > diff --git a/Setup.lhs b/Setup.lhs > index 302a3f0..6ab62d5 100644 > --- a/Setup.lhs > +++ b/Setup.lhs > @@ -44,7 +44,7 @@ myPostBuild _ flags _ lbi = do > runProgram p = rawSystemProgramConf verbosity p (withPrograms lbi) > cpp_template src dst opts = do > let tmp = dst ++ ".tmp" > - runProgram ghcProgram (["-o", tmp, "-E", "-cpp", "templates" </> > src] ++ opts) > + runProgram ghcProgram (["-o", tmp, "-E", "-cpp", "-optP-P", > "templates" </> src] ++ opts) > writeFile dst . unlines . map mungeLinePragma . lines =<< > readFile tmp > removeFile tmp > > > > > > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org <javascript:;> > http://www.haskell.org/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs