Ok, so what to do with the interface files generated?
What happens now: flxg writes the file IF there is something to write into it.
It writes the file in the same location as the C++ files it generates.
Before solving, lets note the next upgrade, if it can be done: generating
a working C/C++ interface for the library. Considering that the felix
interface looks like this (for one function):
// FELIX C FUNCTION setup3
// binding for export cfun _i41933_f41933_setup3 as setup3
fun setup3 : int -> int = "setup3($1)"
requires
header
"""
extern "C" FLX_IMPORT int setup3(int);
"""
;
it's pretty clear the "header" section is already the right C/C++ interface.
In fact if we generate that, we can just include it instead of the header
section for each function.
The question is: where would it go?
To me it makes sense if the Felix and C++ interfaces live next to the generated
binary.
So for example if you said:
flx -c --static -od . fred.flx
then fred.o lives in the current directory, so fred_interface.flx should too,
as should
fred_cxx_interface.hpp. If you said
flx -c --static -ox fred fred.flx
what would one do? Or used
flx -c --static -o fred.o fred.flx
do we strip off the ".o" to calculate the interface file names?
Or do we use another switch:
flx -c --static -o fred.o -fi fred_interface.flx -ci
fred_cxx_interface.hpp fred.flx
?
There's more to consider. The above is a single object file. Typically libraries
have multiple object files in them.
And there's even more. To use an actual C library, Felix has a resource manager
that checks a config database... so shouldn't we also generate
fred.fpc
And where would we put that? How would we set up the -L and -I switches
for a package we haven't installed?
And a related problem. Suppose you use SDL2. Ok, so you have to make a package
sdl2.fpc
and put it in the INSTALL_DIR/host/config directory. So when you do an upgrade
from the
repository and install that .. the install deletes the INSTALL_DIR (to make
sure it
is clean). Where do we put packages describing external libraries where Felix
won't
delete them?
I have come to the understanding that the greatest evil for build systems is
the existence
of file systems .. because that means you have to somehow associate distinct
but related
files and there's no fixed way to do that.
--
john skaller
[email protected]
http://felix-lang.org
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language