Sorry I'm having a really hard time getting the dependency 
checking to work properly. It's almost done. This includes both
checking if the cache is valid for the compiler and grammar,
the cached standard library is valid, the Felix source is unchanged,
and now also the checking is done for C and C++ compiles.

The latter will not have much significance yet for ordinary users,
since it mainly impacts pure C/C++ builds of the RTL, because
Felix can only be used for pure C/C++ building with a stub Felix
program.

One thing I'm considering is changing the cache structure,
so there is a separate cache for each target. Suppose you have
both clang and gcc and targets for both established, and you're
building for both. 

The Felix compiles are invariant. The same C++ would normally
be built from the same shared sources. This is a bit problematic
in itself: if you were also cross compiling for Windows, the standard
library "plat" module differs, and, there condition switches for
platform adaption would differ, so the C++ would differ.

However the C++ dependency checking would not differ in the
former case, unless an RTL library header file was involved.

In that case there is only one generic header which is shared but it
has "callouts" into the target directory. Most of these callouts are
stubs, but some do have real differences between platforms,
and some between compilers (eg __GNUC__ macros).
At present switching compilers would be ignored since I'm
using cc -MM not cc -MM.

If the cache is entirely "per target" this would avoid some errors in the
dependency checking, as well as rerunning some things that didn't
need to be re-run. However the cost would be extra building that
wasn't necessary.

Static compiles would be more impacted than dynamic.
This is because in principle static linking means an executable
is dependent on the toolchain since it's dependent on library
details of the toolchain library used to compile the object files.

OTOH for shared libraries, the headers might be independent
of the libraries, so a clang built program could still link at load
time to a gcc built shared library. It's not clear how right this is,
if the targets were, for example, both gcc but one was 32 bit and
the other 64 bit.


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




------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to