summaryrefslogtreecommitdiff
path: root/rules/CC/foreign/make/EXPRESSIONS
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-05-30 15:38:40 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-05-30 15:38:40 +0200
commit14300d3768522b1a201c30c94b6e54e096520b20 (patch)
treeeaa057fd88ddba1a94c48585fcfcbb71628fcbe7 /rules/CC/foreign/make/EXPRESSIONS
parent2d7051782625966857286aace6ff18760114ecc7 (diff)
parent9f535dadf06c6c6554bac632069777cf1b63ebf5 (diff)
downloadrules-cc-14300d3768522b1a201c30c94b6e54e096520b20.tar.gz
Merge commit '9f535dadf06c6c6554bac632069777cf1b63ebf5' into rules/rules-cc
Diffstat (limited to 'rules/CC/foreign/make/EXPRESSIONS')
-rw-r--r--rules/CC/foreign/make/EXPRESSIONS307
1 files changed, 190 insertions, 117 deletions
diff --git a/rules/CC/foreign/make/EXPRESSIONS b/rules/CC/foreign/make/EXPRESSIONS
index e853b29..df2f98f 100644
--- a/rules/CC/foreign/make/EXPRESSIONS
+++ b/rules/CC/foreign/make/EXPRESSIONS
@@ -1,7 +1,10 @@
{ "make-build":
{ "vars":
[ "source_dir"
- , "make_target"
+ , "subdir"
+ , "configure"
+ , "configure_options"
+ , "make_targets"
, "make_prefix"
, "make_options"
, "make_jobs"
@@ -37,11 +40,24 @@
, "default-LDFLAGS": ["CC", "default-LDFLAGS"]
, "default-AR": ["CC", "default-AR"]
, "default-ENV": ["CC", "default-ENV"]
+ , "default-TOOLCHAIN": ["CC", "default-TOOLCHAIN"]
+ , "default-NON_SYSTEM_TOOLS": ["CC", "default-NON_SYSTEM_TOOLS"]
}
, "expression":
{ "type": "let*"
, "bindings":
- [ ["CC", {"type": "CALL_EXPRESSION", "name": "compiler-cc"}]
+ [ ["TOOLCHAIN_DIR", "toolchain"]
+ , ["TOOLCHAIN", {"type": "CALL_EXPRESSION", "name": "default-TOOLCHAIN"}]
+ , [ "TOOLCHAIN"
+ , { "type": "to_subdir"
+ , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"}
+ , "$1": {"type": "var", "name": "TOOLCHAIN"}
+ }
+ ]
+ , [ "NON_SYSTEM_TOOLS"
+ , {"type": "CALL_EXPRESSION", "name": "default-NON_SYSTEM_TOOLS"}
+ ]
+ , ["CC", {"type": "CALL_EXPRESSION", "name": "compiler-cc"}]
, ["CXX", {"type": "CALL_EXPRESSION", "name": "compiler-cxx"}]
, [ "CFLAGS"
, { "type": "join"
@@ -61,7 +77,8 @@
, "$1":
{ "type": "++"
, "$1":
- [ { "type": "var"
+ [ ["-Wl,-rpath,$ORIGIN", "-Wl,-rpath,$ORIGIN/../lib"]
+ , { "type": "var"
, "name": "LDFLAGS"
, "default":
{"type": "CALL_EXPRESSION", "name": "default-LDFLAGS"}
@@ -74,123 +91,152 @@
, [ "AR"
, { "type": "var"
, "name": "AR"
- , "default": {"type": "CALL_EXPRESSION", "name": "default-AR"}
+ , "default":
+ { "type": "join"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "AR"
+ , "map": {"type": "var", "name": "NON_SYSTEM_TOOLS"}
+ }
+ , "then":
+ ["./", {"type": "var", "name": "TOOLCHAIN_DIR"}, "/"]
+ }
+ , {"type": "CALL_EXPRESSION", "name": "default-AR"}
+ ]
+ }
+ }
+ }
+ ]
+ , [ "PREFIX"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "make_prefix"}
+ , "then":
+ { "type": "join"
+ , "separator": "/"
+ , "$1":
+ { "type": "++"
+ , "$1": [[""], {"type": "var", "name": "make_prefix"}]
+ }
+ }
+ , "else": {"type": "var", "name": "PREFIX", "default": "/"}
}
]
, [ "ENV"
, { "type": "map_union"
, "$1":
- { "type": "++"
- , "$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": "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"}
}
- ]
- , [ { "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"}
+ , "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"}
}
- ]
- , [ { "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"}
+ , "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"}
}
- ]
- , [ { "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": "if"
- , "cond": {"type": "var", "name": "make_prefix"}
- , "then":
- { "type": "join"
- , "separator": "/"
- , "$1":
- { "type": "++"
- , "$1": [[""], {"type": "var", "name": "make_prefix"}]
- }
- }
- , "else": {"type": "var", "name": "PREFIX", "default": "/"}
- }
+ , "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"}
+ }
+ ]
+ }
+ ]
+ , [ "SUBDIR"
+ , { "type": "join"
+ , "separator": "/"
+ , "$1": {"type": "var", "name": "subdir", "default": []}
+ }
+ ]
+ , [ "configure_args"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "configure"}
+ , "then":
+ { "type": "++"
+ , "$1":
+ [ {"type": "var", "name": "configure_options", "default": []}
+ , [ { "type": "join"
+ , "$1": ["--prefix=", {"type": "var", "name": "PREFIX"}]
}
]
]
}
}
]
+ , [ "make_targets"
+ , { "type": "if"
+ , "cond": {"type": "var", "name": "make_targets"}
+ , "then": {"type": "var", "name": "make_targets"}
+ , "else": ["install"]
+ }
+ ]
, [ "script"
, { "type": "singleton_map"
, "key": "run_make.sh"
@@ -217,12 +263,43 @@
]
}
}
- , [ "readonly VAR_DESTDIR=$1"
- , "shift"
- , "make \"$@\" -C source ${VAR_DESTDIR}=$(pwd)/install >build.log || (cat build.log && exit 1)"
- , "find ./install -type l -delete"
+ , [ "readonly SUBDIR=\"$1\""
+ , "readonly VAR_DESTDIR=$2"
+ , "shift 2"
]
, { "type": "if"
+ , "cond": {"type": "var", "name": "configure_args"}
+ , "then":
+ [ "( readonly ROOT=\"$(pwd)\""
+ , " cd \"source/${SUBDIR}\""
+ , { "type": "join"
+ , "$1":
+ [ "./configure "
+ , { "type": "join_cmd"
+ , "$1": {"type": "var", "name": "configure_args"}
+ }
+ , " >\"${ROOT}/configure.log\" 2>&1 || (cat \"${ROOT}/configure.log\" && exit 1)"
+ ]
+ }
+ , ")"
+ ]
+ }
+ , { "type": "foreach"
+ , "range": {"type": "var", "name": "make_targets"}
+ , "var": "target"
+ , "body":
+ { "type": "join"
+ , "$1":
+ [ "make \"$@\" -C \"source/${SUBDIR}\" ${VAR_DESTDIR}=$(pwd)/install "
+ , { "type": "join_cmd"
+ , "$1": [{"type": "var", "name": "target"}]
+ }
+ , " >>build.log 2>&1 || (cat build.log && exit 1)"
+ ]
+ }
+ }
+ , ["find ./install -type l -delete"]
+ , { "type": "if"
, "cond": {"type": "var", "name": "post_cmds"}
, "then":
{ "type": "++"
@@ -245,7 +322,8 @@
, "inputs":
{ "type": "map_union"
, "$1":
- [ {"type": "var", "name": "source_dir"}
+ [ {"type": "var", "name": "TOOLCHAIN"}
+ , {"type": "var", "name": "source_dir"}
, {"type": "var", "name": "script"}
]
}
@@ -253,6 +331,7 @@
{ "type": "++"
, "$1":
[ ["/bin/sh", "run_make.sh"]
+ , [{"type": "var", "name": "SUBDIR"}]
, { "type": "if"
, "cond": {"type": "var", "name": "var_destdir"}
, "then":
@@ -260,12 +339,6 @@
, "else": ["DESTDIR"]
}
, {"type": "var", "name": "make_options"}
- , { "type": "if"
- , "cond": {"type": "var", "name": "make_target"}
- , "then":
- [{"type": "join", "$1": {"type": "var", "name": "make_target"}}]
- , "else": ["install"]
- }
, [ { "type": "join"
, "$1":
{ "type": "++"