[LLVMdev] Top Level Stuff
sabre at nondot.org
Mon Jul 2 02:49:19 CDT 2007
On Sun, 1 Jul 2007, Tanya M. Lattner wrote:
> I don't think we should have a docs module. Its much better to allow a
> person to check out only llvm and get the appropriate documentation. Same
> for hlvm, and whatever project. Its very inconvenient to check out
> multiple things just to get llvm and docs.
To put it another way, I think the docs for the subproject should follow
>> 4. /utils/ (or perhaps /tools/)
>> I think there's an opportunity for us to put some common tools that are
>> used by several modules into a top level module named /utils/. Initially
>> this could be a merge of the hlvm and llvm module /utils/ directory
>> (excluding things like tblgen which is llvm specific).
> What tools are common? This is another thing someone has to check out.
I think that there is common stuff, but we should keep it as minimal as
possible. I think that llvm-config should be common, but can't think of
anything else that should be.
In particular, with a unified llvm-project world, I think checking out
llvm-project should give you something like this:
And probably nothing else.
Importantly, the README.txt would talk about how to use the makefile,
suggesting common things, like:
make checkout PROJECT=llvm-gcc
which checks out llvm-gcc and all dependencies.
The makefile itself would have no project-specific details in it, it would
require all the projects to be self describing about their dependencies.
llvm-gcc depends on llvm which depends on llvm-support or something.
'make checkout' would check out the requested project, then recursively
check out its dependencies.
This would give you a tree like this:
The ability for the makefile to drive an arbitrary build system is pretty
important. We already have llvm and llvm-gcc which have totally different
build systems. By having the top-level independent of any individual
build system, we can independently move things to scons or whatever with
little pain (just have a text file in the top-level of each project that
says "run this command to build me" "run this command to test me" etc).
More information about the LLVMdev