makeDependObj o2 arch src
]
+compileGeneratedCxxFile :: Options -> String -> HRule
+compileGeneratedCxxFile opts src =
+ let o2 = opts { optSuffix = "" }
+ arch = optArch o2
+ in
+ Rules [ Rule (cxxCompiler o2 arch src (objectFilePath o2 src) ),
+ makeDependCxxObj o2 arch src
+ ]
+
compileCFiles :: Options -> [String] -> HRule
compileCFiles opts srcs = Rules [ compileCFile opts s | s <- srcs ]
compileCxxFiles :: Options -> [String] -> HRule
compileGeneratedCFiles :: Options -> [String] -> HRule
compileGeneratedCFiles opts srcs =
Rules [ compileGeneratedCFile opts s | s <- srcs ]
+compileGeneratedCxxFiles :: Options -> [String] -> HRule
+compileGeneratedCxxFiles opts srcs =
+ Rules [ compileGeneratedCxxFile opts s | s <- srcs ]
--
-- Add a set of C (or whatever) dependences on a *generated* file.
++
[ flounderTHCStubPath opts f
| f <- (Args.flounderTHCStubs args)]
+ ++
+ (Args.generatedCFiles args) ++ (Args.generatedCxxFiles args)
]
allLibraryPaths :: Args.Args -> [String]
appGetOptionsForArch arch args =
(options arch) { extraIncludes =
- [ NoDep SrcTree "src" a | a <- Args.addIncludes args],
+ [ NoDep SrcTree "src" a | a <- Args.addIncludes args]
+ ++
+ [ NoDep BuildTree arch a | a <- Args.addGeneratedIncludes args],
optIncludes = (optIncludes $ options arch) \\
[ NoDep SrcTree "src" i | i <- Args.omitIncludes args ],
optFlags = (optFlags $ options arch) \\
opts = appGetOptionsForArch arch args
csrcs = Args.cFiles args
cxxsrcs = Args.cxxFiles args
+ gencsrc = Args.generatedCFiles args
+ gencxxsrc = Args.generatedCxxFiles args
appname = Args.target args
-- XXX: Not sure if this is correct. Currently assuming that if the app
-- contains C++ files, we have to use the C++ linker.
++
[ compileCFiles opts csrcs,
compileCxxFiles opts cxxsrcs,
+ compileGeneratedCFiles opts gencsrc,
+ compileGeneratedCxxFiles opts gencxxsrc,
assembleSFiles opts (Args.assemblyFiles args),
mylink opts (allObjectPaths opts args) (allLibraryPaths args) appname
]
opts = arrakisAppGetOptionsForArch arch args
csrcs = Args.cFiles args
cxxsrcs = Args.cxxFiles args
+ gencsrc = Args.generatedCFiles args
+ gencxxsrc = Args.generatedCxxFiles args
appname = Args.target args
-- XXX: Not sure if this is correct. Currently assuming that if the app
-- contains C++ files, we have to use the C++ linker.
++
[ compileCFiles opts csrcs,
compileCxxFiles opts cxxsrcs,
+ compileGeneratedCFiles opts gencsrc,
+ compileGeneratedCxxFiles opts gencxxsrc,
assembleSFiles opts (Args.assemblyFiles args),
mylink opts (allObjectPaths opts args) (allLibraryPaths args) appname
]
opts = libGetOptionsForArch arch args
csrcs = Args.cFiles args
cxxsrcs = Args.cxxFiles args
+ gencsrc = Args.generatedCFiles args
+ gencxxsrc = Args.generatedCxxFiles args
in
Rules ( flounderRules opts args csrcs
++
++
[ compileCFiles opts csrcs,
compileCxxFiles opts cxxsrcs,
+ compileGeneratedCFiles opts gencsrc,
+ compileGeneratedCxxFiles opts gencxxsrc,
assembleSFiles opts (Args.assemblyFiles args),
staticLibrary opts (Args.target args) (allObjectPaths opts args) (allLibraryPaths args)
]