Am 27.02.2012 11:36, schrieb Iain Buclaw:
I think that is fine for the structure of the build directories,
however I feel strongly that they should not be installed in such a
structure.

To take your example:

druntime
|-core
|---atomic.d (generic files)
|---bitop.d
|---[...]
|-gc
|-gcstub
|-rt

For the file structure below -  when building for glibc, the make file
would have -I libdc/glibc in it's DFLAGS (or compile all relevant
sources in one go) - so libdc/glibc/core/stdc/stdio.d would still be
declared as  'module core.stdc.stdio;'

When running 'make install' - the build gets the correct sources and
puts them in their true locations.

|-libdc
|---glibc
|-----core      // Installed in /usr/include/d2/core
|-------sys     // Installed in /usr/include/d2/core/sys
|-------stdc    // Installed in /usr/include/d2/core/stdc
|---bionic
|-----core      // Installed in /usr/include/d2/core
|-------sys     // Installed in /usr/include/d2/core/sys
|-------stdc    // Installed in /usr/include/d2/core/stdc
|---newlib
|-----core      // Installed in /usr/include/d2/core
|-------sys     // Installed in /usr/include/d2/core/sys
|-------stdc    // Installed in /usr/include/d2/core/stdc


The idea being that bionic/newlib packages are not shipped with glibc releases.


The complexity here would be a minor alternation to the way the
current build process is done, and will require *no change* in either
existing user code or how the druntime library is written.


Regards

That's what I meant when I wrote "compile in the correct directory". Sorry, I should have explained that better.
 
I think this is the best way to do this. I'll create a pull request soon, although I'll probably wait till we migrated to git.

BTW: We can actually use submodules to easily merge changes between the different C libraries. I set up some test repositories to demonstrate this:
https://github.com/jpf91/test-gdc is the base directory of druntime. It has got the
|-libc
|---glibc
|---bionic

structure, but glibc and bionic are submodules. The actual code for those is in
https://github.com/jpf91/test-libc and 'bionic' and 'glibc' are linked to the matching branches in test-libc.

To checkout:
git clone git://github.com/jpf91/test-gdc.git
git submodule init
git submodule update
-- 
Johannes Pfau