An Ada runtime library is used to provide a standard interface to different operating systems and hardware. Already two different ways of compilation (1) based on the C library (2) based on assembly code, is supported in the ZFP library. Both versions can be had by pressing a different node of the v-tree. Although this works, it all becomes complicated when I want to add the same file to both systems and have to maintain multiple branches. Also, I want to a add a version of the library with no OS support and one with 64-bit arm support and probably MIPS and so on and so forth.
I needed to do a major overhaul of the code to support different platforms. An option was added to the gprbuild project file and with this option different source directories are selected to compile the library. All the sources have been distributed over different directories, one directory adainclude for generic (non-platform specific) code and multiple directories under the platform directory for all those files that are different per system. Now that all the source files are in different directories, the only way the runtime can be used is once it is installed1.
To use this new code, download the patch and signature;
- The patch: zfp_3_platform.vpatch.
- The signature: zfp_3_platform.vpatch.ave1.sig.
After pressing, you'll need to do the following magic commands in the zfp directory2;
make clean MODE=x86_64-asm make MODE=x86_64-asm make install MODE=x86_64-asm PREFIX=prefix-asm
To check;
cd examples make clean make RTS=../prefix-asm
This will build the assembly based gnat library, for the C based do in the zfp directory;
make clean make MODE=x86_64-c make install MODE=x86_64-asm PREFIX=prefix-c
Again, to check
cd examples
make clean
make RTS=../prefix-c
Once built and installed into a prefix directory the default GNAT, the C and asm library can all be used to build the examples. The only thing to be set is the runtime directory with the RTS environment variable.
- At installation time the source files will nicely be put into the target adainclude directory with the gprinstall command [↩]
make
is necessary, the gprbuild is fine for building Ada libraries and executables but when it comes to a simple rule to copy a file to a new name (so that gprinstall can pick it up and install that file) you can forget about it. [↩]