The branch, master has been updated
via 5df44547ddbc8c4b95aba27f5a65d0c0a56f6394 (commit)
from 8401a8bfb16e5172701b26d3a0093c9815420511 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 5df44547ddbc8c4b95aba27f5a65d0c0a56f6394
Author: John Skaller <ska...@users.sourceforge.net>
Date: Tue Oct 5 21:37:59 2010 +1100
Get start of flx.flx working.
Add statement:
cond ?? statement;
which is shorter than the equivalent
if cond do statement; done
and allows
dbug ?? println "Debug";
diff --git a/lpsrc/flx_maker.pak b/lpsrc/flx_maker.pak
index 549cf1b..0d98729 100644
--- a/lpsrc/flx_maker.pak
+++ b/lpsrc/flx_maker.pak
@@ -688,6 +688,7 @@ import sys
import stat
import string
+
@tangle("INSTALL_ROOT=os.path.join(%r, '/lib/felix/felix-%s')" % (config.PREFIX, config.flx_version))
FLX_INSTALL_DIR = os.getenv("FLX_INSTALL_DIR", INSTALL_ROOT)
@tangle("CYGWIN="+str(config.CYGWIN))
@@ -1707,70 +1708,80 @@ else
fi
@select(tangler('tools/flx.flx','data'))
-#!/usr/bin/env flx
-
-include "std/env.flx";
-include "std/system.flx";
-
-@tangle("; var INSTALL_ROOT=os.path.join(%r, '/lib/felix/felix-%s')" % (config.PREFIX, config.flx_version))
-; FLX_INSTALL_DIR = Env::getenv("FLX_INSTALL_DIR", INSTALL_ROOT)
-@tangle("; var CYGWIN="+str(config.CYGWIN))
-@tangle("; var WIN32="+str(config.WIN32))
-@tangle("; var MACOSX="+str(config.MACOSX))
-@tangle("; var HAVE_GNU="+str(config.HAVE_GNU))
-@tangle("; var HAVE_MSVC="+str(config.HAVE_MSVC))
-@if config.TARGET_CXX.options.HAVE_PIC:
- tangle('; var CCOBJ_DLLIB="'+config.TARGET_CXX.options.CCOBJ_DYNAMIC_FLX+' '+config.TARGET_CXX.options.PIC+'"')
- else:
- tangle('; var CCOBJ_DLLIB="'+config.TARGET_CXX.options.CCOBJ_DYNAMIC_FLX+'"')
-@tangle('; var CCLINK_DLLIB="'+config.TARGET_CXX.options.CCLINK_DYNAMIC_FLX+'"')
-@tangle('; var CCOBJ_STATIC_LIB="'+config.TARGET_CXX.options.CCOBJ_STATIC_FLX+'"')
-@tangle('; var CCLINK_STATIC="'+config.TARGET_CXX.options.CCLINK_STATIC+'"')
-@tangle('; var VERSION="'+config.flx_version+'"')
-@tangle('; var EXT_LIB="'+config.TARGET_CXX.options.EXT_LIB+'"')
-@tangle('; var EXT_STATIC_OBJ="'+config.TARGET_CXX.options.EXT_STATIC_OBJ+'"')
-@tangle('; var EXT_SHARED_OBJ="'+config.TARGET_CXX.options.EXT_SHARED_OBJ+'"')
-@tangle('; var EXT_EXE="'+config.TARGET_CXX.options.EXT_EXE+'"')
-@tangle('; var EXT_SHLIB="'+config.TARGET_CXX.options.EXT_SHLIB+'"')
-@tangle('; var SPEC_OBJ_FILENAME="'+config.TARGET_CXX.options.SPEC_OBJ_FILENAME+'"')
-@tangle('; var SPEC_EXE_FILENAME="'+config.TARGET_CXX.options.SPEC_EXE_FILENAME+'"')
-@tangle('; var OPTIMISE="'+config.TARGET_CXX.options.OPTIMISE+' "')
-@tangle('; var DEBUG_FLAGS="'+config.TARGET_CXX.options.DEBUG_FLAGS+' "')
-# check for test mode: this argument must come first
+dbug := true; // switch off for production
-; var TESTMODE=0
-; var RECOMPILE=0
-; var DEBUG=0
-; var DEBUG_COMPILER=0
-; var INLINE=100
-; var ECHO=0
-; var TIME=0
-; var NOOPTIMISE=0
-; var TIMECMD="time -p"
+False := false;
+True := true;
+@def ts(x): tangle(x+";")
-@if config.DEFAULT_LINK_MODEL=="dynamic":
- tangle("; var STATIC=0")
+@def tv(x): ts("var "+x)
+
+@tv("INSTALL_ROOT=Filename::join(%r, '/lib/felix/felix-%s')" % (config.PREFIX, config.flx_version))
+var FLX_INSTALL_DIR = Env::getenv("FLX_INSTALL_DIR", INSTALL_ROOT);
+@tv("CYGWIN="+str(config.CYGWIN))
+@tv("WIN32="+str(config.WIN32))
+@tv("MACOSX="+str(config.MACOSX))
+@tv("HAVE_GNU="+str(config.HAVE_GNU))
+@tv("HAVE_MSVC="+str(config.HAVE_MSVC))
+@if config.TARGET_CXX.options.HAVE_PIC:
+ tv('CCOBJ_DLLIB="'+config.TARGET_CXX.options.CCOBJ_DYNAMIC_FLX+' '+config.TARGET_CXX.options.PIC+'"')
else:
- tangle("; var STATIC=1")
-
-; var RUNIT=1
-; var CCFLAGS=""
-; var FELIX=1
-; var LINKER_SWITCHES=""
-; var MACROS=""
-; var grab=1
-; var cpps=""
-; var cppos=""
-; var INCLUDE_DIRS=""
-; var INCLUDE_FILES=""
-; var NOSTDLIB=0
-; var STDOUT=""
-; var STDIMPORT="--import=nugram.flxh --import=flx.flxh"
-; var IMPORTS=""
-; var OUTPUT_DIR=""
-;
+ tv('CCOBJ_DLLIB="'+config.TARGET_CXX.options.CCOBJ_DYNAMIC_FLX+'"')
+@tv('CCLINK_DLLIB="'+config.TARGET_CXX.options.CCLINK_DYNAMIC_FLX+'"')
+@tv('CCOBJ_STATIC_LIB="'+config.TARGET_CXX.options.CCOBJ_STATIC_FLX+'"')
+@tv('CCLINK_STATIC="'+config.TARGET_CXX.options.CCLINK_STATIC+'"')
+@tv('VERSION="'+config.flx_version+'"')
+@tv('EXT_LIB="'+config.TARGET_CXX.options.EXT_LIB+'"')
+@tv('EXT_STATIC_OBJ="'+config.TARGET_CXX.options.EXT_STATIC_OBJ+'"')
+@tv('EXT_SHARED_OBJ="'+config.TARGET_CXX.options.EXT_SHARED_OBJ+'"')
+@tv('EXT_EXE="'+config.TARGET_CXX.options.EXT_EXE+'"')
+@tv('EXT_SHLIB="'+config.TARGET_CXX.options.EXT_SHLIB+'"')
+@tv('SPEC_OBJ_FILENAME="'+config.TARGET_CXX.options.SPEC_OBJ_FILENAME+'"')
+@tv('SPEC_EXE_FILENAME="'+config.TARGET_CXX.options.SPEC_EXE_FILENAME+'"')
+@tv('OPTIMISE="'+config.TARGET_CXX.options.OPTIMISE+' "')
+@tv('DEBUG_FLAGS="'+config.TARGET_CXX.options.DEBUG_FLAGS+' "')
+
+// check for test mode: this argument must come first
+
+var TESTMODE=0;
+var RECOMPILE=0;
+var DEBUG=0;
+var DEBUG_COMPILER=0;
+var INLINE=100;
+var ECHO=0;
+var TIME=0;
+var NOOPTIMISE=0;
+var TIMECMD="time -p";
+@if config.DEFAULT_LINK_MODEL=="dynamic":
+ tv("STATIC=0;")
+ else:
+ tv("STATIC=1;")
+
+var RUNIT=1;
+var CCFLAGS="";
+var FELIX=1;
+var LINKER_SWITCHES="";
+var MACROS="";
+var grab=1;
+var cpps="";
+var cppos="";
+var INCLUDE_DIRS="";
+var INCLUDE_FILES="";
+var NOSTDLIB=0;
+var STDOUT="";
+var STDIMPORT="--import=nugram.flxh --import=flx.flxh";
+var IMPORTS="";
+var OUTPUT_DIR="";
+
+var DRIVER_PKG = "";
+var DRIVER = "";
+var LINK_STRING = "";
+
+var pkgs="";
+
+var CONFIG_DIR = "";
fun splitext(p:string)=>
if p.[-5 to -1] == ".flx" then p.[to -5],".flx"
@@ -1780,9 +1791,9 @@ fun splitext(p:string)=>
;
gen system(cmd:string):int= {
- if ECHO==1 do print(cmd); done
+ if ECHO==1 do println(cmd); done
var result = System::system(cmd);
- if ECHO==1 do print("Result code " + str(result)); done
+ if ECHO==1 do println("Result code " + str(result)); done
return result;
}
@@ -1791,22 +1802,23 @@ fun prefix(arg:string,key:string)=>
arg.[to len key]==key
;
-var compile_exts = list ('cpp','cxx');
-var linkexts = list ('o','obj','lib','dll','a','so');
-
-whilst grab == 1 and argno<len System::argv do
- arg = System::argv.[argno];
- //println$ "ARGNO="+str(argno)+", arg='"+arg+"'";
- path,ext = splitext(arg);
- dir,base = os.path.split(path);
- //println$ "path="+path+", ext="+ext+",dir="+dir+",base="+base;
- //println$ "cpps="+cpps;
- //println$ "cppos="+cppos;
- //println$ "arg='"+arg+"'";
+var compile_exts = List::list ('cpp','cxx');
+var linkexts = List::list ('o','obj','lib','dll','a','so');
+var arg = "";
+
+whilst grab == 1 and argno<System::argc do
+ arg = System::argv argno;
+ dbug?? println$ "ARGNO="+str(argno)+", arg='"+arg+"'";
+ var path,ext = splitext(arg);
+ var dir,base = Filename::split1(path);
+ dbug?? println$ "path="+path+", ext="+ext+",dir="+dir+",base="+base;
+ dbug?? println$ "cpps="+cpps;
+ dbug?? println$ "cppos="+cppos;
+ dbug?? println$ "arg='"+arg+"'";
if ext != "flx" and ext != "" do
- if ext in compile_exts do
- cpps = cpps + " " + arg
- cppos = cppos + " " + path + "." + EXT_OBJ
+ if List::mem eq of (string * string) compile_exts ext do
+ cpps = cpps + " " + arg;
+ cppos = cppos + " " + path + "." + EXT_OBJ;
else
cppos = cppos + " " + arg;
done
@@ -1818,7 +1830,7 @@ whilst grab == 1 and argno<len System::argv do
IMPORTS=IMPORTS + " " + arg.[9 to];
elif prefix(arg,"--test=") do
- TESTMODE=1
+ TESTMODE=1;
FLX_INSTALL_DIR=arg.[7 to];
elif arg=="--test" do
@@ -1826,7 +1838,7 @@ whilst grab == 1 and argno<len System::argv do
FLX_INSTALL_DIR=".";
elif prefix(arg,"--stdout=") do
- STDOUT=arg[9 to];
+ STDOUT=arg.[9 to];
elif arg=="--force" do
RECOMPILE=1;
@@ -1859,7 +1871,7 @@ whilst grab == 1 and argno<len System::argv do
INLINE=0;
elif arg == "--version" do
- print("version ..")
+ print("version ..");
println(VERSION);
System::exit(0);
@@ -1874,7 +1886,7 @@ whilst grab == 1 and argno<len System::argv do
OUTPUT_DIR=arg;
elif arg == "--help" do
- System::system("man -M "+FLX_INSTALL_DIR+Filename::sep+"man"+" flx");
+ unused := system("man -M "+FLX_INSTALL_DIR+Filename::sep+"man"+" flx");
System::exit(0);
elif arg == "-c" do
@@ -1899,97 +1911,98 @@ whilst grab == 1 and argno<len System::argv do
print("Unknown option '"+ arg+"'");
System::exit(1);
-# the main filename -- subsequent args are args to flx_run
+// the main filename -- subsequent args are args to flx_run
else
grab=0;
done
argno = argno + 1;
done
-#print grab,argno,len(sys.argv)
-if grab == 1 and argno == len(sys.argv) do
+dbug?? println$ grab,argno,System::argc;
+if grab == 1 and argno == System::argc do
println("usage: flx [options] filename");
- Syste::exit(1);
+ System::exit(1);
done
-//println "#--------"
-//println "DONE, option index = "+str(argno);
-//println "path="+path+", ext="+ext+",dir="+dir+",base="+base;
-//println "cpps="+cpps;
-//println "cppos="+cppos;
+dbug?? println "#--------";
+dbug?? println$ "DONE, option index = "+str(argno);
+dbug?? println$ "path="+path+", ext="+ext+",dir="+dir+",base="+base;
+dbug?? println$ "cpps="+cpps;
+dbug?? println$ "cppos="+cppos;
if NOOPTIMISE == 0 do
CCFLAGS=CCFLAGS+" " + OPTIMISE;
done
@if config.HAVE_MSVC:
- tangle('DLINK_STRING="/link /DLL /LIBPATH:"+FLX_INSTALL_DIR+"\\\\lib\\\\rtl ";')
- tangle('SLINK_STRING="/link /DLL /LIBPATH:"+FLX_INSTALL_DIR+"\\\\lib\\\\rtl ";')
+ tv('DLINK_STRING="/link /DLL /LIBPATH:"+FLX_INSTALL_DIR+"\\\\lib\\\\rtl "')
+ tangle('SLINK_STRING="/link /DLL /LIBPATH:"+FLX_INSTALL_DIR+"\\\\lib\\\\rtl "')
elif config.CYGWIN or config.WIN32:
- tangle('DLINK_STRING="-L"+{FLX_INSTALL_DIR+"/bin ";')
- tangle('SLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl ";')
+ tv('DLINK_STRING="-L"+{FLX_INSTALL_DIR+"/bin "')
+ tv('SLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl "')
else:
- tangle('DLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl ";')
- tangle('SLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl ";')
+ tv('DLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl "')
+ tv('SLINK_STRING="-L"+FLX_INSTALL_DIR+"/lib/rtl "')
-PKGCONFIG=Filename::join$ list(FLX_INSTALL_DIR,"bin","flx_pkgconfig");
+var PKGCONFIG=Filename::join$ List::list(FLX_INSTALL_DIR,"bin","flx_pkgconfig");
if ECHO == 1 do
println("#FLX_INSTALL_DIR="+FLX_INSTALL_DIR);
println("#PKGCONFIG="+PKGCONFIG);
+done
-CONFIG_DIR = Filename::join1(FLX_INSTALL_DIR,'config');
+CONFIG_DIR = Filename::join(FLX_INSTALL_DIR,'config');
// find external header files
-PKGCONFIG_CFLAGS=PKGCONFIG+ " --path+="+os.path.join(FLX_INSTALL_DIR,"config") + " --field=cflags ";
+var PKGCONFIG_CFLAGS=PKGCONFIG+ " --path+="+Filename::join(FLX_INSTALL_DIR,"config") + " --field=cflags ";
// external header files
-PKGCONFIG_INCLUDES=PKGCONFIG+ " --path+="+os.path.join(FLX_INSTALL_DIR,"config") + " --field=includes ";
+var PKGCONFIG_INCLUDES=PKGCONFIG+ " --path+="+Filename::join(FLX_INSTALL_DIR,"config") + " --field=includes ";
// find external dynload libraries
-PKGCONFIG_DLIBS=PKGCONFIG+" -r --path+="+os.path.join(FLX_INSTALL_DIR,"config") + " --field=provides_dlib --field=requires_dlibs ";
+var PKGCONFIG_DLIBS=PKGCONFIG+" -r --path+="+Filename::join(FLX_INSTALL_DIR,"config") + " --field=provides_dlib --field=requires_dlibs ";
// find external static libraries
-PKGCONFIG_SLIBS=PKGCONFIG+" -r --keeprightmost --path+="+os.path.join(FLX_INSTALL_DIR,"config") + " --field=provides_slib --field=requires_slibs "
+var PKGCONFIG_SLIBS=PKGCONFIG+" -r --keeprightmost --path+="+Filename::join(FLX_INSTALL_DIR,"config") + " --field=provides_slib --field=requires_slibs ";
//find driver package required
-PKGCONFIG_DRIVER=PKGCONFIG+" --path+="+os.path.join(FLX_INSTALL_DIR,"config") + " --field=flx_requires_driver "
+var PKGCONFIG_DRIVER=PKGCONFIG+" --path+="+Filename::join(FLX_INSTALL_DIR,"config") + " --field=flx_requires_driver ";
// make a list of any *.cpp files (or other g++ options ..)
-if STATIC == 0:
- EXT_OBJ=EXT_SHARED_OBJ
-else:
- EXT_OBJ=EXT_STATIC_OBJ
+var EXT_OBJ =
+ if STATIC == 0 then EXT_SHARED_OBJ
+ else EXT_STATIC_OBJ
+ endif
+;
// Strip trailing .flx or .so
// users should type 'flx file' without extension,
// but #! interpreter always passes extension ..
-if path.endswith('.flx'):
- base = path[:-4]
-elif path.endswith('.so'):
- base = path[:-3]
-else:
- base = path
+base =
+ if path.[-4 to] == '.flx' then path.[to -4]
+ elif path.[-3 to] == '.so' then path.[to -3]
+ else path
+ endif
+;
// Find absolute pathname
-if path == "":
- sys.stderr.write("No such felix program: "+path+"\n")
- System::exit(1)
+if path == "" do
+ fprint$ cerr, ("No such felix program: "+path+"\n");
+ System::exit(1);
+done
-def get_stdout(x,outit=None):
+gen get_stdout(x:string) = {
// We're screwed if popen doesn't work ..
-
+/*
if os.name == "nt": // popen doesn't work on Windows
- result = os.system(x + " >tmp.out")
- fout = open("tmp.out")
- output = fout.readlines()
- if outit:
- for line in output: outit(line)
- fout.close()
+*/
+ result := system(x + " >tmp.out");
+ output := Text_file::load "tmp.out";
+/*
else:
fout = os.popen(x+" 2>&1 ","r")
output = []
@@ -1999,65 +2012,73 @@ def get_stdout(x,outit=None):
if outit: outit(line)
finally:
result = fout.close()
- return result,output
+*/
+ return result,output;
+}
-def xqt(cmd, default=None):
- if ECHO == 1: print(cmd)
- result,output = get_stdout(cmd)
- if not result:
- output=output[0][:-1] // first line excluding newline
- if ECHO==1:print("output="+output)
- return output
- if default is None:
- sys.stderr.write("Error "+repr(result)+" executing command " + cmd+"\n")
- if not hasattr(os, 'WEXITSTATUS'):
- System::exit(1)
- else:
- System::exit(os.WEXITSTATUS(result))
- else:
- return default
+gen xqt(cmd:string) = {
+ ECHO == 1 ?? print(cmd);
+ var result,output = get_stdout(cmd);
+ if result == 0 do
+ n :=
+ match find_first_of (output, char "\n") with
+ | Some ?n => n
+ | None => len output
+ endmatch
+ ;
+ output = output.[to n]; // first line excluding newline
+ ECHO==1 ?? println("output="+output);
+ else
+ fprint$ cerr, ("Error "+repr(result)+" executing command " + cmd + "/n");
+ System::exit result;
+ done
+ return output;
+}
-def calpackages ():
+proc calpackages () {
// find all include directories
- global INCLUDE_DIRS, INCLUDE_FILES, LINK_STRING, DRIVER
// find all include directories
- x = xqt(PKGCONFIG_CFLAGS+ " @"+base+".resh")
- INCLUDE_DIRS=INCLUDE_DIRS +" " + x
+ var x = xqt(PKGCONFIG_CFLAGS+ " @"+base+".resh");
+ INCLUDE_DIRS=INCLUDE_DIRS +" " + x;
// find all include files
- x = xqt(PKGCONFIG_INCLUDES+ " @"+base+".resh")
- INCLUDE_FILES=INCLUDE_FILES +" " + x
+ x = xqt(PKGCONFIG_INCLUDES+ " @"+base+".resh");
+ INCLUDE_FILES=INCLUDE_FILES +" " + x;
// find the driver package
- DRIVER_PKG=xqt(PKGCONFIG_DRIVER+" @"+base+".resh")
- if DRIVER_PKG == "":
- DRIVER_PKG="flx_run"
+ DRIVER_PKG=xqt(PKGCONFIG_DRIVER+" @"+base+".resh");
+ DRIVER_PKG == "" ?? DRIVER_PKG="flx_run";
// find the driver entity
- if STATIC == 0:
+ if STATIC == 0 do
// dynamic linkage: the driver executable
- DRIVER=os.path.join(FLX_INSTALL_DIR,"bin",DRIVER_PKG+EXT_EXE)
- else:
+ DRIVER=Filename::join$ List::list (FLX_INSTALL_DIR,"bin",DRIVER_PKG+EXT_EXE);
+ else
// static linkage: the driver object file
- DRIVER=os.path.join(FLX_INSTALL_DIR,"lib","rtl",DRIVER_PKG+EXT_STATIC_OBJ)
+ DRIVER=Filename::join$ List::list (FLX_INSTALL_DIR,"lib","rtl",DRIVER_PKG+EXT_STATIC_OBJ);
+ done
- if STATIC == 0:
+ if STATIC == 0 do
// dynamic linkage: all the libraries required by the application
LINK_STRING=DLINK_STRING+LINKER_SWITCHES+xqt(
- PKGCONFIG_DLIBS+" @"+base+".resh")
- else:
+ PKGCONFIG_DLIBS+" @"+base+".resh");
+ else
// static linkage: all the libraries required by the application and driver
LINK_STRING=SLINK_STRING+LINKER_SWITCHES+xqt(
- PKGCONFIG_SLIBS+" "+DRIVER_PKG+" @"+base+".resh")
+ PKGCONFIG_SLIBS+" "+DRIVER_PKG+" @"+base+".resh");
+ done
- if ECHO == 1:
- print("//RESOURCE FILE="+base+".resh")
- print("//INCLUDE_DIRS="+INCLUDE_DIRS)
- print("//INCLUDE_FILES="+INCLUDE_FILES)
- print("//DRIVER="+DRIVER)
- print("//LINK_STRING="+LINK_STRING)
+ if ECHO == 1 do
+ println("//RESOURCE FILE="+base+".resh");
+ println("//INCLUDE_DIRS="+INCLUDE_DIRS);
+ println("//INCLUDE_FILES="+INCLUDE_FILES);
+ println("//DRIVER="+DRIVER);
+ println("//LINK_STRING="+LINK_STRING);
+ done
+}
+/* ------------
def write_include_file(path):
includes = INCLUDE_FILES.strip().split()
f = open(path+".includes","w")
@@ -2067,17 +2088,17 @@ def write_include_file(path):
// grab program arguments
grab=1
-args=' '.join(sys.argv[argno:])
+args=' '.Filename::join(sys.argv[argno:])
-INCLUDE_DIR="-I"+os.path.join(FLX_INSTALL_DIR,"lib","rtl") + " -I"+os.path.join(FLX_INSTALL_DIR,"config","target")
-FLXLIB="-I"+os.path.join(FLX_INSTALL_DIR,"lib")
+INCLUDE_DIR="-I"+Filename::join(FLX_INSTALL_DIR,"lib","rtl") + " -I"+Filename::join(FLX_INSTALL_DIR,"config","target")
+FLXLIB="-I"+Filename::join(FLX_INSTALL_DIR,"lib")
STDLIB="std"
if NOSTDLIB == 1:
FLXLIB=""
STDLIB=""
if WIN32:
- FLXG=os.path.join(FLX_INSTALL_DIR, 'bin', 'flxg')
+ FLXG=Filename::join(FLX_INSTALL_DIR, 'bin', 'flxg')
FLXRUN=''
else:
FLXG="env PATH="+FLX_INSTALL_DIR+"/bin:$PATH "+FLX_INSTALL_DIR+"/bin/flxg"
@@ -2128,21 +2149,21 @@ result = 0
if STATIC == 0:
if FELIX == 1:
- FCMD=' '.join([
+ FCMD=' '.Filename::join([
FLXG,
VERBOSE, FLXFLAGS, FLXLIB,
INCLUDE_DIRS, STDIMPORT, IMPORTS,
STDLIB, base])
result=system(FCMD)
- if result != 0: System::exit(0!=result)
+ if result != 0: exit(0!=result)
calpackages()
write_include_file(base)
- CCMD=' '.join([
+ CCMD=' '.Filename::join([
CCOBJ_DLLIB, CCFLAGS, "-DTARGET_BUILD",
INCLUDE_DIR, INCLUDE_DIRS, MACROS,
cpps, base+".cpp",
SPEC_OBJ_FILENAME+base+EXT_OBJ])
- LCMD=' '.join([
+ LCMD=' '.Filename::join([
CCLINK_DLLIB, CCFLAGS,
cppos, base+EXT_OBJ,
SPEC_EXE_FILENAME+base+EXT_SHLIB,
@@ -2153,19 +2174,19 @@ if STATIC == 0:
if result == 0:
if RUNIT == 1:
if TIME == 1:
- cmd=' '.join([
+ cmd=' '.Filename::join([
TIMECMD,
FLXRUN+DRIVER+DEBUGSWITCH,
base+EXT_SHLIB, args])
else:
- cmd=' '.join([
+ cmd=' '.Filename::join([
FLXRUN+DRIVER+DEBUGSWITCH,
base+EXT_SHLIB, args])
if STDOUT != "": cmd=cmd+" > " +STDOUT
- System::exit(0!=system(cmd))
+ exit(0!=system(cmd))
else:
if FELIX == 1:
- FCMD=' '.join([
+ FCMD=' '.Filename::join([
FLXG, VERBOSE, FLXFLAGS,
FLXLIB, INCLUDE_DIRS, STDIMPORT,
IMPORTS, STDLIB, base])
@@ -2173,13 +2194,13 @@ else:
if result == 0:
calpackages()
write_include_file(base)
- CCMD=' '.join([
+ CCMD=' '.Filename::join([
CCOBJ_STATIC_LIB,
CCFLAGS, "-DTARGET_BUILD",
"-DFLX_STATIC_LINK", INCLUDE_DIR, INCLUDE_DIRS,
MACROS, cpps, base+".cpp",
SPEC_OBJ_FILENAME+base+EXT_OBJ])
- LCMD=' '.join([
+ LCMD=' '.Filename::join([
CCLINK_STATIC, SPEC_EXE_FILENAME+base+EXT_EXE,
base+EXT_OBJ, DRIVER, cppos, LINK_STRING])
result=system(CCMD)
@@ -2189,14 +2210,15 @@ else:
// rm -f "$base.cpp"
if RUNIT == 1:
if TIME == 1:
- cmd=' '.join([
+ cmd=' '.Filename::join([
TIMECMD, STATIC_ENV, base, args])
else:
- cmd=' '.join([
+ cmd=' '.Filename::join([
STATIC_ENV, base,args])
if STDOUT != "": cmd=cmd + " > "+STDOUT
- System::exit(0!=system(cmd))
-System::exit(0!=result)
+ exit(0!=system(cmd))
+exit(0!=result)
+ -------- */
@select(tangler('bin/flx-postinstall-check','data'))
#!/usr/bin/env bash
diff --git a/src/lib/nugram.flxh b/src/lib/nugram.flxh
index bd6cfb2..dc2265b 100644
--- a/src/lib/nugram.flxh
+++ b/src/lib/nugram.flxh
@@ -1160,6 +1160,8 @@ syntax executable {
sassignexpr := sexpr spostincrop =># "`(ast_call ,_sr ,_2 (ast_ref ,_1))";
sassignexpr := spreincrop sexpr =># "`(ast_call ,_sr ,_1 (ast_ref ,_2))";
+ // utstatement is some attempt to get "unterminated statements"
+
utstatement := "yield" sexpr =># "`(ast_yield ,_sr ,_2)";
utstatement := "return" sexpr =># "`(ast_fun_return ,_sr ,_2)";
tstatement := "return" ";" =># "`(ast_proc_return ,_sr)";
@@ -1187,6 +1189,9 @@ syntax executable {
tstatement := "if" sexpr "do" sstatements "done" =>#
"`(ast_ifdo ,_sr ,_2 ,_4 ())";
+ tstatement := sexpr "??" tstatement =>#
+ "`(ast_ifdo ,_sr ,_1 (,_3) ())";
+
selif_clause := "elif" sexpr "do" sstatements =># "`(,_2 ,_4)";
selif_clause := "elif" sexpr "return" ";"? =># "`(,_2 ((ast_proc_return ,_sr)))";
selif_clause := "elif" sexpr "goto" sname ";"? =># "`(,_2 (ast_goto ,_sr ,_4))";
-----------------------------------------------------------------------
Summary of changes:
lpsrc/flx_maker.pak | 382 +++++++++++++++++++++++++++------------------------
src/lib/nugram.flxh | 5 +
2 files changed, 207 insertions(+), 180 deletions(-)
hooks/post-receive
--
An advanced programming language