I made an attempt to port libunistring (needed for guile) trying to follow porting guide. I didn't go far but feel that what I've done did not go in the right direction and would like to ask for opinions about my feelings.
Short story
I would like to be able to do:
./configure --host=genode-x86 && make
Longer story
List of compiled sources in libunistring depends on results of running configure and there is more than 500 source files. Even if I would prepare list of files to compile probably it would be different in next revision so it would have to be at least updated during upgrade. I feel it would be waste of resources.
From different perspective as on of the goals of Genode for this year is
to have more software packages ported I think the procedure to port should be as straightforward as possible. Probably most of the ported software will be based on libc (I think that packages that will not be linked against libc mostly will constitute base of genode not userspace programs) and to be able to quickly port libc based libraries and applications build system should not replaced but reused.
My feeling is that current Genode build system is great for Genode specific components but for porting general purpose requires too much maintenance.
I don't know detailes underneath current makefiles based build system but I imagine steps to compile using configure could look somehow like this:
1. Prepare spec with dependencies containing libc - just like it is right now
2. make deps - build dependencies and install headers somewhere - this is probably done right now in current build system
3. Run configure in this prepared environment. Running it without prepared environment fails when testing if genode-x86-gcc can create binaries - so quite quickly :-)
4. make - real porting work - hopefully not much
5. make install - to some prepared place?
6. from installed files take headers in case of libraries and binaries - this somehow works right now
Firstly I'd like to hear what you think about the idea in general.
Eventually could you provide some technical informations where are the most important parts of build system where I should look to be able to make such changes?