diff options
-rw-r--r-- | CC/EXPRESSIONS | 31 | ||||
-rw-r--r-- | CC/foreign/EXPRESSIONS | 31 | ||||
-rw-r--r-- | CC/foreign/cmake/EXPRESSIONS | 29 | ||||
-rw-r--r-- | CC/foreign/make/EXPRESSIONS | 29 | ||||
-rw-r--r-- | CC/prebuilt/EXPRESSIONS | 31 |
5 files changed, 145 insertions, 6 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index 2a5011d..b718f76 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -1223,6 +1223,7 @@ , "flags": "flags" , "objects": "objects" , "default-ENV": "default-ENV" + , "default-PATH": "default-PATH" , "default-LDFLAGS": "default-LDFLAGS" , "default-TOOLCHAIN": "default-TOOLCHAIN" , "default-NON_SYSTEM_TOOLS": "default-NON_SYSTEM_TOOLS" @@ -1271,6 +1272,36 @@ ] } ] + , [ "ENV_PATH" + , { "type": "lookup" + , "map": {"type": "var", "name": "ENV"} + , "key": "PATH" + } + ] + , [ "ENV" + , { "type": "map_union" + , "$1": + [ {"type": "var", "name": "ENV"} + , { "type": "singleton_map" + , "key": "PATH" + , "value": + { "type": "join" + , "separator": ":" + , "$1": + { "type": "++" + , "$1": + [ {"type": "CALL_EXPRESSION", "name": "default-PATH"} + , { "type": "if" + , "cond": {"type": "var", "name": "ENV_PATH"} + , "then": [{"type": "var", "name": "ENV_PATH"}] + } + ] + } + } + } + ] + } + ] , ["objects", {"type": "CALL_EXPRESSION", "name": "objects"}] , [ "base name" , { "type": "if" diff --git a/CC/foreign/EXPRESSIONS b/CC/foreign/EXPRESSIONS index 64e0e27..1692f83 100644 --- a/CC/foreign/EXPRESSIONS +++ b/CC/foreign/EXPRESSIONS @@ -43,6 +43,7 @@ , "imports": { "compiler-cc": ["CC", "compiler-cc"] , "default-ENV": ["CC", "default-ENV"] + , "default-PATH": ["CC", "default-PATH"] , "default-TOOLCHAIN": ["CC", "default-TOOLCHAIN"] , "default-NON_SYSTEM_TOOLS": ["CC", "default-NON_SYSTEM_TOOLS"] } @@ -69,6 +70,36 @@ ] } ] + , [ "ENV_PATH" + , { "type": "lookup" + , "map": {"type": "var", "name": "ENV"} + , "key": "PATH" + } + ] + , [ "ENV" + , { "type": "map_union" + , "$1": + [ {"type": "var", "name": "ENV"} + , { "type": "singleton_map" + , "key": "PATH" + , "value": + { "type": "join" + , "separator": ":" + , "$1": + { "type": "++" + , "$1": + [ {"type": "CALL_EXPRESSION", "name": "default-PATH"} + , { "type": "if" + , "cond": {"type": "var", "name": "ENV_PATH"} + , "then": [{"type": "var", "name": "ENV_PATH"}] + } + ] + } + } + } + ] + } + ] , [ "expand_exec.c" , { "type": "singleton_map" , "key": "expand_exec.c" diff --git a/CC/foreign/cmake/EXPRESSIONS b/CC/foreign/cmake/EXPRESSIONS index 2266f61..ac7039c 100644 --- a/CC/foreign/cmake/EXPRESSIONS +++ b/CC/foreign/cmake/EXPRESSIONS @@ -27,6 +27,7 @@ ] , "imports": { "artifacts": ["", "field_artifacts"] + , "nub_left": ["", "nub_left"] , "flags-cc": ["CC", "flags-cc"] , "flags-cxx": ["CC", "flags-cxx"] , "compiler-cc": ["CC", "compiler-cc"] @@ -34,6 +35,7 @@ , "default-LDFLAGS": ["CC", "default-LDFLAGS"] , "default-AR": ["CC", "default-AR"] , "default-ENV": ["CC", "default-ENV"] + , "default-PATH": ["CC", "default-PATH"] , "default-TOOLCHAIN": ["CC", "default-TOOLCHAIN"] , "default-NON_SYSTEM_TOOLS": ["CC", "default-NON_SYSTEM_TOOLS"] , "expand_exec_tool": ["./", "..", "expand_exec_tool"] @@ -136,14 +138,25 @@ } } ] + , [ "PATH" + , { "type": "join" + , "separator": ":" + , "$1": + { "type": "let*" + , "bindings": + [["list", {"type": "CALL_EXPRESSION", "name": "default-PATH"}]] + , "body": {"type": "CALL_EXPRESSION", "name": "nub_left"} + } + } + ] , [ "ENV" , { "type": "map_union" , "$1": - [ {"type": "CALL_EXPRESSION", "name": "default-ENV"} - , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} - , { "type": "env" + [ { "type": "env" , "vars": ["CC", "CXX", "CXXFLAGS", "CFLAGS", "LDFLAGS", "AR"] } + , {"type": "CALL_EXPRESSION", "name": "default-ENV"} + , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} ] } ] @@ -190,7 +203,17 @@ , "mkdir scratch" , "readonly ROOT=\"$(pwd)\"" , "export TMPDIR=\"$(pwd)/scratch\"" + , "export TOOLCHAIN=\"$(pwd)/toolchain\"" , "export LOCALBASE=\"$(pwd)/localbase\"" + , { "type": "join" + , "$1": + [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " + , { "type": "join_cmd" + , "$1": [{"type": "var", "name": "PATH"}] + } + , ")\":$PATH" + ] + } ] , { "type": "if" , "cond": {"type": "var", "name": "pre_cmds"} diff --git a/CC/foreign/make/EXPRESSIONS b/CC/foreign/make/EXPRESSIONS index ba98154..133b775 100644 --- a/CC/foreign/make/EXPRESSIONS +++ b/CC/foreign/make/EXPRESSIONS @@ -29,6 +29,7 @@ ] , "imports": { "artifacts": ["", "field_artifacts"] + , "nub_left": ["", "nub_left"] , "flags-cc": ["CC", "flags-cc"] , "flags-cxx": ["CC", "flags-cxx"] , "compiler-cc": ["CC", "compiler-cc"] @@ -36,6 +37,7 @@ , "default-LDFLAGS": ["CC", "default-LDFLAGS"] , "default-AR": ["CC", "default-AR"] , "default-ENV": ["CC", "default-ENV"] + , "default-PATH": ["CC", "default-PATH"] , "default-TOOLCHAIN": ["CC", "default-TOOLCHAIN"] , "default-NON_SYSTEM_TOOLS": ["CC", "default-NON_SYSTEM_TOOLS"] , "expand_exec_tool": ["./", "..", "expand_exec_tool"] @@ -132,15 +134,26 @@ , "else": {"type": "var", "name": "PREFIX", "default": "/"} } ] + , [ "PATH" + , { "type": "join" + , "separator": ":" + , "$1": + { "type": "let*" + , "bindings": + [["list", {"type": "CALL_EXPRESSION", "name": "default-PATH"}]] + , "body": {"type": "CALL_EXPRESSION", "name": "nub_left"} + } + } + ] , [ "ENV" , { "type": "map_union" , "$1": - [ {"type": "CALL_EXPRESSION", "name": "default-ENV"} - , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} - , { "type": "env" + [ { "type": "env" , "vars": ["CC", "CXX", "CFLAGS", "CXXFLAGS", "LDFLAGS", "AR", "PREFIX"] } + , {"type": "CALL_EXPRESSION", "name": "default-ENV"} + , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} ] } ] @@ -188,7 +201,17 @@ , "readonly ROOT=\"$(pwd)\"" , "export TMPDIR=\"$(pwd)/scratch\"" , "export DESTDIR=\"$(pwd)/install\"" + , "export TOOLCHAIN=\"$(pwd)/toolchain\"" , "export LOCALBASE=\"$(pwd)/localbase\"" + , { "type": "join" + , "$1": + [ "export PATH=\"$(./expand_exec TOOLCHAIN -- echo " + , { "type": "join_cmd" + , "$1": [{"type": "var", "name": "PATH"}] + } + , ")\":$PATH" + ] + } ] , { "type": "if" , "cond": {"type": "var", "name": "pre_cmds"} diff --git a/CC/prebuilt/EXPRESSIONS b/CC/prebuilt/EXPRESSIONS index c404bec..7b35c21 100644 --- a/CC/prebuilt/EXPRESSIONS +++ b/CC/prebuilt/EXPRESSIONS @@ -111,6 +111,7 @@ , "cflags-files-deps": ["./", "..", "cflags-files-deps"] , "ldflags-files-deps": ["./", "..", "ldflags-files-deps"] , "default-ENV": ["./", "..", "default-ENV"] + , "default-PATH": ["./", "..", "default-PATH"] } , "expression": { "type": "let*" @@ -239,6 +240,36 @@ ] } ] + , [ "ENV_PATH" + , { "type": "lookup" + , "map": {"type": "var", "name": "ENV"} + , "key": "PATH" + } + ] + , [ "ENV" + , { "type": "map_union" + , "$1": + [ {"type": "var", "name": "ENV"} + , { "type": "singleton_map" + , "key": "PATH" + , "value": + { "type": "join" + , "separator": ":" + , "$1": + { "type": "++" + , "$1": + [ {"type": "CALL_EXPRESSION", "name": "default-PATH"} + , { "type": "if" + , "cond": {"type": "var", "name": "ENV_PATH"} + , "then": [{"type": "var", "name": "ENV_PATH"}] + } + ] + } + } + } + ] + } + ] , [ "main-pkg-config" , { "type": "foldl" , "range": |