1. OUTPUT LOCATION
==================

Although Felix has a cache ($HOME/.felix/cache) which is used for temporary
text (mainly C++ files in text subdir)  and binaries (saved automaton,
parse trees, object files) the main executable or shared lib were put
"next to" the source file.

Next commit, this is changed, the executables go into the cache too.

this means you can now do this safely:

        flx read/only/directory/fred.flx

because fred.so (or .dylib) now goes in the cache. Same for static links.
So if you want to keep the output executables, you have to specify where
to put them:

        flx --static --ox fred read/only/directory/fred.flx

now makes executable fred (or fred.exe on windows) in the
current directory. You can also use --bundle_dir=dir for bundles
and --output_dir=cache or --cache_dir=cache to specify alternate 
cache locations (as well as some environment variables).

the main reason for the change is to make "executing text"
entirely transparent, in particular I got sick of the executables
being put directly into my git repository image.

2. OUTPUT DIR
============

There some more options to come (grrr .. flx is supposed to "just work"
without options LOL):

-od dir

This puts the executable into the directory. This is not the same as changing
the cache dir, its just to complete this set:

        -o dir/file.exe //requires platform specific extension
        -ox dir/file // fills in the extension for you
        -od dir // fills in the extension AND the basename for you

I hate single - options, but -o is conventional.

3. HACKED flx_pkgconfig
====================

Another fix I have to do: at present flx_pkgconfig is HACKED to support
stupid crap on OSX using 

        -framework SDL -framework OTHER

or whatever on link commands. Previously the option list from the data
base was kept unique, but this would lead to

        -framework SDL OTHER

keeping only one "-framework" word. Its not possible to quote it in
the database because stupid bash tries to parse things so flx
throws in quotartion marks to stop it and we'd end up with

        "-framework SDL" "-framework OTHER"

which is wrong too: the linker needs 4 arguments here. I hacked flx_pkgconfig
to just retain everything but now recursion on dependencies produces
a LONG list of libraries to link, duplicated many times. To get back the 
old behaviour I have to make the user do something like:

        --framework=SDL

and then translate that to two words. however that would only work for
-framework command. More general something like:

        -framework@SDL

where the @ is dropped at the last minute. I have to think on the best 
way to do this. Using '\ ' might work but it might confuse the flx_pkgconfig
parser into think we have one argument. however using @ prevents actually
using @ in an option (and flx_pkgconfig itself uses this).

As it is flx uses a HACK to parse

        flx -o fred.exe fred.flx

because its one of those idiot options not using GNU --option=value convention
because that's the convention for specifying compiler output.


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




------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to