[Genode] why do I need to rebuild ports for different platforms? was: buid directory outside ...

Paul Dufresne dufresnep at ...9...
Tue Jan 29 16:55:54 CET 2013

I said:
While trying the different 'platforms' (kernels), the build system
seems a bit unoptimized.
To me, rebuilding libports, ports, gems in each different kernels
don't make much sense.
I don't expect them to apply patch platform-specifics, only Genode-specifics.
So it would make sense to specify two directory on create_builddir:
one common for all platforms, and one for the platform.
Norman replied:
That would be cool but it is not possible.

Even though those libraries look like being the same for each base
platform, they are different. At compile time, those libraries
ultimately depend on platform-specific header files (e.g., the kernel's
syscall bindings). So a library built for one kernel will typically not
work on another kernel because it would try to call kernel functions in
wrong ways. In theory, all those kernel-specific things could be
encapsulated in a single kernel-specific library with an interface that
hides all kernel details. But in practice, this would be extremely
difficult and the extra indirection needed for that would certainly
imply runtime overheads. In my opinion, the little added value of such a
feature does not justify opening a big can of problems.
Strange. You made me think if I expect libc to be differently compiled
for different platforms. I concluded that I don't expect so.

In fact I expect everything running above Core, to not be
platform-specific, including device drivers.
Sure, we don't need to build some drivers if the architecture does not
have the coresponing hardware, but that does not means it would be
compiled differently.

And I definitively *do not* expect libraries to be compiled with
specific kernel headers file. I expect libc, device drivers, to call
Core the same way, and Core to be compiled in a specific manner for
each platform.

More information about the users mailing list