diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-05-08 17:10:19 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-05-09 12:17:24 +0200 |
commit | 40d6a2decf29a697a0aaa9ed211aaf5c4102f855 (patch) | |
tree | f363ebaeaeafa7d824e2854027c84ecf17fbae34 | |
parent | 0a11bce4b8f80e8e9041788ccbf383722394872f (diff) | |
download | rules-cc-40d6a2decf29a697a0aaa9ed211aaf5c4102f855.tar.gz |
rules: prebuilt expr calls pkg-config with --static
... for static prebuilt libraries.
-rw-r--r-- | CC/prebuilt/EXPRESSIONS | 33 | ||||
-rwxr-xr-x | CC/prebuilt/read_pkgconfig.py | 11 |
2 files changed, 31 insertions, 13 deletions
diff --git a/CC/prebuilt/EXPRESSIONS b/CC/prebuilt/EXPRESSIONS index 6bfd874..6b7169a 100644 --- a/CC/prebuilt/EXPRESSIONS +++ b/CC/prebuilt/EXPRESSIONS @@ -288,6 +288,13 @@ } } ] + , [ "pc-args" + , { "type": "if" + , "cond": {"type": "var", "name": "shared"} + , "then": [] + , "else": ["--static"] + } + ] , [ "cflags-filename" , {"type": "join", "$1": [{"type": "var", "name": "name"}, ".cflags"]} ] @@ -307,10 +314,15 @@ ] } , "cmd": - [ "./config_reader" - , {"type": "var", "name": "cflags-filename"} - , {"type": "var", "name": "main-pkg-config"} - ] + { "type": "++" + , "$1": + [ [ "./config_reader" + , {"type": "var", "name": "cflags-filename"} + , {"type": "var", "name": "main-pkg-config"} + ] + , {"type": "var", "name": "pc-args"} + ] + } , "env": {"type": "var", "name": "ENV"} , "outs": [{"type": "var", "name": "cflags-filename"}] } @@ -368,10 +380,15 @@ ] } , "cmd": - [ "./config_reader" - , {"type": "var", "name": "ldflags-filename"} - , {"type": "var", "name": "main-pkg-config"} - ] + { "type": "++" + , "$1": + [ [ "./config_reader" + , {"type": "var", "name": "ldflags-filename"} + , {"type": "var", "name": "main-pkg-config"} + ] + , {"type": "var", "name": "pc-args"} + ] + } , "env": {"type": "var", "name": "ENV"} , "outs": [{"type": "var", "name": "ldflags-filename"}] } diff --git a/CC/prebuilt/read_pkgconfig.py b/CC/prebuilt/read_pkgconfig.py index cb4154f..f6b5da1 100755 --- a/CC/prebuilt/read_pkgconfig.py +++ b/CC/prebuilt/read_pkgconfig.py @@ -27,7 +27,7 @@ def run_pkgconfig(args: list[str], env: dict[str, str]) -> str: return result.stdout.decode("utf-8").strip() -def read_ldflags(pkg: str, env: dict[str, str]) -> str: +def read_ldflags(pkg: str, args: list[str], env: dict[str, str]) -> str: def libname(filename: str) -> str: return filename.split(".")[0] @@ -36,7 +36,7 @@ def read_ldflags(pkg: str, env: dict[str, str]) -> str: for it in os.walk(".") for f in it[2] if f.startswith("lib") } - link_flags = run_pkgconfig(["--libs-only-l", pkg], env).split(" ") + link_flags = run_pkgconfig(args + ["--libs-only-l", pkg], env).split(" ") # deduplicate, keep right-most seen: set[str] = set() @@ -55,17 +55,18 @@ def read_ldflags(pkg: str, env: dict[str, str]) -> str: def read_pkgconfig(): if len(sys.argv) < 3: - print(f"usage: read_pkgconfig OUT_NAME PC_FILE") + print(f"usage: read_pkgconfig OUT_NAME PC_FILE [PC_ARGS...]") exit(1) name = sys.argv[1] pkg = Path(sys.argv[2]).stem + args = sys.argv[3:] env = dict(os.environ, PKG_CONFIG_PATH="./lib/pkgconfig") if name.endswith(".cflags"): - data = run_pkgconfig(["--cflags-only-other", pkg], env) + data = run_pkgconfig(args + ["--cflags-only-other", pkg], env) else: - data = read_ldflags(pkg, env) + data = read_ldflags(pkg, args, env) with open(f"{name}", 'w') as f: f.write(data) |