summaryrefslogtreecommitdiff
path: root/rules/CC/pkgconfig/EXPRESSIONS
blob: d4b923b94550c8bf0c19ca0803069af5980abf53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
{ "pkgconfig result":
  { "vars": ["ENV", "name", "args", "stage"]
  , "imports":
    { "default-ENV": ["./", "..", "default-ENV"]
    , "default-PATH": ["./", "..", "default-PATH"]
    , "stage": ["", "stage_singleton_field"]
    , "map_provider": ["", "field_map_provider"]
    , "sh": ["shell", "sh"]
    , "sh-PATH": ["shell", "PATH"]
    }
  , "expression":
    { "type": "let*"
    , "bindings":
      [ [ "ENV"
        , { "type": "map_union"
          , "$1":
            [ {"type": "CALL_EXPRESSION", "name": "default-ENV"}
            , {"type": "var", "name": "ENV", "default": {"type": "empty_map"}}
            ]
          }
        ]
      , [ "ENV_PATH"
        , { "type": "lookup"
          , "map": {"type": "var", "name": "ENV"}
          , "key": "PATH"
          }
        ]
      , [ "sh-PATH"
        , { "type": "let*"
          , "bindings": [["fieldname", "shell defaults"]]
          , "body": {"type": "CALL_EXPRESSION", "name": "sh-PATH"}
          }
        ]
      , [ "ENV"
        , { "type": "map_union"
          , "$1":
            [ {"type": "var", "name": "ENV"}
            , { "type": "singleton_map"
              , "key": "PATH"
              , "value":
                { "type": "join"
                , "separator": ":"
                , "$1":
                  { "type": "++"
                  , "$1":
                    [ {"type": "CALL_EXPRESSION", "name": "default-PATH"}
                    , {"type": "var", "name": "sh-PATH"}
                    , { "type": "if"
                      , "cond": {"type": "var", "name": "ENV_PATH"}
                      , "then": [{"type": "var", "name": "ENV_PATH"}]
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      , ["TOOLCHAIN_DIR", "toolchain"]
      , [ "shell TOOLCHAIN"
        , { "type": "to_subdir"
          , "subdir": {"type": "var", "name": "TOOLCHAIN_DIR"}
          , "$1":
            { "type": "let*"
            , "bindings":
              [ ["fieldname", "shell defaults"]
              , ["provider", "TOOLCHAIN"]
              , ["default", {"type": "empty_map"}]
              ]
            , "body": {"type": "CALL_EXPRESSION", "name": "map_provider"}
            }
          }
        ]
      , [ "sh"
        , { "type": "let*"
          , "bindings": [["fieldname", "shell defaults"]]
          , "body": {"type": "CALL_EXPRESSION", "name": "sh"}
          }
        ]
      , [ "cflags-filename"
        , {"type": "join", "$1": [{"type": "var", "name": "name"}, ".cflags"]}
        ]
      , [ "cflags-files"
        , { "type": "to_subdir"
          , "subdir": {"type": "var", "name": "stage"}
          , "$1":
            { "type": "ACTION"
            , "inputs": {"type": "var", "name": "shell TOOLCHAIN"}
            , "cmd":
              [ {"type": "var", "name": "sh"}
              , "-c"
              , { "type": "join"
                , "separator": " "
                , "$1":
                  { "type": "++"
                  , "$1":
                    [ ["pkg-config"]
                    , [ { "type": "join_cmd"
                        , "$1":
                          { "type": "++"
                          , "$1":
                            [ {"type": "var", "name": "args", "default": []}
                            , ["--cflags", {"type": "var", "name": "name"}]
                            ]
                          }
                        }
                      ]
                    , [">"]
                    , [ { "type": "join_cmd"
                        , "$1": {"type": "var", "name": "cflags-filename"}
                        }
                      ]
                    ]
                  }
                }
              ]
            , "env": {"type": "var", "name": "ENV"}
            , "outs": [{"type": "var", "name": "cflags-filename"}]
            }
          }
        ]
      , [ "compile-args"
        , { "type": "foreach_map"
          , "var_key": "flag-file"
          , "range": {"type": "var", "name": "cflags-files"}
          , "body":
            {"type": "join", "$1": ["@", {"type": "var", "name": "flag-file"}]}
          }
        ]
      , [ "ldflags-filename"
        , {"type": "join", "$1": [{"type": "var", "name": "name"}, ".ldflags"]}
        ]
      , [ "ldflags-files"
        , { "type": "ACTION"
          , "inputs": {"type": "var", "name": "shell TOOLCHAIN"}
          , "cmd":
            [ {"type": "var", "name": "sh"}
            , "-c"
            , { "type": "join"
              , "separator": " "
              , "$1":
                { "type": "++"
                , "$1":
                  [ ["pkg-config"]
                  , [ { "type": "join_cmd"
                      , "$1":
                        { "type": "++"
                        , "$1":
                          [ {"type": "var", "name": "args", "default": []}
                          , ["--libs", {"type": "var", "name": "name"}]
                          ]
                        }
                      }
                    ]
                  , [">", "ldflags.raw"]
                  ]
                }
              }
            ]
          , "env": {"type": "var", "name": "ENV"}
          , "outs": ["ldflags.raw"]
          }
        ]
      , [ "add_rpath"
        , { "type": "let*"
          , "bindings": [["fieldname", "add_rpath"], ["location", "add_rpath"]]
          , "body": {"type": "CALL_EXPRESSION", "name": "stage"}
          }
        ]
      , [ "ldflags-files"
        , { "type": "to_subdir"
          , "subdir": {"type": "var", "name": "stage"}
          , "$1":
            { "type": "ACTION"
            , "inputs":
              { "type": "map_union"
              , "$1":
                [ {"type": "var", "name": "add_rpath"}
                , {"type": "var", "name": "ldflags-files"}
                , {"type": "var", "name": "shell TOOLCHAIN"}
                ]
              }
            , "cmd":
              [ {"type": "var", "name": "sh"}
              , "-c"
              , { "type": "join"
                , "separator": " "
                , "$1":
                  [ "./add_rpath $(cat ldflags.raw)"
                  , ">"
                  , { "type": "join_cmd"
                    , "$1": {"type": "var", "name": "ldflags-filename"}
                    }
                  ]
                }
              ]
            , "env": {"type": "var", "name": "ENV"}
            , "outs": [{"type": "var", "name": "ldflags-filename"}]
            }
          }
        ]
      , [ "link-args"
        , { "type": "foreach_map"
          , "var_key": "flag-file"
          , "range": {"type": "var", "name": "ldflags-files"}
          , "body":
            {"type": "join", "$1": ["@", {"type": "var", "name": "flag-file"}]}
          }
        ]
      , ["package", {"type": "env", "vars": ["cflags-files", "ldflags-files"]}]
      , ["compile-deps", {"type": "empty_map"}]
      , ["link-deps", {"type": "empty_map"}]
      ]
    , "body":
      { "type": "RESULT"
      , "provides":
        { "type": "env"
        , "vars":
          ["compile-deps", "compile-args", "link-deps", "link-args", "package"]
        }
      }
    }
  }
}