diff options
Diffstat (limited to 'rules/CC/EXPRESSIONS')
-rw-r--r-- | rules/CC/EXPRESSIONS | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/rules/CC/EXPRESSIONS b/rules/CC/EXPRESSIONS index 57418d6..c1c11f3 100644 --- a/rules/CC/EXPRESSIONS +++ b/rules/CC/EXPRESSIONS @@ -333,6 +333,114 @@ } } } +, "pkg-config": + { "vars": + [ "pkg-name" + , "pkg-prefix" + , "pkg-version" + , "pkg-cflags" + , "pkg-ldflags" + , "pkg-libs" + , "flat-libs" + ] + , "imports": {"contains": ["", "contains"]} + , "expression": + { "type": "singleton_map" + , "key": + {"type": "join", "$1": [{"type": "var", "name": "pkg-name"}, ".pc"]} + , "value": + { "type": "BLOB" + , "data": + { "type": "join" + , "separator": "\n" + , "$1": + [ { "type": "join" + , "$1": + [ "prefix=" + , {"type": "var", "name": "pkg-prefix", "default": "/"} + ] + } + , "libdir=${prefix}/lib" + , "includedir=${prefix}/include" + , { "type": "join" + , "$1": ["Name: ", {"type": "var", "name": "pkg-name"}] + } + , { "type": "join" + , "$1": + [ "Version: " + , {"type": "var", "name": "pkg-version", "default": "unknown"} + ] + } + , { "type": "join" + , "$1": + [ "Description: Pkg-config for " + , {"type": "var", "name": "pkg-name"} + , ", generated by JustBuild" + ] + } + , "URL: unknown" + , { "type": "join" + , "separator": " " + , "$1": + { "type": "++" + , "$1": + [ ["Cflags:", "-I${includedir}"] + , {"type": "var", "name": "pkg-cflags"} + ] + } + } + , { "type": "join" + , "separator": " " + , "$1": + { "type": "++" + , "$1": + [ ["Libs:"] + , { "type": "if" + , "cond": {"type": "var", "name": "flat-libs"} + , "then": ["-L${libdir}"] + } + , { "type": "let*" + , "bindings": + [ [ "list" + , { "type": "keys" + , "$1": {"type": "var", "name": "pkg-libs"} + } + ] + ] + , "body": + { "type": "foreach" + , "var": "item" + , "range": {"type": "var", "name": "pkg-ldflags"} + , "body": + { "type": "if" + , "cond": {"type": "CALL_EXPRESSION", "name": "contains"} + , "then": + { "type": "join" + , "$1": + { "type": "if" + , "cond": {"type": "var", "name": "flat-libs"} + , "then": + [ "-l:" + , { "type": "basename" + , "$1": {"type": "var", "name": "item"} + } + ] + , "else": + ["${libdir}/", {"type": "var", "name": "item"}] + } + } + , "else": {"type": "var", "name": "item"} + } + } + } + ] + } + } + ] + } + } + } + } , "objects": { "vars": [ "COMPILER" @@ -684,6 +792,7 @@ , "ldflags" , "private-ldflags" , "stage" + , "pkg-name" , "extra-provides" , "public-fieldnames" , "private-fieldnames" @@ -748,6 +857,12 @@ } } ] + , [ "package" + , { "type": "singleton_map" + , "key": "name" + , "value": {"type": "var", "name": "pkg-name"} + } + ] ] , "body": { "type": "RESULT" @@ -764,6 +879,7 @@ , "link-args" , "run-libs" , "run-libs-args" + , "package" ] } , { "type": "var" @@ -941,6 +1057,7 @@ , "ldflags" , "private-ldflags" , "soversion" + , "pkg-name" , "extra-provides" , "deps-transition" , "public-fieldnames" @@ -1023,6 +1140,20 @@ } } ] + , [ "package" + , { "type": "let*" + , "bindings": + [ ["name", {"type": "var", "name": "pkg-name"}] + , [ "version" + , { "type": "join" + , "separator": "." + , "$1": {"type": "var", "name": "soversion"} + } + ] + ] + , "body": {"type": "env", "vars": ["name", "version"]} + } + ] ] , "body": { "type": "RESULT" @@ -1039,6 +1170,7 @@ , "link-args" , "run-libs" , "run-libs-args" + , "package" ] } , { "type": "var" |