where are the headers?

Alan Grimes agrimes at speakeasy.net
Wed Jul 19 04:11:24 CEST 2006

Adam Lackorzynski wrote:
>>I'm planning out how to port Minix to L4 and I can't find any of the


>>I have CVS'd just about everything on your downloads page yet
>>./l4/include, ./l4/lib and ./l4/bin do not exist.

> Those directories are created in the object directory when you build the
> tree. They are in the packages initially and will be linked to the
> mentioned directories during the build.

I had suspected as much, it just wasn't documented that way.

My hope was to figure out what to do with the source code before
breaking it.

>>I feel that many of the choices regarding the layout of the source code
>>and the usage of the more sophisticated tools only serve to obfuscate
>>the system to new users. =(

> We are not obfuscating the system on purpose to make the life of anyone
> harder as it already is. But you won't find anyone saying that our
> documentation is an excellent example of documentation either. We're
> trying to do something about this but won't promise anything...

There's a great deal to be said against the design choices above.

1. Creating include directories in this kind of automated fassion
obfuscates where the relevant files are. As a counterexample, the Minix
source tree placess all PUBLIC header files in "./src/include" while
keeping PRIVATE header files in "./src/kernel". It is hard to find fault
with Minix's design choices because it is trivial to find exactly which
headers your driver needs and know which ones it _SHOULD_ be using.

2. the "pkg" directory, possibly overcrowded on my system because I was
essentially grabbing stuff at random, is far too flat for its own good.

Packages such as "qt" seem to be userspace packages ?? DOES L4 ACTUALLY
HAVE A SUPPORTED GRAPHICS SYSTEM ??, and should not be lumped in with
sigma0, rather they should be distributed in a completely indepandant
source tree!

As a counterexample, Minix divides its sources into "commands",
"drivers", "Servers", and "Lib". This organization is indispensible to
someone trying to learn the system.

As it is, I'm faced with around 120 paths and no map! =(

3. Libraries and headers from the varrious packages should not be mixed
except in the installed OS. Necessary headers should be -I'd into the build.

4. Automake, though it is a nightmare, actually does seem to help things
on the user side. Since my Minix installation already works much much
better than my Linux installation ever did, I'd like to be able to try
to build L4 on it. =P -- Okay, not very realistic...

Minix has both its own version of make and Gmake.

In general, Minix is a very well laid-out system. I'd highly reccomend
you look at how they laid out the tree and build system; But don't try
to make L4 as cripled as Minix currently is!!! =P Users can't even use
simple IPC on Minix!!! =((( -- hence my renewed interest in L4.

Don't let your schoolwork get in the way of your learning.

### NEW E-MAIL: agrimes at speakeasy.net ###

More information about the l4-hackers mailing list