Adam Lackorzynski wrote:
I'm planning out how to port Minix to L4 and I can't find any of the hearders.
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.