summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-05-08 17:10:19 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-05-09 12:17:24 +0200
commit40d6a2decf29a697a0aaa9ed211aaf5c4102f855 (patch)
treef363ebaeaeafa7d824e2854027c84ecf17fbae34
parent0a11bce4b8f80e8e9041788ccbf383722394872f (diff)
downloadrules-cc-40d6a2decf29a697a0aaa9ed211aaf5c4102f855.tar.gz
rules: prebuilt expr calls pkg-config with --static
... for static prebuilt libraries.
-rw-r--r--CC/prebuilt/EXPRESSIONS33
-rwxr-xr-xCC/prebuilt/read_pkgconfig.py11
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)