[LLVMdev] Top Level Stuff

Reid Spencer rspencer at reidspencer.com
Sat Jun 30 15:53:29 PDT 2007


All,

The current SVN repository has several modules at the top level (llvm,
test-suite, java, stacker, etc.). The modules contain the software that
makes up the LLVM Project. However, there is nothing at the top level
that explains any of this. So, I am considering doing the following at
the top level of the repository (i.e. in
http://llvm.org/svn/llvm-project):

1. /README.html
Just a short README file in HTML format so that people browsing into the
repository can get the lay of the land. This would indicate what the
LLVM Project is, what its modules are, where you can find the main
website, documentation for each module, etc.

2. /website/
I think the LLVM web site (hosted at http://llvm.org/) should be a
subversion module named website. It should not contain the releases
(huge files) and should be converted from the original llvm-www CVS
module. Additionally, we should set httpd up so that it rewrites any /
request to /svn/llvm-project/website. This will allow subversion to
auto-update the web site without us having to do a checkout

3. /docs/
Right now the /docs/ url is mapped to /svn/llvm-project/llvm/trunk/docs/
which is okay temporarily, but I'd like to see /docs/ become a
subversion module that provides documentation for the project at the
meta-level. When llvm-gcc, hlvm and the new C front end all hit the
repository there will be a need for some documentation about things that
are common across all modules and about the project as a whole. Right
now these are handled either by the web site or by the llvm module. 

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).

4. "projects"
I don't think its appropriate for the llvm/trunk/projects directory to
be the place where a "project" is checked out. In fact, I'm not sure the
notion of "project" even makes sense any more. I would prefer that we
just have a set of modules at the top level and those modules have some
inter-dependencies. For example, you should be able to just check out
the "test-suite" module at the top level and run it. I think the primary
motivation for having it in the llvm/projects directory was so that such
projects could auto-configure when LLVM was configured. For newcomers
this is unusual and for llvm developers its a maintenance burden. If a
project depends on another project, it should just use the normal
configure mechanism (e.g. --with-llvm=/path/to/llvm). We could provide
some tools in /utils/ to make this easier.  Furthermore, not having to
support "projects" in the makefile system will make the makefiles much
easier to understand and will make the conversion to scons easier.

Your thoughts?

Reid.




More information about the llvm-dev mailing list