I am still trying to bring GCC to HelenOS but the truth is that I haven't made a big progress since my last post. However, I promised another script that would simplify the porting even more. I am not 100% sure it simplifies it that much but it makes the whole process much easier to reproduce. Let me introduce the HelenOS coastline.
The whole process is highly inspired by makepkg package building script from Arch Linux. The idea is that each ported package would have its own script controlling its build process. The simplification comes in a way of prepared variables containing stuff like C compiler flags specific for HelenOS or path to the C cross-compiler. Also, the helper script takes care of downloading of the package tarballs.
The scripts are hosted in my coastline repository on GitHub.
If you want to try it out, first clone the repository:
git clone git://github.com/vhotspur/coastline.git
I would assume that you cloned that into
~/helenos/coast. The repository should contain an incomplete README, a
hsct.sh script and few library-named directories.
I am pushing the GCC-related changes into my lp:~vojtech-horky/helenos/gcc-port repository so I would recommend you to check-out that repository as well, for example into
~/helenos/gcc-port. Once you checkout the branch, configure it for
ia32 and build it.
Next prepare directory for the ported applications. The idea is that there will be separate directory for each architecture: here I would assume that you are using directory
~/helenos/coast-build/ia32. A configuration file has to be prepared before you can actually build something. Currently, only single value is required. Place the following into
root = /home/<username>/helenos/gcc-port
Now you should be able to actually build something. The script is not able to handle dependencies so you have to build the libraries in correct order.
Building zlib is then as simple as typing:
~/helenos/coast/hsct.sh build zlib
This command only builds the library. If you want to actually run it, you need to copy it to the HelenOS source tree, into the
/uspace/dist directory and rebuild HelenOS. The copying is done with following command:
~/helenos/coast/hsct.sh install zlib
However, you still need to rebuild HelenOS by running
If you now launch HelenOS,
minigzip should be available.
In similar fashion you can build other libraries and try running the tests provided with them inside HelenOS.
I would be glad if you would actually try the script. However, it is still work in progress and it may not always work although I tried hard to make it as safe as possible. I welcome any suggestions how to improve this script. Patches are even more welcomed ;-).
If you have any questions, feel free to ask them either here or on HelenOS mailing list.
Thanks for reading!