Merge: Tests nitg --semi-global
[nit.git] / c_src / pkgconfig.sep.1.c
1 #include "pkgconfig.sep.0.h"
2 /* method pkgconfig#ToolContext#pkgconfig_phase for (self: ToolContext): Phase */
3 val* pkgconfig__ToolContext__pkgconfig_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_pkgconfig__ToolContext___64dpkgconfig_phase].val; /* @pkgconfig_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @pkgconfig_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/pkgconfig.nit", 24);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method pkgconfig#ToolContext#pkgconfig_phase for (self: Object): Phase */
17 val* VIRTUAL_pkgconfig__ToolContext__pkgconfig_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = pkgconfig__ToolContext__pkgconfig_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method pkgconfig#ToolContext#pkgconfig_phase= for (self: ToolContext, Phase) */
26 void pkgconfig__ToolContext__pkgconfig_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_pkgconfig__ToolContext___64dpkgconfig_phase].val = p0; /* @pkgconfig_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method pkgconfig#ToolContext#pkgconfig_phase= for (self: Object, Phase) */
31 void VIRTUAL_pkgconfig__ToolContext__pkgconfig_phase_61d(val* self, val* p0) {
32 pkgconfig__ToolContext__pkgconfig_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method pkgconfig#PkgconfigPhase#process_annotated_node for (self: PkgconfigPhase, ANode, AAnnotation) */
36 void pkgconfig__PkgconfigPhase__process_annotated_node(val* self, val* p0, val* p1) {
37 val* var_nmoduledecl /* var nmoduledecl: ANode */;
38 val* var_nat /* var nat: AAnnotation */;
39 val* var /* : AAtid */;
40 val* var1 /* : Token */;
41 val* var2 /* : String */;
42 static val* varonce;
43 val* var3 /* : String */;
44 char* var4 /* : NativeString */;
45 long var5 /* : Int */;
46 val* var6 /* : String */;
47 short int var7 /* : Bool */;
48 val* var8 /* : ToolContext */;
49 val* var9 /* : ModelBuilder */;
50 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
51 short int var10 /* : Bool */;
52 int cltype;
53 int idtype;
54 short int var11 /* : Bool */;
55 static val* varonce12;
56 val* var13 /* : String */;
57 char* var14 /* : NativeString */;
58 long var15 /* : Int */;
59 val* var16 /* : String */;
60 val* var17 /* : ANodes[AAtArg] */;
61 val* var_args /* var args: ANodes[AAtArg] */;
62 short int var18 /* : Bool */;
63 static val* varonce19;
64 val* var20 /* : String */;
65 char* var21 /* : NativeString */;
66 long var22 /* : Int */;
67 val* var23 /* : String */;
68 val* var24 /* : Array[String] */;
69 val* var_pkgs /* var pkgs: Array[String] */;
70 val* var25 /* : Iterator[nullable Object] */;
71 short int var26 /* : Bool */;
72 val* var27 /* : nullable Object */;
73 val* var_arg /* var arg: AAtArg */;
74 short int var28 /* : Bool */;
75 int cltype29;
76 int idtype30;
77 short int var31 /* : Bool */;
78 static val* varonce32;
79 val* var33 /* : String */;
80 char* var34 /* : NativeString */;
81 long var35 /* : Int */;
82 val* var36 /* : String */;
83 val* var37 /* : AExpr */;
84 val* var_expr /* var expr: AExpr */;
85 short int var38 /* : Bool */;
86 int cltype39;
87 int idtype40;
88 short int var41 /* : Bool */;
89 static val* varonce42;
90 val* var43 /* : String */;
91 char* var44 /* : NativeString */;
92 long var45 /* : Int */;
93 val* var46 /* : String */;
94 val* var47 /* : String */;
95 val* var_pkg /* var pkg: String */;
96 long var48 /* : Int */;
97 long var49 /* : Int */;
98 long var50 /* : Int */;
99 long var51 /* : Int */;
100 long var53 /* : Int */;
101 val* var54 /* : String */;
102 val* var55 /* : nullable ANode */;
103 short int var56 /* : Bool */;
104 int cltype57;
105 int idtype58;
106 const char* var_class_name;
107 val* var_nmodule /* var nmodule: AModule */;
108 val* var59 /* : IProcess */;
109 static val* varonce60;
110 val* var61 /* : String */;
111 char* var62 /* : NativeString */;
112 long var63 /* : Int */;
113 val* var64 /* : String */;
114 static val* varonce65;
115 val* var66 /* : String */;
116 char* var67 /* : NativeString */;
117 long var68 /* : Int */;
118 val* var69 /* : String */;
119 val* var70 /* : Array[String] */;
120 long var71 /* : Int */;
121 val* var72 /* : NativeArray[String] */;
122 val* var_proc_which /* var proc_which: IProcess */;
123 long var73 /* : Int */;
124 long var_status /* var status: Int */;
125 long var74 /* : Int */;
126 short int var75 /* : Bool */;
127 short int var77 /* : Bool */;
128 short int var78 /* : Bool */;
129 static val* varonce79;
130 val* var80 /* : String */;
131 char* var81 /* : NativeString */;
132 long var82 /* : Int */;
133 val* var83 /* : String */;
134 val* var84 /* : Iterator[nullable Object] */;
135 short int var85 /* : Bool */;
136 val* var86 /* : nullable Object */;
137 val* var_pkg87 /* var pkg: String */;
138 val* var88 /* : Process */;
139 static val* varonce89;
140 val* var90 /* : String */;
141 char* var91 /* : NativeString */;
142 long var92 /* : Int */;
143 val* var93 /* : String */;
144 static val* varonce94;
145 val* var95 /* : String */;
146 char* var96 /* : NativeString */;
147 long var97 /* : Int */;
148 val* var98 /* : String */;
149 val* var99 /* : Array[String] */;
150 long var100 /* : Int */;
151 val* var101 /* : NativeArray[String] */;
152 val* var_proc_exist /* var proc_exist: Process */;
153 long var102 /* : Int */;
154 long var103 /* : Int */;
155 short int var104 /* : Bool */;
156 short int var106 /* : Bool */;
157 static val* varonce107;
158 val* var108 /* : String */;
159 char* var109 /* : NativeString */;
160 long var110 /* : Int */;
161 val* var111 /* : String */;
162 static val* varonce112;
163 val* var113 /* : String */;
164 char* var114 /* : NativeString */;
165 long var115 /* : Int */;
166 val* var116 /* : String */;
167 val* var117 /* : Array[Object] */;
168 long var118 /* : Int */;
169 val* var119 /* : NativeArray[Object] */;
170 val* var120 /* : String */;
171 long var121 /* : Int */;
172 short int var122 /* : Bool */;
173 short int var124 /* : Bool */;
174 short int var125 /* : Bool */;
175 static val* varonce126;
176 val* var127 /* : String */;
177 char* var128 /* : NativeString */;
178 long var129 /* : Int */;
179 val* var130 /* : String */;
180 val* var131 /* : IProcess */;
181 static val* varonce132;
182 val* var133 /* : String */;
183 char* var134 /* : NativeString */;
184 long var135 /* : Int */;
185 val* var136 /* : String */;
186 static val* varonce137;
187 val* var138 /* : String */;
188 char* var139 /* : NativeString */;
189 long var140 /* : Int */;
190 val* var141 /* : String */;
191 val* var142 /* : Array[String] */;
192 long var143 /* : Int */;
193 val* var144 /* : NativeArray[String] */;
194 val* var_proc /* var proc: IProcess */;
195 val* var145 /* : String */;
196 val* var_compiler_opts /* var compiler_opts: String */;
197 val* var146 /* : String */;
198 static val* varonce147;
199 val* var148 /* : String */;
200 char* var149 /* : NativeString */;
201 long var150 /* : Int */;
202 val* var151 /* : String */;
203 static val* varonce152;
204 val* var153 /* : String */;
205 char* var154 /* : NativeString */;
206 long var155 /* : Int */;
207 val* var156 /* : String */;
208 static val* varonce157;
209 val* var158 /* : String */;
210 char* var159 /* : NativeString */;
211 long var160 /* : Int */;
212 val* var161 /* : String */;
213 val* var162 /* : String */;
214 val* var163 /* : Array[Object] */;
215 long var164 /* : Int */;
216 val* var165 /* : NativeArray[Object] */;
217 val* var166 /* : String */;
218 val* var167 /* : IProcess */;
219 static val* varonce168;
220 val* var169 /* : String */;
221 char* var170 /* : NativeString */;
222 long var171 /* : Int */;
223 val* var172 /* : String */;
224 static val* varonce173;
225 val* var174 /* : String */;
226 char* var175 /* : NativeString */;
227 long var176 /* : Int */;
228 val* var177 /* : String */;
229 val* var178 /* : Array[String] */;
230 long var179 /* : Int */;
231 val* var180 /* : NativeArray[String] */;
232 val* var181 /* : String */;
233 val* var_linker_opts /* var linker_opts: String */;
234 val* var182 /* : String */;
235 static val* varonce183;
236 val* var184 /* : String */;
237 char* var185 /* : NativeString */;
238 long var186 /* : Int */;
239 val* var187 /* : String */;
240 static val* varonce188;
241 val* var189 /* : String */;
242 char* var190 /* : NativeString */;
243 long var191 /* : Int */;
244 val* var192 /* : String */;
245 static val* varonce193;
246 val* var194 /* : String */;
247 char* var195 /* : NativeString */;
248 long var196 /* : Int */;
249 val* var197 /* : String */;
250 val* var198 /* : String */;
251 val* var199 /* : Array[Object] */;
252 long var200 /* : Int */;
253 val* var201 /* : NativeArray[Object] */;
254 val* var202 /* : String */;
255 var_nmoduledecl = p0;
256 var_nat = p1;
257 var = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_atid]))(var_nat) /* n_atid on <var_nat:AAnnotation>*/;
258 var1 = ((val* (*)(val*))(var->class->vft[COLOR_parser_nodes__AAtid__n_id]))(var) /* n_id on <var:AAtid>*/;
259 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:Token>*/;
260 if (varonce) {
261 var3 = varonce;
262 } else {
263 var4 = "pkgconfig";
264 var5 = 9;
265 var6 = string__NativeString__to_s_with_length(var4, var5);
266 var3 = var6;
267 varonce = var3;
268 }
269 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___33d_61d]))(var2, var3) /* != on <var2:String>*/;
270 if (var7){
271 goto RET_LABEL;
272 } else {
273 }
274 var8 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:PkgconfigPhase>*/;
275 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var8) /* modelbuilder on <var8:ToolContext>*/;
276 var_modelbuilder = var9;
277 /* <var_nmoduledecl:ANode> isa AModuledecl */
278 cltype = type_parser_nodes__AModuledecl.color;
279 idtype = type_parser_nodes__AModuledecl.id;
280 if(cltype >= var_nmoduledecl->type->table_size) {
281 var10 = 0;
282 } else {
283 var10 = var_nmoduledecl->type->type_table[cltype] == idtype;
284 }
285 var11 = !var10;
286 if (var11){
287 if (varonce12) {
288 var13 = varonce12;
289 } else {
290 var14 = "Syntax error: only the declaration of modules may use \"pkgconfig\".";
291 var15 = 66;
292 var16 = string__NativeString__to_s_with_length(var14, var15);
293 var13 = var16;
294 varonce12 = var13;
295 }
296 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var13) /* error on <var_modelbuilder:ModelBuilder>*/;
297 goto RET_LABEL;
298 } else {
299 }
300 var17 = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_args]))(var_nat) /* n_args on <var_nat:AAnnotation>*/;
301 var_args = var17;
302 var18 = ((short int (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_args) /* is_empty on <var_args:ANodes[AAtArg]>*/;
303 if (var18){
304 if (varonce19) {
305 var20 = varonce19;
306 } else {
307 var21 = "Syntax error: \"pkgconfig\" expects at least one argument.";
308 var22 = 56;
309 var23 = string__NativeString__to_s_with_length(var21, var22);
310 var20 = var23;
311 varonce19 = var20;
312 }
313 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var20) /* error on <var_modelbuilder:ModelBuilder>*/;
314 goto RET_LABEL;
315 } else {
316 }
317 var24 = NEW_array__Array(&type_array__Arraystring__String);
318 ((void (*)(val*))(var24->class->vft[COLOR_array__Array__init]))(var24) /* init on <var24:Array[String]>*/;
319 var_pkgs = var24;
320 var25 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_args) /* iterator on <var_args:ANodes[AAtArg]>*/;
321 for(;;) {
322 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
323 if(!var26) break;
324 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
325 var_arg = var27;
326 /* <var_arg:AAtArg> isa AExprAtArg */
327 cltype29 = type_parser_nodes__AExprAtArg.color;
328 idtype30 = type_parser_nodes__AExprAtArg.id;
329 if(cltype29 >= var_arg->type->table_size) {
330 var28 = 0;
331 } else {
332 var28 = var_arg->type->type_table[cltype29] == idtype30;
333 }
334 var31 = !var28;
335 if (var31){
336 if (varonce32) {
337 var33 = varonce32;
338 } else {
339 var34 = "Syntax error: \"pkgconfig\" expects its arguments to be the name of the package as String literals.";
340 var35 = 97;
341 var36 = string__NativeString__to_s_with_length(var34, var35);
342 var33 = var36;
343 varonce32 = var33;
344 }
345 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var33) /* error on <var_modelbuilder:ModelBuilder>*/;
346 goto RET_LABEL;
347 } else {
348 }
349 var37 = ((val* (*)(val*))(var_arg->class->vft[COLOR_parser_nodes__AExprAtArg__n_expr]))(var_arg) /* n_expr on <var_arg:AAtArg(AExprAtArg)>*/;
350 var_expr = var37;
351 /* <var_expr:AExpr> isa AStringFormExpr */
352 cltype39 = type_parser_nodes__AStringFormExpr.color;
353 idtype40 = type_parser_nodes__AStringFormExpr.id;
354 if(cltype39 >= var_expr->type->table_size) {
355 var38 = 0;
356 } else {
357 var38 = var_expr->type->type_table[cltype39] == idtype40;
358 }
359 var41 = !var38;
360 if (var41){
361 if (varonce42) {
362 var43 = varonce42;
363 } else {
364 var44 = "Syntax error: \"pkgconfig\" expects its arguments to be the name of the package as String literals.";
365 var45 = 97;
366 var46 = string__NativeString__to_s_with_length(var44, var45);
367 var43 = var46;
368 varonce42 = var43;
369 }
370 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var43) /* error on <var_modelbuilder:ModelBuilder>*/;
371 goto RET_LABEL;
372 } else {
373 }
374 var47 = ((val* (*)(val*))(var_expr->class->vft[COLOR_modelize_property__Prod__collect_text]))(var_expr) /* collect_text on <var_expr:AExpr(AStringFormExpr)>*/;
375 var_pkg = var47;
376 var48 = 1;
377 var49 = ((long (*)(val*))(var_pkg->class->vft[COLOR_abstract_collection__Collection__length]))(var_pkg) /* length on <var_pkg:String>*/;
378 var50 = 2;
379 { /* Inline kernel#Int#- (var49,var50) */
380 var53 = var49 - var50;
381 var51 = var53;
382 goto RET_LABEL52;
383 RET_LABEL52:(void)0;
384 }
385 var54 = ((val* (*)(val*, long, long))(var_pkg->class->vft[COLOR_string__AbstractString__substring]))(var_pkg, var48, var51) /* substring on <var_pkg:String>*/;
386 var_pkg = var54;
387 ((void (*)(val*, val*))(var_pkgs->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_pkgs, var_pkg) /* add on <var_pkgs:Array[String]>*/;
388 CONTINUE_label: (void)0;
389 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
390 }
391 BREAK_label: (void)0;
392 var55 = ((val* (*)(val*))(var_nmoduledecl->class->vft[COLOR_parser_nodes__ANode__parent]))(var_nmoduledecl) /* parent on <var_nmoduledecl:ANode(AModuledecl)>*/;
393 /* <var55:nullable ANode> isa AModule */
394 cltype57 = type_parser_nodes__AModule.color;
395 idtype58 = type_parser_nodes__AModule.id;
396 if(var55 == NULL) {
397 var56 = 0;
398 } else {
399 if(cltype57 >= var55->type->table_size) {
400 var56 = 0;
401 } else {
402 var56 = var55->type->type_table[cltype57] == idtype58;
403 }
404 }
405 if (!var56) {
406 var_class_name = var55 == NULL ? "null" : var55->type->name;
407 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
408 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/pkgconfig.nit", 69);
409 show_backtrace(1);
410 }
411 var_nmodule = var55;
412 var59 = NEW_exec__IProcess(&type_exec__IProcess);
413 if (varonce60) {
414 var61 = varonce60;
415 } else {
416 var62 = "which";
417 var63 = 5;
418 var64 = string__NativeString__to_s_with_length(var62, var63);
419 var61 = var64;
420 varonce60 = var61;
421 }
422 if (varonce65) {
423 var66 = varonce65;
424 } else {
425 var67 = "pkg-config";
426 var68 = 10;
427 var69 = string__NativeString__to_s_with_length(var67, var68);
428 var66 = var69;
429 varonce65 = var66;
430 }
431 var70 = NEW_array__Array(&type_array__Arraystring__String);
432 { /* var70 = array_instance Array[String] */
433 var71 = 1;
434 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraystring__String);
435 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var66;
436 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[String]>*/;
437 }
438 ((void (*)(val*, val*, val*))(var59->class->vft[COLOR_exec__IProcess__init]))(var59, var61, var70) /* init on <var59:IProcess>*/;
439 var_proc_which = var59;
440 ((void (*)(val*))(var_proc_which->class->vft[COLOR_exec__Process__wait]))(var_proc_which) /* wait on <var_proc_which:IProcess>*/;
441 var73 = ((long (*)(val*))(var_proc_which->class->vft[COLOR_exec__Process__status]))(var_proc_which) /* status on <var_proc_which:IProcess>*/;
442 var_status = var73;
443 var74 = 0;
444 { /* Inline kernel#Int#!= (var_status,var74) */
445 var77 = var_status == var74;
446 var78 = !var77;
447 var75 = var78;
448 goto RET_LABEL76;
449 RET_LABEL76:(void)0;
450 }
451 if (var75){
452 if (varonce79) {
453 var80 = varonce79;
454 } else {
455 var81 = "Error: program pkg-config not found, make sure it is installed.";
456 var82 = 63;
457 var83 = string__NativeString__to_s_with_length(var81, var82);
458 var80 = var83;
459 varonce79 = var80;
460 }
461 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var80) /* error on <var_modelbuilder:ModelBuilder>*/;
462 goto RET_LABEL;
463 } else {
464 }
465 var84 = ((val* (*)(val*))(var_pkgs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_pkgs) /* iterator on <var_pkgs:Array[String]>*/;
466 for(;;) {
467 var85 = ((short int (*)(val*))(var84->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var84) /* is_ok on <var84:Iterator[nullable Object]>*/;
468 if(!var85) break;
469 var86 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_collection__Iterator__item]))(var84) /* item on <var84:Iterator[nullable Object]>*/;
470 var_pkg87 = var86;
471 var88 = NEW_exec__Process(&type_exec__Process);
472 if (varonce89) {
473 var90 = varonce89;
474 } else {
475 var91 = "pkg-config";
476 var92 = 10;
477 var93 = string__NativeString__to_s_with_length(var91, var92);
478 var90 = var93;
479 varonce89 = var90;
480 }
481 if (varonce94) {
482 var95 = varonce94;
483 } else {
484 var96 = "--exists";
485 var97 = 8;
486 var98 = string__NativeString__to_s_with_length(var96, var97);
487 var95 = var98;
488 varonce94 = var95;
489 }
490 var99 = NEW_array__Array(&type_array__Arraystring__String);
491 { /* var99 = array_instance Array[String] */
492 var100 = 2;
493 var101 = NEW_array__NativeArray(var100, &type_array__NativeArraystring__String);
494 ((struct instance_array__NativeArray*)var101)->values[0] = (val*) var95;
495 ((struct instance_array__NativeArray*)var101)->values[1] = (val*) var_pkg87;
496 ((void (*)(val*, val*, long))(var99->class->vft[COLOR_array__Array__with_native]))(var99, var101, var100) /* with_native on <var99:Array[String]>*/;
497 }
498 ((void (*)(val*, val*, val*))(var88->class->vft[COLOR_exec__Process__init]))(var88, var90, var99) /* init on <var88:Process>*/;
499 var_proc_exist = var88;
500 ((void (*)(val*))(var_proc_exist->class->vft[COLOR_exec__Process__wait]))(var_proc_exist) /* wait on <var_proc_exist:Process>*/;
501 var102 = ((long (*)(val*))(var_proc_exist->class->vft[COLOR_exec__Process__status]))(var_proc_exist) /* status on <var_proc_exist:Process>*/;
502 var_status = var102;
503 var103 = 1;
504 { /* Inline kernel#Int#== (var_status,var103) */
505 var106 = var_status == var103;
506 var104 = var106;
507 goto RET_LABEL105;
508 RET_LABEL105:(void)0;
509 }
510 if (var104){
511 if (varonce107) {
512 var108 = varonce107;
513 } else {
514 var109 = "Error: package \"";
515 var110 = 16;
516 var111 = string__NativeString__to_s_with_length(var109, var110);
517 var108 = var111;
518 varonce107 = var108;
519 }
520 if (varonce112) {
521 var113 = varonce112;
522 } else {
523 var114 = "\" unknown by pkg-config, make sure the development package is be installed.";
524 var115 = 75;
525 var116 = string__NativeString__to_s_with_length(var114, var115);
526 var113 = var116;
527 varonce112 = var113;
528 }
529 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
530 { /* var117 = array_instance Array[Object] */
531 var118 = 3;
532 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
533 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var108;
534 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_pkg87;
535 ((struct instance_array__NativeArray*)var119)->values[2] = (val*) var113;
536 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
537 }
538 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
539 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var120) /* error on <var_modelbuilder:ModelBuilder>*/;
540 goto RET_LABEL;
541 } else {
542 var121 = 0;
543 { /* Inline kernel#Int#!= (var_status,var121) */
544 var124 = var_status == var121;
545 var125 = !var124;
546 var122 = var125;
547 goto RET_LABEL123;
548 RET_LABEL123:(void)0;
549 }
550 if (var122){
551 if (varonce126) {
552 var127 = varonce126;
553 } else {
554 var128 = "Error: something went wrong calling pkg-config, make sure it is correctly installed.";
555 var129 = 84;
556 var130 = string__NativeString__to_s_with_length(var128, var129);
557 var127 = var130;
558 varonce126 = var127;
559 }
560 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var127) /* error on <var_modelbuilder:ModelBuilder>*/;
561 goto RET_LABEL;
562 } else {
563 }
564 }
565 var131 = NEW_exec__IProcess(&type_exec__IProcess);
566 if (varonce132) {
567 var133 = varonce132;
568 } else {
569 var134 = "pkg-config";
570 var135 = 10;
571 var136 = string__NativeString__to_s_with_length(var134, var135);
572 var133 = var136;
573 varonce132 = var133;
574 }
575 if (varonce137) {
576 var138 = varonce137;
577 } else {
578 var139 = "--cflags";
579 var140 = 8;
580 var141 = string__NativeString__to_s_with_length(var139, var140);
581 var138 = var141;
582 varonce137 = var138;
583 }
584 var142 = NEW_array__Array(&type_array__Arraystring__String);
585 { /* var142 = array_instance Array[String] */
586 var143 = 2;
587 var144 = NEW_array__NativeArray(var143, &type_array__NativeArraystring__String);
588 ((struct instance_array__NativeArray*)var144)->values[0] = (val*) var138;
589 ((struct instance_array__NativeArray*)var144)->values[1] = (val*) var_pkg87;
590 ((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[String]>*/;
591 }
592 ((void (*)(val*, val*, val*))(var131->class->vft[COLOR_exec__IProcess__init]))(var131, var133, var142) /* init on <var131:IProcess>*/;
593 var_proc = var131;
594 var145 = ((val* (*)(val*))(var_proc->class->vft[COLOR_stream__IStream__read_all]))(var_proc) /* read_all on <var_proc:IProcess>*/;
595 var_compiler_opts = var145;
596 var146 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_c__AModule__c_compiler_options]))(var_nmodule) /* c_compiler_options on <var_nmodule:AModule>*/;
597 if (varonce147) {
598 var148 = varonce147;
599 } else {
600 var149 = " ";
601 var150 = 1;
602 var151 = string__NativeString__to_s_with_length(var149, var150);
603 var148 = var151;
604 varonce147 = var148;
605 }
606 if (varonce152) {
607 var153 = varonce152;
608 } else {
609 var154 = "\n";
610 var155 = 1;
611 var156 = string__NativeString__to_s_with_length(var154, var155);
612 var153 = var156;
613 varonce152 = var153;
614 }
615 if (varonce157) {
616 var158 = varonce157;
617 } else {
618 var159 = " ";
619 var160 = 1;
620 var161 = string__NativeString__to_s_with_length(var159, var160);
621 var158 = var161;
622 varonce157 = var158;
623 }
624 var162 = ((val* (*)(val*, val*, val*))(var_compiler_opts->class->vft[COLOR_string_search__String__replace]))(var_compiler_opts, var153, var158) /* replace on <var_compiler_opts:String>*/;
625 var163 = NEW_array__Array(&type_array__Arraykernel__Object);
626 { /* var163 = array_instance Array[Object] */
627 var164 = 3;
628 var165 = NEW_array__NativeArray(var164, &type_array__NativeArraykernel__Object);
629 ((struct instance_array__NativeArray*)var165)->values[0] = (val*) var146;
630 ((struct instance_array__NativeArray*)var165)->values[1] = (val*) var148;
631 ((struct instance_array__NativeArray*)var165)->values[2] = (val*) var162;
632 ((void (*)(val*, val*, long))(var163->class->vft[COLOR_array__Array__with_native]))(var163, var165, var164) /* with_native on <var163:Array[Object]>*/;
633 }
634 var166 = ((val* (*)(val*))(var163->class->vft[COLOR_string__Object__to_s]))(var163) /* to_s on <var163:Array[Object]>*/;
635 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_c__AModule__c_compiler_options_61d]))(var_nmodule, var166) /* c_compiler_options= on <var_nmodule:AModule>*/;
636 var167 = NEW_exec__IProcess(&type_exec__IProcess);
637 if (varonce168) {
638 var169 = varonce168;
639 } else {
640 var170 = "pkg-config";
641 var171 = 10;
642 var172 = string__NativeString__to_s_with_length(var170, var171);
643 var169 = var172;
644 varonce168 = var169;
645 }
646 if (varonce173) {
647 var174 = varonce173;
648 } else {
649 var175 = "--libs";
650 var176 = 6;
651 var177 = string__NativeString__to_s_with_length(var175, var176);
652 var174 = var177;
653 varonce173 = var174;
654 }
655 var178 = NEW_array__Array(&type_array__Arraystring__String);
656 { /* var178 = array_instance Array[String] */
657 var179 = 2;
658 var180 = NEW_array__NativeArray(var179, &type_array__NativeArraystring__String);
659 ((struct instance_array__NativeArray*)var180)->values[0] = (val*) var174;
660 ((struct instance_array__NativeArray*)var180)->values[1] = (val*) var_pkg87;
661 ((void (*)(val*, val*, long))(var178->class->vft[COLOR_array__Array__with_native]))(var178, var180, var179) /* with_native on <var178:Array[String]>*/;
662 }
663 ((void (*)(val*, val*, val*))(var167->class->vft[COLOR_exec__IProcess__init]))(var167, var169, var178) /* init on <var167:IProcess>*/;
664 var_proc = var167;
665 var181 = ((val* (*)(val*))(var_proc->class->vft[COLOR_stream__IStream__read_all]))(var_proc) /* read_all on <var_proc:IProcess>*/;
666 var_linker_opts = var181;
667 var182 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_c__AModule__c_linker_options]))(var_nmodule) /* c_linker_options on <var_nmodule:AModule>*/;
668 if (varonce183) {
669 var184 = varonce183;
670 } else {
671 var185 = " ";
672 var186 = 1;
673 var187 = string__NativeString__to_s_with_length(var185, var186);
674 var184 = var187;
675 varonce183 = var184;
676 }
677 if (varonce188) {
678 var189 = varonce188;
679 } else {
680 var190 = "\n";
681 var191 = 1;
682 var192 = string__NativeString__to_s_with_length(var190, var191);
683 var189 = var192;
684 varonce188 = var189;
685 }
686 if (varonce193) {
687 var194 = varonce193;
688 } else {
689 var195 = " ";
690 var196 = 1;
691 var197 = string__NativeString__to_s_with_length(var195, var196);
692 var194 = var197;
693 varonce193 = var194;
694 }
695 var198 = ((val* (*)(val*, val*, val*))(var_linker_opts->class->vft[COLOR_string_search__String__replace]))(var_linker_opts, var189, var194) /* replace on <var_linker_opts:String>*/;
696 var199 = NEW_array__Array(&type_array__Arraykernel__Object);
697 { /* var199 = array_instance Array[Object] */
698 var200 = 3;
699 var201 = NEW_array__NativeArray(var200, &type_array__NativeArraykernel__Object);
700 ((struct instance_array__NativeArray*)var201)->values[0] = (val*) var182;
701 ((struct instance_array__NativeArray*)var201)->values[1] = (val*) var184;
702 ((struct instance_array__NativeArray*)var201)->values[2] = (val*) var198;
703 ((void (*)(val*, val*, long))(var199->class->vft[COLOR_array__Array__with_native]))(var199, var201, var200) /* with_native on <var199:Array[Object]>*/;
704 }
705 var202 = ((val* (*)(val*))(var199->class->vft[COLOR_string__Object__to_s]))(var199) /* to_s on <var199:Array[Object]>*/;
706 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_c__AModule__c_linker_options_61d]))(var_nmodule, var202) /* c_linker_options= on <var_nmodule:AModule>*/;
707 CONTINUE_label203: (void)0;
708 ((void (*)(val*))(var84->class->vft[COLOR_abstract_collection__Iterator__next]))(var84) /* next on <var84:Iterator[nullable Object]>*/;
709 }
710 BREAK_label203: (void)0;
711 RET_LABEL:;
712 }
713 /* method pkgconfig#PkgconfigPhase#process_annotated_node for (self: Object, ANode, AAnnotation) */
714 void VIRTUAL_pkgconfig__PkgconfigPhase__process_annotated_node(val* self, val* p0, val* p1) {
715 pkgconfig__PkgconfigPhase__process_annotated_node(self, p0, p1);
716 RET_LABEL:;
717 }