On 11/12/2013, at 9:44 AM, GitHub wrote:

>  Log Message:
>  -----------
>  Add --toolchain= option to flx.


With this new option, you can use different C++ compilers for the same
target. For example on OSX you can use gcc-4.2 or clang 3.3.
Or you can use the same compiler with different switches.

At present Felix allows command line options to compilers,
such as -Ox optimisation switches, --debug to put debug symbols
in the object files, or others (anything with -f or -W is considered
a compiler switch).

In principle, ISO standards for compilers consider a tool run
with distinct switches distinct language translators.
So for example:

        gcc -O1
        gcc -O2
        gcc -fPIC

are all distinct C compilers. 

Felix toolchain concept is basically intended
to enforce the idea that EVERYTHING must be compiled by a single
compiler. You cannot compile some things with one set of switches
and other things with different switches.

This enforces standards in warnings issued, that is, QOI (quality of
implementation) standards. It also ensures you don't get into a muddle
with incompatible switches or platform dependent stuff determined
by "feature tests" (which is a seriously bad idea).

Instead, Felix provides you with a limited set of parameters, and if you need
options which aren't available you have to make a plugin for it.

Specially, in theory, you should NOT use --toolchain or any other
switches. If you want different compilation options you are supposed
to create a complete new target.***

It's basically a "one parameter compiler choice".

In practice, there are some more choices such as optimisation level,
debug symbols, etc that we need, but we must be very careful that
these options are options of the flx command line so flx commands
"work the same on all platforms". Including Windows.

*** Felix has some tools to help making new targets.
However you still need to manually edit files with a text editor
to gain full control, and you need a fair degree of knowledge to
do this.

In addition, since targets hang off the Felix version, when you
install a new version, you have to do all this work over again.
Indeed, even within the standard "host" target configuration data
in the fpc database used to find libraries can easily be lost
(the make install process completely scrubs the old installation).

There is a weak mechanism to save fpc files in 

        $HOME/.felix/config

which the initial build should copy into the config database so you can find,
for example, libSDL2, libgmp, or other third party libraries. However it isn't
so simple to even maintain your own Felix source code libraries outside
the Felix system installation.

All these things will be addressed eventually, but to do so without sufficient
use cases -- that is, actual users with real problems -- would be premature.

--
john skaller
skal...@users.sourceforge.net
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
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to