Hi Mike,
Sounds like an interesting project. Here's some ideas for you on the LLVM Makefile System.
If you haven't, I *strongly* suggest you read the makefile and project documentation (docs/MakefileGuide.html and docs/Projects.html). There is much information there that you need to understand.
LLVM is set up so that a single directory builds a single result. Since your source code is fairly large, I would suggest that you allow LLVM to recurse into subdirectories and build archive libraries for each of those directories. You can then use libtool to assemble a finale archive, object or shared object from the compiled archives. I don't believe LLVM has this capability built into its rules, but we could add it once you've figured out the details.
Note that libtool can automatically rip apart archives and recombine them into larger libraries. Read up on libtool for further information.
Reid.
Mike Emmel wrote:
First I'd like to let you know I've started working on porting gcjx to llvm.
Some other intrested people may help but I've just started the project.
My first question is I'm porting gcjx over to use the llvm build
system I've successfully created a number of libraries but gcjx uses a
number of sub directories for its source and I'd like the .o files for
all of them to become one library.
I can't seem to find a way to do that llvm seems to want all sources
in one directory.
If I do something like
SOURCES += aot/aotclass.cc aot/aotfactory.cc aot/mangle.cc
I get the follwing error
GC heuristics: --param ggc-min-expand=81 --param ggc-min-heapsize=95905
aot/aotclass.cc:301: fatal error: opening dependency file
/media/WDC_Combo/home/memmel/GTK2.7/Qspin/Developer/Source/Languages/Core/Source/core/lib/compiler/gcjx/Debug/aot/aotclass.CXXd:
No such file or directory
compilation terminated.
This is telling you that it couldn't find the dependency file for C++. That's because there's no "aot" directory in the Debug directory (where the dependency files are normally placed). That's probably a bug in the makefiles, but your usage is a little unusual too (i.e. the design parameters of the makefile system didn't presume your usage scenario).
and trying to get them to had via LIBS as one big object file seems to
fail also.
I don't understand "trying to get them to had via LIBS". As I said earlier, your best bet is to just build each sub-directory individually and then reassemble a larger library from the component archives built in other directories.