diff options
Diffstat (limited to 'CC/foreign/make')
-rw-r--r-- | CC/foreign/make/EXPRESSIONS | 126 | ||||
-rw-r--r-- | CC/foreign/make/RULES | 113 |
2 files changed, 66 insertions, 173 deletions
diff --git a/CC/foreign/make/EXPRESSIONS b/CC/foreign/make/EXPRESSIONS index 373520b..ca5aa41 100644 --- a/CC/foreign/make/EXPRESSIONS +++ b/CC/foreign/make/EXPRESSIONS @@ -11,14 +11,6 @@ , "make_jobs" , "pre_cmds" , "post_cmds" - , "var_cc" - , "var_cxx" - , "var_ccflags" - , "var_cxxflags" - , "var_ldflags" - , "var_ar" - , "var_prefix" - , "var_destdir" , "CC" , "CXX" , "CFLAGS" @@ -32,6 +24,8 @@ , "PREFIX" , "BUILD_POSITION_INDEPENDENT" , "TIMEOUT_SCALE" + , "defaults-transition" + , "host-defaults-transition" ] , "imports": { "artifacts": ["", "field_artifacts"] @@ -44,11 +38,22 @@ , "default-ENV": ["CC", "default-ENV"] , "default-TOOLCHAIN": ["CC", "default-TOOLCHAIN"] , "default-NON_SYSTEM_TOOLS": ["CC", "default-NON_SYSTEM_TOOLS"] + , "expand_exec_tool": ["./", "..", "expand_exec_tool"] } , "expression": { "type": "let*" , "bindings": - [ ["TOOLCHAIN_DIR", "toolchain"] + [ [ "expand_exec" + , { "type": "let*" + , "bindings": + [ [ "defaults-transition" + , {"type": "var", "name": "host-defaults-transition"} + ] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "expand_exec_tool"} + } + ] + , ["TOOLCHAIN_DIR", "toolchain"] , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}] , [ "TOOLCHAIN" , { "type": "to_subdir" @@ -132,81 +137,9 @@ , "$1": [ {"type": "CALL_EXPRESSION", "name": "default-ENV"} , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_cc"} - , "then": - {"type": "join", "$1": {"type": "var", "name": "var_cc"}} - , "else": "CC" - } - , "value": {"type": "var", "name": "CC"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_cxx"} - , "then": - {"type": "join", "$1": {"type": "var", "name": "var_cxx"}} - , "else": "CXX" - } - , "value": {"type": "var", "name": "CXX"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_ccflags"} - , "then": - { "type": "join" - , "$1": {"type": "var", "name": "var_ccflags"} - } - , "else": "CFLAGS" - } - , "value": {"type": "var", "name": "CFLAGS"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_cxxflags"} - , "then": - { "type": "join" - , "$1": {"type": "var", "name": "var_cxxflags"} - } - , "else": "CXXFLAGS" - } - , "value": {"type": "var", "name": "CXXFLAGS"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_ldflags"} - , "then": - { "type": "join" - , "$1": {"type": "var", "name": "var_ldflags"} - } - , "else": "LDFLAGS" - } - , "value": {"type": "var", "name": "LDFLAGS"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_ar"} - , "then": - {"type": "join", "$1": {"type": "var", "name": "var_ar"}} - , "else": "AR" - } - , "value": {"type": "var", "name": "AR"} - } - , { "type": "singleton_map" - , "key": - { "type": "if" - , "cond": {"type": "var", "name": "var_prefix"} - , "then": - {"type": "join", "$1": {"type": "var", "name": "var_prefix"}} - , "else": "PREFIX" - } - , "value": {"type": "var", "name": "PREFIX"} + , { "type": "env" + , "vars": + ["CC", "CXX", "CFLAGS", "CXXFLAGS", "LDFLAGS", "AR", "PREFIX"] } ] } @@ -252,8 +185,10 @@ , "$1": [ [ "set -eu" , "mkdir scratch" - , "readonly TMPDIR=\"$(pwd)/scratch\"" - , "readonly LOCALBASE=\"$(pwd)/localbase\"" + , "readonly ROOT=\"$(pwd)\"" + , "export TMPDIR=\"$(pwd)/scratch\"" + , "export DESTDIR=\"$(pwd)/install\"" + , "export LOCALBASE=\"$(pwd)/localbase\"" ] , { "type": "if" , "cond": {"type": "var", "name": "pre_cmds"} @@ -266,18 +201,14 @@ ] } } - , [ "readonly SUBDIR=\"$1\"" - , "readonly VAR_DESTDIR=$2" - , "shift 2" - ] + , ["readonly SUBDIR=\"$1\"", "shift"] , { "type": "if" , "cond": {"type": "var", "name": "configure_args"} , "then": - [ "( readonly ROOT=\"$(pwd)\"" - , " cd \"source/${SUBDIR}\"" + [ "( cd \"source/${SUBDIR}\"" , { "type": "join" , "$1": - [ "./configure " + [ "${ROOT}/expand_exec TMPDIR DESTDIR LOCALBASE CC CXX CFLAGS CXXFLAGS LDFLAGS AR PREFIX -- ./configure " , { "type": "join_cmd" , "$1": {"type": "var", "name": "configure_args"} } @@ -293,7 +224,7 @@ , "body": { "type": "join" , "$1": - [ "make \"$@\" -C \"source/${SUBDIR}\" ${VAR_DESTDIR}=$(pwd)/install " + [ "${ROOT}/expand_exec TMPDIR DESTDIR LOCALBASE CC CXX CFLAGS CXXFLAGS LDFLAGS AR PREFIX -- make DESTDIR=${DESTDIR} \"$@\" -C \"source/${SUBDIR}\"" , { "type": "join_cmd" , "$1": [{"type": "var", "name": "target"}] } @@ -327,6 +258,7 @@ , "$1": [ {"type": "var", "name": "TOOLCHAIN"} , {"type": "var", "name": "source_dir"} + , {"type": "var", "name": "expand_exec"} , { "type": "var" , "name": "localbase_dir" , "default": {"type": "empty_map"} @@ -339,12 +271,6 @@ , "$1": [ ["/bin/sh", "run_make.sh"] , [{"type": "var", "name": "SUBDIR"}] - , { "type": "if" - , "cond": {"type": "var", "name": "var_destdir"} - , "then": - [{"type": "join", "$1": {"type": "var", "name": "var_destdir"}}] - , "else": ["DESTDIR"] - } , {"type": "var", "name": "make_options"} , { "type": "if" , "cond": {"type": "var", "name": "make_jobs"} diff --git a/CC/foreign/make/RULES b/CC/foreign/make/RULES index d04ac9b..79e6b2b 100644 --- a/CC/foreign/make/RULES +++ b/CC/foreign/make/RULES @@ -2,8 +2,10 @@ { "doc": [ "Data produced by Configure and Make build and install." , "" - , "Commands have access to a unique temporary directory via \"$TMPDIR\"" - , "and to the installed \"deps\" via \"$LOCALBASE\"." + , "All variables accessible to commands and options are: \"TMPDIR\"," + , "\"LOCALBASE\", \"CC\", \"CXX\", \"CFLAGS\", \"CXXFLAGS\", \"LDFLAGS\"," + , "\"AR\", and \"PREFIX\". \"LOCALBASE\" contains the path to the" + , "installed artifacts from \"deps\"." ] , "target_fields": ["project"] , "string_fields": @@ -18,17 +20,11 @@ , "post_cmds" , "out_files" , "out_dirs" - , "var_cc" - , "var_cxx" - , "var_ccflags" - , "var_cxxflags" - , "var_ldflags" - , "var_ar" - , "var_prefix" - , "var_destdir" ] , "config_vars": - [ "CC" + [ "ARCH" + , "HOST_ARCH" + , "CC" , "CXX" , "CFLAGS" , "CXXFLAGS" @@ -52,7 +48,10 @@ ] , "configure": ["Run ./configure if non-empty."] , "configure_options": - ["The configure options (the \"--prefix\" option is automatically set."] + [ "The configure options (the \"--prefix\" option is automatically set." + , "Variables can be accessed via \"$(<varname>)\", e.g., \"$(TMPDIR)\"" + , "for variable \"$TMPDIR\"." + ] , "targets": [ "The Make targets to build in the specified order" , "(default: [\"install\"])." @@ -64,8 +63,10 @@ , "taken, with the default value being \"/\"." ] , "options": - [ "Make options for the configuration phase." - , "(e.g., [\"-f\", \"Makefile\", \"ARCH=x86\"])" + [ "Make options for the configuration phase" + , "(e.g., [\"-f\", \"Makefile\", \"ARCH=x86\", \"LD=$(CC)\"]). Variables" + , "can be accessed via \"$(<varname>)\", e.g., \"$(TMPDIR)\" for" + , "variable \"$TMPDIR\"." ] , "jobs": [ "Number of jobs to run simultaneously. If omitted, Make's default" @@ -94,22 +95,6 @@ , "relative to the install directory." , "Note that \"out_files\" and \"out_dirs\" may not overlap." ] - , "var_cc": - ["Variable name used to specify the C compiler (default: \"CC\")."] - , "var_cxx": - ["Variable name used to specify the C++ compiler (default: \"CXX\")."] - , "var_ccflags": - ["Variable name used to specify the C flags (default: \"CFLAGS\")."] - , "var_cxxflags": - ["Variable name used to specify the C++ flags (default: \"CXXFLAGS\")."] - , "var_ldflags": - ["Variable name used to specify the link flags (default: \"LDFLAGS\")."] - , "var_ar": - ["Variable name used to specify the archiver (default: \"AR\")."] - , "var_prefix": - ["Variable name used to specify the prefix (default: \"PREFIX\")."] - , "var_destdir": - ["Variable name used to specify the destdir (default: \"DESTDIR\")."] } , "config_doc": { "CC": @@ -179,6 +164,11 @@ { "stage_field": ["", "stage_singleton_field"] , "make-build": "make-build" , "strip-prefix": ["./", "..", "strip-prefix"] + , "for host": ["transitions", "for host"] + } + , "config_transitions": + { "defaults": + [{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}] } , "expression": { "type": "let*" @@ -227,14 +217,10 @@ , ["make_jobs", {"type": "FIELD", "name": "jobs"}] , ["pre_cmds", {"type": "FIELD", "name": "pre_cmds"}] , ["post_cmds", {"type": "FIELD", "name": "post_cmds"}] - , ["var_cc", {"type": "FIELD", "name": "var_cc"}] - , ["var_cxx", {"type": "FIELD", "name": "var_cxx"}] - , ["var_ccflags", {"type": "FIELD", "name": "var_ccflags"}] - , ["var_cxxflags", {"type": "FIELD", "name": "var_cxxflags"}] - , ["var_ldflags", {"type": "FIELD", "name": "var_ldflags"}] - , ["var_ar", {"type": "FIELD", "name": "var_ar"}] - , ["var_prefix", {"type": "FIELD", "name": "var_prefix"}] - , ["var_destdir", {"type": "FIELD", "name": "var_destdir"}] + , ["defaults-transition", {"type": "empty_map"}] + , [ "host-defaults-transition" + , {"type": "CALL_EXPRESSION", "name": "for host"} + ] , ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}] , [ "install_dir" , { "type": "ACTION" @@ -284,8 +270,10 @@ { "doc": [ "Library produced by Configure and Make build and install." , "" - , "Commands have access to a unique temporary directory via \"$TMPDIR\"" - , "and to the installed \"deps\" via \"$LOCALBASE\"." + , "All variables accessible to commands and options are: \"TMPDIR\"," + , "\"LOCALBASE\", \"CC\", \"CXX\", \"CFLAGS\", \"CXXFLAGS\", \"LDFLAGS\"," + , "\"AR\", and \"PREFIX\". \"LOCALBASE\" contains the path to the" + , "installed artifacts from \"deps\"." ] , "target_fields": ["project", "deps"] , "string_fields": @@ -310,17 +298,11 @@ , "hdr_prefix" , "lib_prefix" , "pc_prefix" - , "var_cc" - , "var_cxx" - , "var_ccflags" - , "var_cxxflags" - , "var_ldflags" - , "var_ar" - , "var_prefix" - , "var_destdir" ] , "config_vars": - [ "CC" + [ "ARCH" + , "HOST_ARCH" + , "CC" , "CXX" , "CFLAGS" , "CXXFLAGS" @@ -434,22 +416,6 @@ , "directory components are joined with \"/\". Defaults to" , "\"lib/pkgconfig\" if not set." ] - , "var_cc": - ["Variable name used to specify the C compiler (default: \"CC\")."] - , "var_cxx": - ["Variable name used to specify the C++ compiler (default: \"CXX\")."] - , "var_ccflags": - ["Variable name used to specify the C flags (default: \"CFLAGS\")."] - , "var_cxxflags": - ["Variable name used to specify the C++ flags (default: \"CXXFLAGS\")."] - , "var_ldflags": - ["Variable name used to specify the link flags (default: \"LDFLAGS\")."] - , "var_ar": - ["Variable name used to specify the archiver (default: \"AR\")."] - , "var_prefix": - ["Variable name used to specify the prefix (default: \"PREFIX\")."] - , "var_destdir": - ["Variable name used to specify the destdir (default: \"DESTDIR\")."] } , "config_doc": { "CC": @@ -517,6 +483,11 @@ , "strip-prefix": ["./", "..", "strip-prefix"] , "prebuilt result": ["CC/prebuilt", "prebuilt result"] , "install-deps": ["CC", "install-with-deps stage"] + , "for host": ["transitions", "for host"] + } + , "config_transitions": + { "defaults": + [{"type": "empty_map"}, {"type": "CALL_EXPRESSION", "name": "for host"}] } , "expression": { "type": "let*" @@ -654,14 +625,10 @@ , ["make_jobs", {"type": "FIELD", "name": "jobs"}] , ["pre_cmds", {"type": "FIELD", "name": "pre_cmds"}] , ["post_cmds", {"type": "FIELD", "name": "post_cmds"}] - , ["var_cc", {"type": "FIELD", "name": "var_cc"}] - , ["var_cxx", {"type": "FIELD", "name": "var_cxx"}] - , ["var_ccflags", {"type": "FIELD", "name": "var_ccflags"}] - , ["var_cxxflags", {"type": "FIELD", "name": "var_cxxflags"}] - , ["var_ldflags", {"type": "FIELD", "name": "var_ldflags"}] - , ["var_ar", {"type": "FIELD", "name": "var_ar"}] - , ["var_prefix", {"type": "FIELD", "name": "var_prefix"}] - , ["var_destdir", {"type": "FIELD", "name": "var_destdir"}] + , ["defaults-transition", {"type": "empty_map"}] + , [ "host-defaults-transition" + , {"type": "CALL_EXPRESSION", "name": "for host"} + ] , ["full_install_dir", {"type": "CALL_EXPRESSION", "name": "make-build"}] , [ "install_dir" , { "type": "ACTION" |