summaryrefslogtreecommitdiff
path: root/CC/foreign/make
diff options
context:
space:
mode:
Diffstat (limited to 'CC/foreign/make')
-rw-r--r--CC/foreign/make/EXPRESSIONS126
-rw-r--r--CC/foreign/make/RULES113
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"