diff options
-rw-r--r-- | CC/EXPRESSIONS | 13 | ||||
-rw-r--r-- | CC/foreign/cmake/EXPRESSIONS | 7 | ||||
-rw-r--r-- | CC/foreign/cmake/RULES | 15 |
3 files changed, 31 insertions, 4 deletions
diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index d7289c9..e97ed76 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -1710,7 +1710,7 @@ } } } -, "install-with-deps result": +, "install-with-deps stage": { "vars": ["pc-install-dir", "targets", "prefix", "flat-libs", "hdrs-only"] , "imports": { "compile-deps": "compile-deps" @@ -1932,8 +1932,15 @@ } ] ] - , "body": - {"type": "RESULT", "artifacts": {"type": "var", "name": "install-stage"}} + , "body": {"type": "var", "name": "install-stage"} + } + } +, "install-with-deps result": + { "vars": ["pc-install-dir", "targets", "prefix", "flat-libs", "hdrs-only"] + , "imports": {"install stage": "install-with-deps stage"} + , "expression": + { "type": "RESULT" + , "artifacts": {"type": "CALL_EXPRESSION", "name": "install stage"} } } } diff --git a/CC/foreign/cmake/EXPRESSIONS b/CC/foreign/cmake/EXPRESSIONS index 4c21f4b..88dd8a1 100644 --- a/CC/foreign/cmake/EXPRESSIONS +++ b/CC/foreign/cmake/EXPRESSIONS @@ -2,6 +2,7 @@ { "vars": [ "source_dir" , "cmake_subdir" + , "localbase_dir" , "cmake_options" , "cmake_defines" , "cmake_jobs" @@ -180,7 +181,7 @@ , [ "readonly CMAKE_SUBDIR=\"$1\"" , "readonly CMAKE_AR=$(which $2)" , "shift 2" - , "cmake \"$@\" -S\"source/${CMAKE_SUBDIR}\" -Bbuild -DCMAKE_AR=${CMAKE_AR} -DCMAKE_INSTALL_PREFIX=./install >configure.log 2>&1 || (cat configure.log && exit 1)" + , "cmake \"$@\" -S\"source/${CMAKE_SUBDIR}\" -Bbuild -DCMAKE_AR=${CMAKE_AR} -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_PREFIX_PATH=\"$(pwd)/localbase\" -DPKG_CONFIG_ARGN=--define-prefix --no-warn-unused-cli >configure.log 2>&1 || (cat configure.log && exit 1)" ] , [ { "type": "join" , "separator": " " @@ -225,6 +226,10 @@ , "$1": [ {"type": "var", "name": "TOOLCHAIN"} , {"type": "var", "name": "source_dir"} + , { "type": "var" + , "name": "localbase_dir" + , "default": {"type": "empty_map"} + } , {"type": "var", "name": "script"} ] } diff --git a/CC/foreign/cmake/RULES b/CC/foreign/cmake/RULES index a53b92e..4622357 100644 --- a/CC/foreign/cmake/RULES +++ b/CC/foreign/cmake/RULES @@ -406,6 +406,7 @@ , "cmake-build": "cmake-build" , "strip-prefix": ["./", "..", "strip-prefix"] , "prebuilt result": ["CC/prebuilt", "prebuilt result"] + , "install-deps": ["CC", "install-with-deps stage"] } , "expression": { "type": "let*" @@ -464,6 +465,20 @@ , "body": {"type": "CALL_EXPRESSION", "name": "stage_field"} } ] + , [ "localbase_dir" + , { "type": "to_subdir" + , "subdir": "localbase" + , "msg": "dependency installation files may not overlap" + , "$1": + { "type": "let*" + , "bindings": + [ ["pc-install-dir", "lib/pkgconfig"] + , ["targets", {"type": "FIELD", "name": "deps"}] + ] + , "body": {"type": "CALL_EXPRESSION", "name": "install-deps"} + } + } + ] , [ "installed_dirs" , { "type": "foreach" , "var": "dir_path" |