I am looking at implementing a builder in Felix, the prototype of which is in

        src/tools/flx_build_rtl_demo.flx

My idea is to drive the building off the *.fpc database.
So the builder will not make guesses about the configuration,
instead it will search the *.fpc database to discover what libraries
have to be built, and how to build them.

This will involve extending the *.fpc records to contain fields like:

        source: src/gc

which tell that "flx_gc" package is in repository/src/gc.

To build a DLL it has to be linked against dependent DLLS,
and the switches for that will be provided by the database.
Similarly some -DBUILD_GC macro is required on windows
for dll_export and that too will go in the config database.

Some reorganisation may be required to make all this work.
For example the library libflx_dynamic.so contains code
from multiple "packages" such as executil, strutil, dynlink.

But the primary code is in src/rtl :-)

Building demux will be fun, since it supports several different socket
event monitoring methods. On Linux select, poll, and epoll would compile
although you'd use epoll.

To reduce the load on the database assumptions have to be made,
for example related to naming of things. Which header files are public
and which needed just for building? What library does the code go into?

for example Felix makes the rule building a shared library for "fred" on OSX as

        libfred_dynamic.dylib

Typically there's a "flx" as well, eg

        libflx_fred_dynamic

if the library is built by Felix eg:

        libre2.so <-- Google source
        libflx_re2_dynamic.so <-- Felix version of the same thing

To automate the building fairly rigid rules are needed or the config
database will become unmaintainable.

Unfortunately its hard to change things like directory names to conform to new
rules without breaking something, at least temporarily.

The autobuild stuff should fit seamlessly into the pkgtool, so there's
some interplay their. Eventually I hope:

        install felix bootstrap binaries
        install the library source
        build a new Felix from the source using the bootstrap tools

        maintain the system with itself, remove (or at least ignore) the 
bootstrap tools.

We should end up with a packaged based development system which works
a bit like Debian except it builds from source transparently, and it works
on all platforms (i.e. on Windows too).


--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to