On 18/01/2013, at 9:16 AM, Michael Maul wrote:

[And Dobes also]

>   Course I expect it is not quite as simple as just capturing the gen'd C 
> code...

The task then  is to make it that simple. 

There are two distinct issues here. 

The easy one is the impact on the repository.
The build can be changed so the standard build uses
the C++ code, and I add a make target 

        make bootstrap

which translates flx, flx_pkgconfig, etc to C++.
I am still concerned that the repository now contains
an "unstructured mix" of generated and original sources.
[Felix code is original, C++ is generated]

The second issue is harder I think: platform configuration.
This is an issue of cross-cross compilation.
Let me remind of the model:

        build platform  : machine Felix is built on
        host platform : machine you edit Felix code on
        target platform : machine you run C++ compiler on
        run platform : machine you run executables on

In a "personal" model, all these machines are your PC.
Most build systems can only cope with this model.

When you are a packager, build != host. The binaries
are built on the packaging platform but run on the
client platform. That means the configuration cannot
be determined correctly. For example, if the install
target is set to some directory X, but installed in
/usr/lib or /usr/local/lib, Felix gets the wrong hard coded
install location compiled in.

Normally Felix generates portable ISO C++ code.
Any special dependencies come from

        config/target/*.hpp

however any code doing, say, file handling where the platform
dependencies are in the Felix code instead of C++ support
libraries, will lead to platform dependent C++.

So this means we may need a bootstrap version of a tool
for every OS variant ;( 

Actually, most file handling is platform independent except
for the opening filename (ISO C FILE* stuff works on Windows too).

Now it gets tricker, since the developer (me) has to be able to generate
code for a set of targets. Which means

        flx --target=WIN32 ..

has to be implemented. (The default is --target=host which uses
the default configuration etc).

Note that everyone should get Windows config data. Just because
you're running Linux doesn't mean you don't want to cross compile.

So to make all this work

(a) we have to get cross-cross compilation working
(b) the install structure has to support multiple configurations
(c) even the repo has to support multiple configs for bootstrapping 


[AAaaaa F*** its hot. 40+C in the shade today. More fires coming
to Australia. Jump over side of boat every hour day. Bring welcome
mat for friendly bull sharks. Turn overclocking off on bio-CPU.
Ice-cubes in fridge, Check! Dont expect much sense out of me today,
hard to type with sweat stinging eyes and dripping on keyboard.
Close eyes. Think about Shayne in New York or Koz in Tokyo
building snowmen.]

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




------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to