diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-04-12 15:02:08 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-04-18 12:44:10 +0200 |
commit | 823dd14ccbbc65c15b5af5047551210fea5c929b (patch) | |
tree | 423ff9e1dbdfffc1e4fd2b8e021ba7504f9cb77c | |
parent | 471c6c4556f3a69e29b540a63b2d174622185344 (diff) | |
download | justbuild-823dd14ccbbc65c15b5af5047551210fea5c929b.tar.gz |
rules: Support hdrs-only for install-with-deps rule
-rw-r--r-- | rules/CC/EXPRESSIONS | 282 | ||||
-rw-r--r-- | rules/CC/RULES | 4 |
2 files changed, 151 insertions, 135 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS index f8f9d2a0..3433598e 100644 --- a/rules/CC/EXPRESSIONS +++ b/rules/CC/EXPRESSIONS @@ -1125,7 +1125,7 @@ } } , "install-with-deps result": - { "vars": ["pc-install-dir", "targets", "prefix", "flat-libs"] + { "vars": ["pc-install-dir", "targets", "prefix", "flat-libs", "hdrs-only"] , "imports": { "compile-deps": "compile-deps" , "compile-args-deps": "compile-args-deps" @@ -1146,13 +1146,7 @@ , "body": { "type": "let*" , "bindings": - [ [ "artifacts" - , { "type": "DEP_ARTIFACTS" - , "dep": {"type": "var", "name": "target"} - , "default": {"type": "empty_map"} - } - ] - , [ "runfiles" + [ [ "runfiles" , { "type": "DEP_RUNFILES" , "dep": {"type": "var", "name": "target"} , "default": {"type": "empty_map"} @@ -1165,33 +1159,6 @@ , "default": {"type": "empty_map"} } ] - , [ "link-deps" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "link-deps" - , "default": {"type": "empty_map"} - } - ] - , [ "package" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "package" - , "default": {"type": "empty_map"} - } - ] - , [ "to_bin" - , { "type": "lookup" - , "key": "to_bin" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "binaries" - , { "type": "if" - , "cond": {"type": "var", "name": "to_bin"} - , "then": {"type": "var", "name": "artifacts"} - , "else": {"type": "empty_map"} - } - ] , [ "headers" , { "type": "disjoint_map_union" , "msg": "headers may not overlap" @@ -1201,116 +1168,163 @@ ] } ] - , [ "libraries" - , { "type": "disjoint_map_union" - , "msg": "libraries may not overlap" - , "$1": - { "type": "++" - , "$1": - [ { "type": "if" - , "cond": {"type": "var", "name": "to_bin"} - , "then": [] - , "else": [{"type": "var", "name": "artifacts"}] + ] + , "body": + { "type": "if" + , "cond": {"type": "var", "name": "hdrs-only"} + , "then": {"type": "var", "name": "headers"} + , "else": + { "type": "let*" + , "bindings": + [ [ "artifacts" + , { "type": "DEP_ARTIFACTS" + , "dep": {"type": "var", "name": "target"} + , "default": {"type": "empty_map"} + } + ] + , [ "link-deps" + , { "type": "DEP_PROVIDES" + , "dep": {"type": "var", "name": "target"} + , "provider": "link-deps" + , "default": {"type": "empty_map"} + } + ] + , [ "package" + , { "type": "DEP_PROVIDES" + , "dep": {"type": "var", "name": "target"} + , "provider": "package" + , "default": {"type": "empty_map"} + } + ] + , [ "to_bin" + , { "type": "lookup" + , "key": "to_bin" + , "map": {"type": "var", "name": "package"} + } + ] + , [ "binaries" + , { "type": "if" + , "cond": {"type": "var", "name": "to_bin"} + , "then": {"type": "var", "name": "artifacts"} + , "else": {"type": "empty_map"} + } + ] + , [ "libraries" + , { "type": "disjoint_map_union" + , "msg": "libraries may not overlap" + , "$1": + { "type": "++" + , "$1": + [ { "type": "if" + , "cond": {"type": "var", "name": "to_bin"} + , "then": [] + , "else": [{"type": "var", "name": "artifacts"}] + } + , [{"type": "var", "name": "link-deps"}] + ] } - , [{"type": "var", "name": "link-deps"}] - ] - } - } - ] - , [ "pkg-name" - , { "type": "lookup" - , "key": "name" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "pkg-config" - , { "type": "if" - , "cond": {"type": "var", "name": "pkg-name"} - , "then": - { "type": "let*" - , "bindings": - [ [ "pkg-prefix" - , {"type": "var", "name": "prefix", "default": "/"} - ] - , [ "pkg-version" - , { "type": "lookup" - , "key": "version" - , "map": {"type": "var", "name": "package"} - } - ] - , [ "pkg-cflags" - , { "type": "DEP_PROVIDES" - , "dep": {"type": "var", "name": "target"} - , "provider": "compile-args" - , "default": [] - } - ] - , [ "pkg-ldflags" - , { "type": "++" - , "$1": - [ { "type": "DEP_PROVIDES" + } + ] + , [ "pkg-name" + , { "type": "lookup" + , "key": "name" + , "map": {"type": "var", "name": "package"} + } + ] + , [ "pkg-config" + , { "type": "if" + , "cond": {"type": "var", "name": "pkg-name"} + , "then": + { "type": "let*" + , "bindings": + [ ["pkg-prefix", {"type": "var", "name": "prefix"}] + , [ "pkg-version" + , { "type": "lookup" + , "key": "version" + , "map": {"type": "var", "name": "package"} + } + ] + , [ "pkg-cflags" + , { "type": "DEP_PROVIDES" , "dep": {"type": "var", "name": "target"} - , "provider": "link-args" + , "provider": "compile-args" , "default": [] } ] - } - ] - , [ "pkg-flag-files" - , { "type": "map_union" - , "$1": - [ { "type": "lookup" - , "key": "cflags-files" - , "map": {"type": "var", "name": "package"} - , "default": {"type": "empty_map"} + , [ "pkg-ldflags" + , { "type": "++" + , "$1": + [ { "type": "DEP_PROVIDES" + , "dep": {"type": "var", "name": "target"} + , "provider": "link-args" + , "default": [] + } + ] } - , { "type": "lookup" - , "key": "ldflags-files" - , "map": {"type": "var", "name": "package"} - , "default": {"type": "empty_map"} + ] + , [ "pkg-flag-files" + , { "type": "map_union" + , "$1": + [ { "type": "lookup" + , "key": "cflags-files" + , "map": {"type": "var", "name": "package"} + , "default": {"type": "empty_map"} + } + , { "type": "lookup" + , "key": "ldflags-files" + , "map": {"type": "var", "name": "package"} + , "default": {"type": "empty_map"} + } + ] + } + ] + , [ "pkg-libs" + , {"type": "var", "name": "libraries"} + ] + , [ "flat-libs" + , {"type": "var", "name": "flat-libs"} + ] + ] + , "body": + { "type": "map_union" + , "$1": + [ { "type": "CALL_EXPRESSION" + , "name": "pkg-config" } + , {"type": "var", "name": "pkg-flag-files"} ] } - ] - , ["pkg-libs", {"type": "var", "name": "libraries"}] - , ["flat-libs", {"type": "var", "name": "flat-libs"}] - ] - , "body": - { "type": "map_union" - , "$1": - [ {"type": "CALL_EXPRESSION", "name": "pkg-config"} - , {"type": "var", "name": "pkg-flag-files"} - ] + } + , "else": {"type": "empty_map"} } - } - , "else": {"type": "empty_map"} - } - ] - ] - , "body": - { "type": "map_union" - , "$1": - [ { "type": "to_subdir" - , "subdir": "bin" - , "flat": true - , "msg": "install binaries may not overlap" - , "$1": {"type": "var", "name": "binaries"} - } - , { "type": "to_subdir" - , "subdir": "include" - , "$1": {"type": "var", "name": "headers"} - } - , { "type": "to_subdir" - , "subdir": "lib" - , "flat": {"type": "var", "name": "flat-libs"} - , "msg": "install libraries may not overlap" - , "$1": {"type": "var", "name": "libraries"} - } - , { "type": "to_subdir" - , "subdir": {"type": "var", "name": "pc-install-dir"} - , "$1": {"type": "var", "name": "pkg-config"} + ] + ] + , "body": + { "type": "map_union" + , "$1": + [ { "type": "to_subdir" + , "subdir": "bin" + , "flat": true + , "msg": "install binaries may not overlap" + , "$1": {"type": "var", "name": "binaries"} + } + , { "type": "to_subdir" + , "subdir": "include" + , "$1": {"type": "var", "name": "headers"} + } + , { "type": "to_subdir" + , "subdir": "lib" + , "flat": {"type": "var", "name": "flat-libs"} + , "msg": "install libraries may not overlap" + , "$1": {"type": "var", "name": "libraries"} + } + , { "type": "to_subdir" + , "subdir": {"type": "var", "name": "pc-install-dir"} + , "$1": {"type": "var", "name": "pkg-config"} + } + ] } - ] + } } } } diff --git a/rules/CC/RULES b/rules/CC/RULES index 9616a70f..ff642b92 100644 --- a/rules/CC/RULES +++ b/rules/CC/RULES @@ -484,7 +484,7 @@ ] , "config_vars": ["PREFIX"] , "target_fields": ["targets"] - , "string_fields": ["flat-libs", "prefix"] + , "string_fields": ["flat-libs", "prefix", "hdrs-only"] , "imports": {"install result": "install-with-deps result"} , "field_doc": { "targets": ["Targets to install artifacts from."] @@ -499,6 +499,7 @@ , "prefix is specified, the value from the config variable \"PREFIX\" is" , "taken, with the default value being \"/\"." ] + , "hdrs-only": ["Only collect headers from deps (without subdirectory)."] } , "config_doc": { "PREFIX": @@ -527,6 +528,7 @@ } ] , ["flat-libs", {"type": "FIELD", "name": "flat-libs"}] + , ["hdrs-only", {"type": "FIELD", "name": "hdrs-only"}] ] , "body": {"type": "CALL_EXPRESSION", "name": "install result"} } |