Skip several gcc.dg/builtin-dynamic-object-size tests on hppa*-*-hpux*
[official-gcc.git] / gcc / ada / Makefile.rtl
blobe404d43f0ff28c57b7df60a41498b4f4a62d151d
1 # Makefile.rtl for GNU Ada Compiler (GNAT).
2 #   Copyright (C) 2003-2021, Free Software Foundation, Inc.
4 #This file is part of GCC.
6 #GCC is free software; you can redistribute it and/or modify
7 #it under the terms of the GNU General Public License as published by
8 #the Free Software Foundation; either version 3, or (at your option)
9 #any later version.
11 #GCC is distributed in the hope that it will be useful,
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #GNU General Public License for more details.
16 #You should have received a copy of the GNU General Public License
17 #along with GCC; see the file COPYING3.  If not see
18 #<http://www.gnu.org/licenses/>.
20 # This makefile fragment is included in the ada Makefile.
22 # Its purpose is to allow the separate maintenance of the list of
23 # GNATRTL objects and target pairs, which frequently changes.
25 ifndef ADAC
26 ADAC=$(CC)
27 endif
29 # Objects needed only for tasking
30 GNATRTL_TASKING_OBJS= \
31   a-dispat$(objext) \
32   a-dynpri$(objext) \
33   a-interr$(objext) \
34   a-intnam$(objext) \
35   a-reatim$(objext) \
36   a-retide$(objext) \
37   a-rttiev$(objext) \
38   a-synbar$(objext) \
39   a-sytaco$(objext) \
40   a-tasatt$(objext) \
41   a-taside$(objext) \
42   a-tasini$(objext) \
43   a-taster$(objext) \
44   g-boubuf$(objext) \
45   g-boumai$(objext) \
46   g-semaph$(objext) \
47   g-signal$(objext) \
48   g-tastus$(objext) \
49   g-thread$(objext) \
50   s-inmaop$(objext) \
51   s-interr$(objext) \
52   s-intman$(objext) \
53   s-mudido$(objext) \
54   s-osinte$(objext) \
55   s-proinf$(objext) \
56   s-putaim$(objext) \
57   s-solita$(objext) \
58   s-stusta$(objext) \
59   s-taasde$(objext) \
60   s-tadeca$(objext) \
61   s-tadert$(objext) \
62   s-taenca$(objext) \
63   s-taprob$(objext) \
64   s-taprop$(objext) \
65   s-tarest$(objext) \
66   s-tasdeb$(objext) \
67   s-tasinf$(objext) \
68   s-tasini$(objext) \
69   s-taskin$(objext) \
70   s-taspri$(objext) \
71   s-tasque$(objext) \
72   s-tasren$(objext) \
73   s-tasres$(objext) \
74   s-tassta$(objext) \
75   s-tasuti$(objext) \
76   s-tataat$(objext) \
77   s-tpinop$(objext) \
78   s-tpoben$(objext) \
79   s-tpobop$(objext) \
80   s-tposen$(objext) \
81   thread$(objext) \
82   $(EXTRA_GNATRTL_TASKING_OBJS)
84 # Objects that require IEEE Float
85 GNATRTL_ALTIVEC_OBJS= \
86   g-allein$(objext) \
87   g-alleve$(objext) \
88   g-altcon$(objext) \
89   g-altive$(objext) \
90   g-alveop$(objext) \
91   g-alvety$(objext) \
92   g-alvevi$(objext)
94 # Objects needed for non-tasking
95 GNATRTL_NONTASKING_OBJS= \
96   a-assert$(objext) \
97   a-btgbso$(objext) \
98   a-calari$(objext) \
99   a-calcon$(objext) \
100   a-caldel$(objext) \
101   a-calend$(objext) \
102   a-calfor$(objext) \
103   a-catizo$(objext) \
104   a-cbdlli$(objext) \
105   a-cbhama$(objext) \
106   a-cbhase$(objext) \
107   a-cbmutr$(objext) \
108   a-cborma$(objext) \
109   a-cborse$(objext) \
110   a-cbprqu$(objext) \
111   a-cbsyqu$(objext) \
112   a-cdlili$(objext) \
113   a-cgaaso$(objext) \
114   a-cgarso$(objext) \
115   a-cgcaso$(objext) \
116   a-chacon$(objext) \
117   a-chahan$(objext) \
118   a-charac$(objext) \
119   a-chlat1$(objext) \
120   a-chlat9$(objext) \
121   a-chtgbk$(objext) \
122   a-chtgbo$(objext) \
123   a-chtgfk$(objext) \
124   a-chtgfo$(objext) \
125   a-chtgke$(objext) \
126   a-chtgop$(objext) \
127   a-chzla1$(objext) \
128   a-chzla9$(objext) \
129   a-cidlli$(objext) \
130   a-cihama$(objext) \
131   a-cihase$(objext) \
132   a-cimutr$(objext) \
133   a-ciorma$(objext) \
134   a-ciormu$(objext) \
135   a-ciorse$(objext) \
136   a-clrefi$(objext) \
137   a-coboho$(objext) \
138   a-cobove$(objext) \
139   a-cogeso$(objext) \
140   a-cohama$(objext) \
141   a-cohase$(objext) \
142   a-cohata$(objext) \
143   a-coinho$(objext) \
144   a-coinve$(objext) \
145   a-colien$(objext) \
146   a-colire$(objext) \
147   a-comlin$(objext) \
148   a-comutr$(objext) \
149   a-conhel$(objext) \
150   a-contai$(objext) \
151   a-convec$(objext) \
152   a-coorma$(objext) \
153   a-coormu$(objext) \
154   a-coorse$(objext) \
155   a-coprnu$(objext) \
156   a-costso$(objext) \
157   a-coteio$(objext) \
158   a-crbltr$(objext) \
159   a-crbtgk$(objext) \
160   a-crbtgo$(objext) \
161   a-crdlli$(objext) \
162   a-csquin$(objext) \
163   a-cuprqu$(objext) \
164   a-cusyqu$(objext) \
165   a-cwila1$(objext) \
166   a-cwila9$(objext) \
167   a-decima$(objext) \
168   a-dhfina$(objext) \
169   a-diocst$(objext) \
170   a-direct$(objext) \
171   a-direio$(objext) \
172   a-dirval$(objext) \
173   a-einuoc$(objext) \
174   a-elchha$(objext) \
175   a-envvar$(objext) \
176   a-except$(objext) \
177   a-exctra$(objext) \
178   a-finali$(objext) \
179   a-flteio$(objext) \
180   a-fwteio$(objext) \
181   a-fzteio$(objext) \
182   a-inteio$(objext) \
183   a-ioexce$(objext) \
184   a-iteint$(objext) \
185   a-iwteio$(objext) \
186   a-izteio$(objext) \
187   a-lcteio$(objext) \
188   a-lfteio$(objext) \
189   a-lfwtio$(objext) \
190   a-lfztio$(objext) \
191   a-liteio$(objext) \
192   a-liwtio$(objext) \
193   a-liztio$(objext) \
194   a-llctio$(objext) \
195   a-llftio$(objext) \
196   a-llfwti$(objext) \
197   a-llfzti$(objext) \
198   a-llitio$(objext) \
199   a-lliwti$(objext) \
200   a-llizti$(objext) \
201   a-llltio$(objext) \
202   a-lllwti$(objext) \
203   a-lllzti$(objext) \
204   a-locale$(objext) \
205   a-nagefl$(objext) \
206   a-naliop$(objext) \
207   a-nallfl$(objext) \
208   a-nalofl$(objext) \
209   a-nashfl$(objext) \
210   a-nbnbig$(objext) \
211   a-nbnbin$(objext) \
212   a-nbnbre$(objext) \
213   a-ncelfu$(objext) \
214   a-ngcefu$(objext) \
215   a-ngcoar$(objext) \
216   a-ngcoty$(objext) \
217   a-ngelfu$(objext) \
218   a-ngrear$(objext) \
219   a-nlcefu$(objext) \
220   a-nlcoar$(objext) \
221   a-nlcoty$(objext) \
222   a-nlelfu$(objext) \
223   a-nllcar$(objext) \
224   a-nllcef$(objext) \
225   a-nllcty$(objext) \
226   a-nllefu$(objext) \
227   a-nllrar$(objext) \
228   a-nlrear$(objext) \
229   a-nscefu$(objext) \
230   a-nscoty$(objext) \
231   a-nselfu$(objext) \
232   a-nuauco$(objext) \
233   a-nuaufl$(objext) \
234   a-nubinu$(objext) \
235   a-nucoar$(objext) \
236   a-nucoty$(objext) \
237   a-nudira$(objext) \
238   a-nuelfu$(objext) \
239   a-nuflra$(objext) \
240   a-numaux$(objext) \
241   a-numeri$(objext) \
242   a-nurear$(objext) \
243   a-rbtgbk$(objext) \
244   a-rbtgbo$(objext) \
245   a-rbtgso$(objext) \
246   a-sbecin$(objext) \
247   a-sbhcin$(objext) \
248   a-sblcin$(objext) \
249   a-scteio$(objext) \
250   a-secain$(objext) \
251   a-sequio$(objext) \
252   a-sfecin$(objext) \
253   a-sfhcin$(objext) \
254   a-sflcin$(objext) \
255   a-sfteio$(objext) \
256   a-sfwtio$(objext) \
257   a-sfztio$(objext) \
258   a-shcain$(objext) \
259   a-siocst$(objext) \
260   a-siteio$(objext) \
261   a-siwtio$(objext) \
262   a-siztio$(objext) \
263   a-slcain$(objext) \
264   a-ssicst$(objext) \
265   a-ssitio$(objext) \
266   a-ssiwti$(objext) \
267   a-ssizti$(objext) \
268   a-stboha$(objext) \
269   a-stbubo$(objext) \
270   a-stbufi$(objext) \
271   a-stbufo$(objext) \
272   a-stbuun$(objext) \
273   a-stbuut$(objext) \
274   a-stfiha$(objext) \
275   a-stmaco$(objext) \
276   a-storio$(objext) \
277   a-strbou$(objext) \
278   a-stream$(objext) \
279   a-strfix$(objext) \
280   a-strhas$(objext) \
281   a-string$(objext) \
282   a-strmap$(objext) \
283   a-strsea$(objext) \
284   a-strsto$(objext) \
285   a-strsup$(objext) \
286   a-strunb$(objext) \
287   a-ststbo$(objext) \
288   a-ststio$(objext) \
289   a-ststun$(objext) \
290   a-sttebu$(objext) \
291   a-stunau$(objext) \
292   a-stunha$(objext) \
293   a-stuten$(objext) \
294   a-stwibo$(objext) \
295   a-stwifi$(objext) \
296   a-stwiha$(objext) \
297   a-stwima$(objext) \
298   a-stwise$(objext) \
299   a-stwisu$(objext) \
300   a-stwiun$(objext) \
301   a-stzbou$(objext) \
302   a-stzfix$(objext) \
303   a-stzhas$(objext) \
304   a-stzmap$(objext) \
305   a-stzsea$(objext) \
306   a-stzsup$(objext) \
307   a-stzunb$(objext) \
308   a-suecin$(objext) \
309   a-suenco$(objext) \
310   a-suenst$(objext) \
311   a-suewst$(objext) \
312   a-suezst$(objext) \
313   a-suhcin$(objext) \
314   a-sulcin$(objext) \
315   a-suteio$(objext) \
316   a-swbwha$(objext) \
317   a-swfwha$(objext) \
318   a-swmwco$(objext) \
319   a-swunau$(objext) \
320   a-swuwha$(objext) \
321   a-swuwti$(objext) \
322   a-szbzha$(objext) \
323   a-szfzha$(objext) \
324   a-szmzco$(objext) \
325   a-szunau$(objext) \
326   a-szuzha$(objext) \
327   a-szuzti$(objext) \
328   a-tags$(objext) \
329   a-teioed$(objext) \
330   a-textio$(objext) \
331   a-tgdico$(objext) \
332   a-tiboio$(objext) \
333   a-ticoau$(objext) \
334   a-ticoio$(objext) \
335   a-tideau$(objext) \
336   a-tideio$(objext) \
337   a-tienau$(objext) \
338   a-tienio$(objext) \
339   a-tifiau$(objext) \
340   a-tifiio$(objext) \
341   a-tiflau$(objext) \
342   a-tiflio$(objext) \
343   a-tigeau$(objext) \
344   a-tiinau$(objext) \
345   a-tiinio$(objext) \
346   a-timoio$(objext) \
347   a-tiocst$(objext) \
348   a-tirsfi$(objext) \
349   a-titest$(objext) \
350   a-tiunio$(objext) \
351   a-unccon$(objext) \
352   a-uncdea$(objext) \
353   a-undesu$(objext) \
354   a-wichha$(objext) \
355   a-wichun$(objext) \
356   a-widcha$(objext) \
357   a-witeio$(objext) \
358   a-wrstfi$(objext) \
359   a-wtcoau$(objext) \
360   a-wtcoio$(objext) \
361   a-wtcstr$(objext) \
362   a-wtdeau$(objext) \
363   a-wtdeio$(objext) \
364   a-wtedit$(objext) \
365   a-wtenau$(objext) \
366   a-wtenio$(objext) \
367   a-wtfiau$(objext) \
368   a-wtfiio$(objext) \
369   a-wtflau$(objext) \
370   a-wtflio$(objext) \
371   a-wtgeau$(objext) \
372   a-wtinau$(objext) \
373   a-wtinio$(objext) \
374   a-wtmoio$(objext) \
375   a-wttest$(objext) \
376   a-wwboio$(objext) \
377   a-wwunio$(objext) \
378   a-zchara$(objext) \
379   a-zchhan$(objext) \
380   a-zchuni$(objext) \
381   a-zrstfi$(objext) \
382   a-ztcoau$(objext) \
383   a-ztcoio$(objext) \
384   a-ztcstr$(objext) \
385   a-ztdeau$(objext) \
386   a-ztdeio$(objext) \
387   a-ztedit$(objext) \
388   a-ztenau$(objext) \
389   a-ztenio$(objext) \
390   a-ztexio$(objext) \
391   a-ztfiau$(objext) \
392   a-ztfiio$(objext) \
393   a-ztflau$(objext) \
394   a-ztflio$(objext) \
395   a-ztgeau$(objext) \
396   a-ztinau$(objext) \
397   a-ztinio$(objext) \
398   a-ztmoio$(objext) \
399   a-zttest$(objext) \
400   a-zzboio$(objext) \
401   a-zzunio$(objext) \
402   ada$(objext) \
403   calendar$(objext) \
404   directio$(objext) \
405   g-arrspl$(objext) \
406   g-awk$(objext) \
407   g-binenv$(objext) \
408   g-binsea$(objext) \
409   g-brapre$(objext) \
410   g-bubsor$(objext) \
411   g-busora$(objext) \
412   g-busorg$(objext) \
413   g-byorma$(objext) \
414   g-bytswa$(objext) \
415   g-calend$(objext) \
416   g-casuti$(objext) \
417   g-catiio$(objext) \
418   g-cgi$(objext)    \
419   g-cgicoo$(objext) \
420   g-cgideb$(objext) \
421   g-comlin$(objext) \
422   g-comver$(objext) \
423   g-crc32$(objext) \
424   g-ctrl_c$(objext) \
425   g-curexc$(objext) \
426   g-debpoo$(objext) \
427   g-debuti$(objext) \
428   g-decstr$(objext) \
429   g-deutst$(objext) \
430   g-diopit$(objext) \
431   g-dirope$(objext) \
432   g-dynhta$(objext) \
433   g-dyntab$(objext) \
434   g-encstr$(objext) \
435   g-enutst$(objext) \
436   g-excact$(objext) \
437   g-except$(objext) \
438   g-exctra$(objext) \
439   g-expect$(objext) \
440   g-exptty$(objext) \
441   g-flocon$(objext) \
442   g-forstr$(objext) \
443   g-gfmafu$(objext) \
444   g-graphs$(objext) \
445   g-heasor$(objext) \
446   g-hesora$(objext) \
447   g-hesorg$(objext) \
448   g-htable$(objext) \
449   g-io$(objext) \
450   g-io_aux$(objext) \
451   g-lists$(objext) \
452   g-locfil$(objext) \
453   g-mbdira$(objext) \
454   g-mbflra$(objext) \
455   g-md5$(objext) \
456   g-memdum$(objext) \
457   g-moreex$(objext) \
458   g-os_lib$(objext) \
459   g-pehage$(objext) \
460   g-rannum$(objext) \
461   g-regexp$(objext) \
462   g-regpat$(objext) \
463   g-rewdat$(objext) \
464   g-sechas$(objext) \
465   g-sehamd$(objext) \
466   g-sehash$(objext) \
467   g-sercom$(objext) \
468   g-sestin$(objext) \
469   g-sets$(objext) \
470   g-sha1$(objext) \
471   g-sha224$(objext) \
472   g-sha256$(objext) \
473   g-sha384$(objext) \
474   g-sha512$(objext) \
475   g-shsh32$(objext) \
476   g-shsh64$(objext) \
477   g-shshco$(objext) \
478   g-souinf$(objext) \
479   g-spchge$(objext) \
480   g-speche$(objext) \
481   g-spipat$(objext) \
482   g-spitbo$(objext) \
483   g-sptabo$(objext) \
484   g-sptain$(objext) \
485   g-sptavs$(objext) \
486   g-strhas$(objext) \
487   g-string$(objext) \
488   g-strspl$(objext) \
489   g-table$(objext) \
490   g-tasloc$(objext) \
491   g-timsta$(objext) \
492   g-traceb$(objext) \
493   g-trasym$(objext) \
494   g-tty$(objext) \
495   g-u3spch$(objext) \
496   g-utf_32$(objext) \
497   g-wispch$(objext) \
498   g-wistsp$(objext) \
499   g-zspche$(objext) \
500   g-zstspl$(objext) \
501   gnat$(objext) \
502   i-c$(objext) \
503   i-cexten$(objext) \
504   i-cobol$(objext) \
505   i-cpoint$(objext) \
506   i-cstrea$(objext) \
507   i-cstrin$(objext) \
508   i-fortra$(objext) \
509   i-pacdec$(objext) \
510   interfac$(objext) \
511   ioexcept$(objext) \
512   machcode$(objext) \
513   s-addima$(objext) \
514   s-addope$(objext) \
515   s-aoinar$(objext) \
516   s-aomoar$(objext) \
517   s-aotase$(objext) \
518   s-aridou$(objext) \
519   s-arit32$(objext) \
520   s-arit64$(objext) \
521   s-assert$(objext) \
522   s-atacco$(objext) \
523   s-atocou$(objext) \
524   s-atoope$(objext) \
525   s-atopex$(objext) \
526   s-atopri$(objext) \
527   s-auxdec$(objext) \
528   s-bignum$(objext) \
529   s-bitfie$(objext) \
530   s-bitops$(objext) \
531   s-bituti$(objext) \
532   s-boarop$(objext) \
533   s-boustr$(objext) \
534   s-bytswa$(objext) \
535   s-carsi8$(objext) \
536   s-carun8$(objext) \
537   s-casi16$(objext) \
538   s-casi32$(objext) \
539   s-casi64$(objext) \
540   s-casuti$(objext) \
541   s-caun16$(objext) \
542   s-caun32$(objext) \
543   s-caun64$(objext) \
544   s-chepoo$(objext) \
545   s-commun$(objext) \
546   s-conca2$(objext) \
547   s-conca3$(objext) \
548   s-conca4$(objext) \
549   s-conca5$(objext) \
550   s-conca6$(objext) \
551   s-conca7$(objext) \
552   s-conca8$(objext) \
553   s-conca9$(objext) \
554   s-crc32$(objext)  \
555   s-crtl$(objext)   \
556   s-dfmkio$(objext) \
557   s-dfmopr$(objext) \
558   s-dgmgop$(objext) \
559   s-diflio$(objext) \
560   s-diflmk$(objext) \
561   s-digemk$(objext) \
562   s-diinio$(objext) \
563   s-dilomk$(objext) \
564   s-dim$(objext)    \
565   s-dimkio$(objext) \
566   s-dimmks$(objext) \
567   s-direio$(objext) \
568   s-dlmkio$(objext) \
569   s-dlmopr$(objext) \
570   s-dmotpr$(objext) \
571   s-dourea$(objext) \
572   s-dsaser$(objext) \
573   s-elaall$(objext) \
574   s-excdeb$(objext) \
575   s-except$(objext) \
576   s-exctab$(objext) \
577   s-exctra$(objext) \
578   s-exnflt$(objext) \
579   s-exnint$(objext) \
580   s-exnlfl$(objext) \
581   s-exnllf$(objext) \
582   s-exnlli$(objext) \
583   s-expint$(objext) \
584   s-explli$(objext) \
585   s-expllu$(objext) \
586   s-expmod$(objext) \
587   s-exponn$(objext) \
588   s-exponr$(objext) \
589   s-expont$(objext) \
590   s-exponu$(objext) \
591   s-expuns$(objext) \
592   s-fatflt$(objext) \
593   s-fatgen$(objext) \
594   s-fatlfl$(objext) \
595   s-fatllf$(objext) \
596   s-ficobl$(objext) \
597   s-filatt$(objext) \
598   s-fileio$(objext) \
599   s-finmas$(objext) \
600   s-finroo$(objext) \
601   s-flocon$(objext) \
602   s-fode32$(objext) \
603   s-fode64$(objext) \
604   s-fofi32$(objext) \
605   s-fofi64$(objext) \
606   s-fore_d$(objext) \
607   s-fore_f$(objext) \
608   s-forrea$(objext) \
609   s-gearop$(objext) \
610   s-genbig$(objext) \
611   s-geveop$(objext) \
612   s-gloloc$(objext) \
613   s-htable$(objext) \
614   s-imageb$(objext) \
615   s-imaged$(objext) \
616   s-imagef$(objext) \
617   s-imagei$(objext) \
618   s-imagen$(objext) \
619   s-imager$(objext) \
620   s-imageu$(objext) \
621   s-imagew$(objext) \
622   s-imde32$(objext) \
623   s-imde64$(objext) \
624   s-imen16$(objext) \
625   s-imen32$(objext) \
626   s-imenu8$(objext) \
627   s-imfi32$(objext) \
628   s-imfi64$(objext) \
629   s-imgbiu$(objext) \
630   s-imgboo$(objext) \
631   s-imgcha$(objext) \
632   s-imgflt$(objext) \
633   s-imgint$(objext) \
634   s-imglfl$(objext) \
635   s-imgllb$(objext) \
636   s-imgllf$(objext) \
637   s-imglli$(objext) \
638   s-imgllu$(objext) \
639   s-imgllw$(objext) \
640   s-imgrea$(objext) \
641   s-imguns$(objext) \
642   s-imguti$(objext) \
643   s-imgwch$(objext) \
644   s-imgwiu$(objext) \
645   s-io$(objext)     \
646   s-llflex$(objext) \
647   s-maccod$(objext) \
648   s-mantis$(objext) \
649   s-mastop$(objext) \
650   s-memcop$(objext) \
651   s-memory$(objext) \
652   s-multip$(objext) \
653   s-os_lib$(objext) \
654   s-oscons$(objext) \
655   s-osprim$(objext) \
656   s-pack03$(objext) \
657   s-pack05$(objext) \
658   s-pack06$(objext) \
659   s-pack07$(objext) \
660   s-pack09$(objext) \
661   s-pack10$(objext) \
662   s-pack11$(objext) \
663   s-pack12$(objext) \
664   s-pack13$(objext) \
665   s-pack14$(objext) \
666   s-pack15$(objext) \
667   s-pack17$(objext) \
668   s-pack18$(objext) \
669   s-pack19$(objext) \
670   s-pack20$(objext) \
671   s-pack21$(objext) \
672   s-pack22$(objext) \
673   s-pack23$(objext) \
674   s-pack24$(objext) \
675   s-pack25$(objext) \
676   s-pack26$(objext) \
677   s-pack27$(objext) \
678   s-pack28$(objext) \
679   s-pack29$(objext) \
680   s-pack30$(objext) \
681   s-pack31$(objext) \
682   s-pack33$(objext) \
683   s-pack34$(objext) \
684   s-pack35$(objext) \
685   s-pack36$(objext) \
686   s-pack37$(objext) \
687   s-pack38$(objext) \
688   s-pack39$(objext) \
689   s-pack40$(objext) \
690   s-pack41$(objext) \
691   s-pack42$(objext) \
692   s-pack43$(objext) \
693   s-pack44$(objext) \
694   s-pack45$(objext) \
695   s-pack46$(objext) \
696   s-pack47$(objext) \
697   s-pack48$(objext) \
698   s-pack49$(objext) \
699   s-pack50$(objext) \
700   s-pack51$(objext) \
701   s-pack52$(objext) \
702   s-pack53$(objext) \
703   s-pack54$(objext) \
704   s-pack55$(objext) \
705   s-pack56$(objext) \
706   s-pack57$(objext) \
707   s-pack58$(objext) \
708   s-pack59$(objext) \
709   s-pack60$(objext) \
710   s-pack61$(objext) \
711   s-pack62$(objext) \
712   s-pack63$(objext) \
713   s-parame$(objext) \
714   s-parint$(objext) \
715   s-pehage$(objext) \
716   s-pooglo$(objext) \
717   s-pooloc$(objext) \
718   s-poosiz$(objext) \
719   s-powflt$(objext) \
720   s-powlfl$(objext) \
721   s-powllf$(objext) \
722   s-purexc$(objext) \
723   s-putima$(objext) \
724   s-rannum$(objext) \
725   s-ransee$(objext) \
726   s-regexp$(objext) \
727   s-regpat$(objext) \
728   s-resfil$(objext) \
729   s-restri$(objext) \
730   s-retsta$(objext) \
731   s-rident$(objext) \
732   s-rpc$(objext)    \
733   s-scaval$(objext) \
734   s-secsta$(objext) \
735   s-sequio$(objext) \
736   s-shabig$(objext) \
737   s-shasto$(objext) \
738   s-soflin$(objext) \
739   s-soliin$(objext) \
740   s-spark$(objext) \
741   s-spcuop$(objext) \
742   s-spsufi$(objext) \
743   s-stache$(objext) \
744   s-stalib$(objext) \
745   s-statxd$(objext) \
746   s-stausa$(objext) \
747   s-stoele$(objext) \
748   s-stopoo$(objext) \
749   s-stposu$(objext) \
750   s-stratt$(objext) \
751   s-strhas$(objext) \
752   s-string$(objext) \
753   s-ststop$(objext) \
754   s-tasloc$(objext) \
755   s-traceb$(objext) \
756   s-traent$(objext) \
757   s-trasym$(objext) \
758   s-unstyp$(objext) \
759   s-utf_32$(objext) \
760   s-vade32$(objext) \
761   s-vade64$(objext) \
762   s-vaen16$(objext) \
763   s-vaen32$(objext) \
764   s-vaenu8$(objext) \
765   s-vafi32$(objext) \
766   s-vafi64$(objext) \
767   s-vaispe$(objext) \
768   s-valboo$(objext) \
769   s-valcha$(objext) \
770   s-valflt$(objext) \
771   s-valint$(objext) \
772   s-vallfl$(objext) \
773   s-valllf$(objext) \
774   s-vallli$(objext) \
775   s-valllu$(objext) \
776   s-valrea$(objext) \
777   s-valspe$(objext) \
778   s-valued$(objext) \
779   s-valuef$(objext) \
780   s-valuei$(objext) \
781   s-valuen$(objext) \
782   s-valuer$(objext) \
783   s-valueu$(objext) \
784   s-valuns$(objext) \
785   s-valuti$(objext) \
786   s-valwch$(objext) \
787   s-vauspe$(objext) \
788   s-veboop$(objext) \
789   s-vector$(objext) \
790   s-vercon$(objext) \
791   s-vs_int$(objext) \
792   s-vs_lli$(objext) \
793   s-vs_llu$(objext) \
794   s-vs_uns$(objext) \
795   s-wchcnv$(objext) \
796   s-wchcon$(objext) \
797   s-wchjis$(objext) \
798   s-wchstw$(objext) \
799   s-wchwts$(objext) \
800   s-widboo$(objext) \
801   s-widcha$(objext) \
802   s-widenu$(objext) \
803   s-widint$(objext) \
804   s-widlli$(objext) \
805   s-widllu$(objext) \
806   s-widthi$(objext) \
807   s-widthu$(objext) \
808   s-widuns$(objext) \
809   s-widwch$(objext) \
810   s-wwdcha$(objext) \
811   s-wwdenu$(objext) \
812   s-wwdwch$(objext) \
813   sequenio$(objext) \
814   system$(objext) \
815   text_io$(objext) \
816   unchconv$(objext) \
817   unchdeal$(objext) \
818   $(GNATRTL_ALTIVEC_OBJS) \
819   $(GNATRTL_SOCKETS_OBJS) \
820   $(EXTRA_GNATRTL_NONTASKING_OBJS)
822 # LIBGNAT_TARGET_PAIRS is a list of pairs of filenames.
823 # The members of each pair must be separated by a '<' and no whitespace.
824 # Each pair must be separated by some amount of whitespace from the following
825 # pair.
827 # Non-tasking case:
829 LIBGNAT_TARGET_PAIRS = \
830 a-intnam.ads<libgnarl/a-intnam__dummy.ads \
831 s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
832 s-intman.adb<libgnarl/s-intman__dummy.adb \
833 s-osinte.ads<libgnarl/s-osinte__dummy.ads \
834 s-osprim.adb<libgnat/s-osprim__posix.adb \
835 s-taprop.adb<libgnarl/s-taprop__dummy.adb \
836 s-taspri.ads<libgnarl/s-taspri__dummy.ads
838 # When using the GCC exception handling mechanism, we need to use an
839 # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
841 EH_MECHANISM=
843 # Compilation options for the GCC-SJLJ RTS. This may be augmented for
844 # target specific contexts, e.g. to add -fno-omit-frame-pointer for backtrace
845 # computations.
846 GNATLIBCFLAGS_FOR_GCCSJLJ=-fsjlj
848 # Default shared object option. Note that we rely on the fact that the "soname"
849 # option will always be present and last in this flag, so that we can have
850 # $(SO_OPTS)libgnat-x.xx
852 SO_OPTS = -Wl,-soname,
854 # Default gnatlib-shared target.
855 # By default, equivalent to gnatlib.
856 # Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
857 # target when supported.
858 GNATLIB_SHARED = gnatlib
860 # By default, build socket support units. On platforms that do not support
861 # sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
862 # to LIBGNAT_TARGET_PAIRS.
864 GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
865   g-soliop$(objext) g-sothco$(objext) g-socpol$(objext) g-spogwa$(objext)
867 DUMMY_SOCKETS_TARGET_PAIRS = \
868   g-socket.adb<libgnat/g-socket__dummy.adb \
869   g-socket.ads<libgnat/g-socket__dummy.ads \
870   g-socthi.adb<libgnat/g-socthi__dummy.adb \
871   g-socthi.ads<libgnat/g-socthi__dummy.ads \
872   g-sothco.adb<libgnat/g-sothco__dummy.adb \
873   g-sothco.ads<libgnat/g-sothco__dummy.ads \
874   g-socpol.adb<libgnat/g-socpol__dummy.adb \
875   g-socpol.ads<libgnat/g-socpol__dummy.ads
877 # On platforms where atomic increment/decrement operations are supported,
878 # special version of Ada.Strings.Unbounded package can be used.
880 ATOMICS_TARGET_PAIRS = \
881   a-coinho.adb<libgnat/a-coinho__shared.adb \
882   a-coinho.ads<libgnat/a-coinho__shared.ads \
883   a-stunau.adb<libgnat/a-stunau__shared.adb \
884   a-suteio.adb<libgnat/a-suteio__shared.adb \
885   a-strunb.ads<libgnat/a-strunb__shared.ads \
886   a-strunb.adb<libgnat/a-strunb__shared.adb \
887   a-stwiun.adb<libgnat/a-stwiun__shared.adb \
888   a-stwiun.ads<libgnat/a-stwiun__shared.ads \
889   a-swunau.adb<libgnat/a-swunau__shared.adb \
890   a-swuwti.adb<libgnat/a-swuwti__shared.adb \
891   a-stzunb.adb<libgnat/a-stzunb__shared.adb \
892   a-stzunb.ads<libgnat/a-stzunb__shared.ads \
893   a-szunau.adb<libgnat/a-szunau__shared.adb \
894   a-szuzti.adb<libgnat/a-szuzti__shared.adb
896 ATOMICS_BUILTINS_TARGET_PAIRS = \
897   s-atocou.adb<libgnat/s-atocou__builtin.adb
899 # Special version of units for x86 and x86-64 platforms
901 X86_TARGET_PAIRS = \
902   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
903   s-atocou.adb<libgnat/s-atocou__builtin.adb
905 X86_64_TARGET_PAIRS = \
906   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
907   s-atocou.adb<libgnat/s-atocou__builtin.adb
909 # Special version of units for platforms with SIMD math functions
911 SIMD_PATH_TARGET_PAIRS = \
912   a-nalofl.ads<libgnat/a-nalofl__simd.ads \
913   a-nuaufl.ads<libgnat/a-nuaufl__simd.ads
915 # Implementation of symbolic traceback based on DWARF
917 TRASYM_DWARF_UNIX_PAIRS = \
918   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
919   s-mmosin.ads<libgnat/s-mmosin__unix.ads \
920   s-mmosin.adb<libgnat/s-mmosin__unix.adb \
921   s-mmauni.ads<libgnat/s-mmauni__long.ads
923 TRASYM_DWARF_MINGW_PAIRS = \
924   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
925   s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
926   s-mmosin.adb<libgnat/s-mmosin__mingw.adb
928 TRASYM_DWARF_COMMON_OBJS = \
929   s-objrea$(objext) \
930   s-dwalin$(objext) \
931   s-mmap$(objext)   \
932   s-mmosin$(objext)
934 TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)
936 TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
938 # Support for 128-bit types
940 GNATRTL_128BIT_PAIRS = \
941   a-decima.ads<libgnat/a-decima__128.ads \
942   a-tideio.adb<libgnat/a-tideio__128.adb \
943   a-tifiio.adb<libgnat/a-tifiio__128.adb \
944   a-tiinio.adb<libgnat/a-tiinio__128.adb \
945   a-timoio.adb<libgnat/a-timoio__128.adb \
946   a-wtdeio.adb<libgnat/a-wtdeio__128.adb \
947   a-wtfiio.adb<libgnat/a-wtfiio__128.adb \
948   a-wtinio.adb<libgnat/a-wtinio__128.adb \
949   a-wtmoio.adb<libgnat/a-wtmoio__128.adb \
950   a-ztdeio.adb<libgnat/a-ztdeio__128.adb \
951   a-ztfiio.adb<libgnat/a-ztfiio__128.adb \
952   a-ztinio.adb<libgnat/a-ztinio__128.adb \
953   a-ztmoio.adb<libgnat/a-ztmoio__128.adb \
954   i-cexten.ads<libgnat/i-cexten__128.ads \
955   s-scaval.ads<libgnat/s-scaval__128.ads \
956   s-scaval.adb<libgnat/s-scaval__128.adb
958 GNATRTL_128BIT_OBJS = \
959   s-arit128$(objext) \
960   s-casi128$(objext) \
961   s-caun128$(objext) \
962   s-exnllli$(objext) \
963   s-expllli$(objext) \
964   s-explllu$(objext) \
965   s-fode128$(objext) \
966   s-fofi128$(objext) \
967   s-imde128$(objext) \
968   s-imfi128$(objext) \
969   s-imglllb$(objext) \
970   s-imgllli$(objext) \
971   s-imglllu$(objext) \
972   s-imglllw$(objext) \
973   s-pack65$(objext)  \
974   s-pack66$(objext)  \
975   s-pack67$(objext)  \
976   s-pack68$(objext)  \
977   s-pack69$(objext)  \
978   s-pack70$(objext)  \
979   s-pack71$(objext)  \
980   s-pack72$(objext)  \
981   s-pack73$(objext)  \
982   s-pack74$(objext)  \
983   s-pack75$(objext)  \
984   s-pack76$(objext)  \
985   s-pack77$(objext)  \
986   s-pack78$(objext)  \
987   s-pack79$(objext)  \
988   s-pack80$(objext)  \
989   s-pack81$(objext)  \
990   s-pack82$(objext)  \
991   s-pack83$(objext)  \
992   s-pack84$(objext)  \
993   s-pack85$(objext)  \
994   s-pack86$(objext)  \
995   s-pack87$(objext)  \
996   s-pack88$(objext)  \
997   s-pack89$(objext)  \
998   s-pack90$(objext)  \
999   s-pack91$(objext)  \
1000   s-pack92$(objext)  \
1001   s-pack93$(objext)  \
1002   s-pack94$(objext)  \
1003   s-pack95$(objext)  \
1004   s-pack96$(objext)  \
1005   s-pack97$(objext)  \
1006   s-pack98$(objext)  \
1007   s-pack99$(objext)  \
1008   s-pack100$(objext) \
1009   s-pack101$(objext) \
1010   s-pack102$(objext) \
1011   s-pack103$(objext) \
1012   s-pack104$(objext) \
1013   s-pack105$(objext) \
1014   s-pack106$(objext) \
1015   s-pack107$(objext) \
1016   s-pack108$(objext) \
1017   s-pack109$(objext) \
1018   s-pack110$(objext) \
1019   s-pack111$(objext) \
1020   s-pack112$(objext) \
1021   s-pack113$(objext) \
1022   s-pack114$(objext) \
1023   s-pack115$(objext) \
1024   s-pack116$(objext) \
1025   s-pack117$(objext) \
1026   s-pack118$(objext) \
1027   s-pack119$(objext) \
1028   s-pack120$(objext) \
1029   s-pack121$(objext) \
1030   s-pack122$(objext) \
1031   s-pack123$(objext) \
1032   s-pack124$(objext) \
1033   s-pack125$(objext) \
1034   s-pack126$(objext) \
1035   s-pack127$(objext) \
1036   s-vade128$(objext) \
1037   s-vafi128$(objext) \
1038   s-valllli$(objext) \
1039   s-vallllu$(objext) \
1040   s-vsllli$(objext) \
1041   s-vslllu$(objext) \
1042   s-widllli$(objext) \
1043   s-widlllu$(objext)
1045 # Shared library version
1046 LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(GNAT_SRC)/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
1048 # Additional object files from C source to be added to libgnat.
1049 EXTRA_LIBGNAT_OBJS=
1051 # Additional C source files to be added to libgnat without corresponding
1052 # object file (#included files). This should include at least the GNAT
1053 # specific header files required to rebuild the runtime library from sources.
1054 EXTRA_LIBGNAT_SRCS=
1056 # Additional object files from Ada sources to be added in libgnat
1057 EXTRA_GNATRTL_NONTASKING_OBJS=
1059 # Additional object files from Ada sources to be added in libgnarl
1060 EXTRA_GNATRTL_TASKING_OBJS=
1062 # Subsets of extra libgnat sources that always go together
1063 VX_SIGTRAMP_EXTRA_SRCS=sigtramp.h sigtramp-vxworks-target.h
1065 # Additional object files that should go in the same directory as libgnat,
1066 # aside the library itself. Typically useful for crtbegin/crtend kind of files.
1067 EXTRA_ADALIB_OBJS=
1069 # GCC spec files to be installed in $(libsubdir), so --specs=<spec-filename>
1070 # finds them at runtime.
1071 GCC_SPEC_FILES=
1073 # $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT.
1074 # $(strip STRING) removes leading and trailing spaces from STRING.
1075 # If what's left is null then it's a match.
1077 # PowerPC VxWorks6 and VxWorks7
1078 ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
1080   ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
1081      ARCH_STR=ppc64
1082   else
1083      ARCH_STR=ppc
1084   endif
1086   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
1087   SVX=system-$(VX)
1089   LIBGNAT_TARGET_PAIRS = \
1090   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1091   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
1092   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
1093   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
1094   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
1095   s-inmaop.adb<libgnarl/s-inmaop__hwint.adb \
1096   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1097   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1098   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1099   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1100   s-osprim.adb<libgnat/s-osprim__posix.adb \
1101   s-parame.ads<libgnat/s-parame__vxworks.ads \
1102   s-parame.adb<libgnat/s-parame__vxworks.adb \
1103   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1104   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1105   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1106   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
1107   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1108   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1109   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
1110   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1111   $(ATOMICS_TARGET_PAIRS) \
1112   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1114   ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
1115     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1116     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1117   endif
1119   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1121   EH_MECHANISM=-gcc
1123   # The rtp and kernel sections must be retained for the sake of ppc-vx6
1124   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
1125     LIBGNAT_TARGET_PAIRS += \
1126     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1127     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
1128     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
1129     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp.ads
1131   else
1132     ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
1133       LIBGNAT_TARGET_PAIRS += \
1134       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1135       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1136       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1137       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1138       system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
1140       EXTRA_LIBGNAT_OBJS+=affinity.o
1141     else
1142       ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
1143         LIBGNAT_TARGET_PAIRS += \
1144         s-interr.adb<libgnarl/s-interr__vxworks.adb \
1145         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1146         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1147         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1148         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1149         system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
1151         EXTRA_LIBGNAT_OBJS+=affinity.o
1152       else
1153         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
1154           LIBGNAT_TARGET_PAIRS += \
1155           s-interr.adb<libgnarl/s-interr__vxworks.adb \
1156           s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1157           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1158           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
1159           system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
1160         else
1161           RTSERR = $(error NO SUCH RUNTIME)
1162         endif
1163       endif
1164       EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
1165     endif
1166   endif
1168   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1169   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1171   EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o
1173   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1175   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
1176     ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
1177       GCC_SPEC_FILES+=vxworks7-ppc64-rtp-base-link.spec
1178     else
1179       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1180     endif
1181   else
1182     GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
1183     GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
1184   endif
1185 endif
1187 # x86/x86_64 VxWorks7
1188 ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
1190   LIBGNAT_TARGET_PAIRS= \
1191   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1192   i-vxwork.ads<libgnat/i-vxwork__x86.ads \
1193   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
1194   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
1195   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
1196   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1197   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1198   s-inmaop.adb<libgnarl/s-inmaop__hwint.adb \
1199   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1200   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1201   s-osprim.adb<libgnat/s-osprim__posix.adb \
1202   s-parame.ads<libgnat/s-parame__vxworks.ads \
1203   s-parame.adb<libgnat/s-parame__vxworks.adb \
1204   s-stchop.ads<libgnat/s-stchop__limit.ads \
1205   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1206   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1207   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1208   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1209   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
1210   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1211   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1212   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
1213   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1214   $(ATOMICS_TARGET_PAIRS)
1216   ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
1217      X86CPU=x86_64
1218      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
1219      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1220      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1221   else
1222      X86CPU=x86
1223      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1224   endif
1226   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1228   EH_MECHANISM=-gcc
1230   # The CPU setting for VxSim varies with the
1231   # host (Windows or Linux)
1232   # runtime (rtp or kernel)
1233   # -------------------------------------------------------------
1234   #                                     vx7
1235   # Windows (host_os = mingw32)
1236   #     kernel                          SIMNT
1237   #     rtp                             SIMNT
1238   # Linux (host_os = linux-gnu)
1239   #     kernel                          SIMLINUX
1240   #     rtp                             SIMLINUX
1241   # -------------------------------------------------------------
1242   # It is overridden by VXSIM_CPU only in files init-vxsim.c and
1243   # sigtramp-vxworks-vxsim.c which contain functions determined at
1244   # runtime to be called if a program is running on VxSim vs real hardware
1245   # (due to differences in signal context for unwinding).
1247   ifeq ($(strip $(filter-out linux%,$(host_os))),)
1248     # Linux
1249     VXSIM_CPU = SIMLINUX
1250   else
1251     # Windows
1252     VXSIM_CPU = SIMNT
1253   endif
1255   GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
1257   ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
1258     LIBGNAT_TARGET_PAIRS += \
1259     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1260     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1261     s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1262     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1263     system.ads<libgnat/system-vxworks7-$(X86CPU)-rtp-smp.ads
1265     EXTRA_LIBGNAT_OBJS+=affinity.o
1266   else
1267     ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
1268       LIBGNAT_TARGET_PAIRS += \
1269       s-interr.adb<libgnarl/s-interr__vxworks.adb \
1270       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1271       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1272       s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1273       s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1274       system.ads<libgnat/system-vxworks7-$(X86CPU)-kernel.ads
1276       EXTRA_LIBGNAT_OBJS+=affinity.o
1277     else
1278       RTSERR = $(error NO SUCH RUNTIME)
1279     endif
1281     EXTRA_GNATRTL_NONTASKING_OBJS += i-vxinco.o i-vxwork.o i-vxwoio.o
1282   endif
1284   EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
1285   EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o
1287   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1289   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1290   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1292   GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
1293 endif
1295 # ARM and Aarch64 VxWorks7
1296 ifeq ($(strip $(filter-out aarch64 arm wrs vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
1298   LIBGNAT_TARGET_PAIRS = \
1299   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1300   a-naliop.ads<libgnat/a-naliop__nolibm.ads \
1301   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
1302   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
1303   s-inmaop.adb<libgnarl/s-inmaop__hwint.adb \
1304   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1305   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1306   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1307   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1308   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1309   s-osprim.adb<libgnat/s-osprim__posix.adb \
1310   s-parame.ads<libgnat/s-parame__vxworks.ads \
1311   s-parame.adb<libgnat/s-parame__vxworks.adb \
1312   s-stchop.ads<libgnat/s-stchop__limit.ads \
1313   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1314   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1315   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1316   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1317   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1318   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1319   g-sopowa.adb<libgnat/g-sopowa__posix.adb \
1320   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1321   $(ATOMICS_TARGET_PAIRS) \
1322   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1324   ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
1325     ARCH_STR=aarch64
1326     EH_MECHANISM=-gcc
1327     SIGTRAMP_OBJ=sigtramp-vxworks.o
1328     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS) \
1329       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1330       s-dorepr.adb<libgnat/s-dorepr__fma.adb
1331     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1332   else
1333     ARCH_STR=arm
1334     EH_MECHANISM=-arm
1335     SIGTRAMP_OBJ=sigtramp-armvxworks.o
1336   endif
1338   LIBGNAT_TARGET_PAIRS += s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads
1340   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1342   ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
1343     LIBGNAT_TARGET_PAIRS += \
1344     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1345     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1346     s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1347     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1348     system.ads<libgnat/system-vxworks7-$(ARCH_STR)-rtp-smp.ads
1350     EXTRA_LIBGNAT_OBJS+=affinity.o
1352     EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1353     EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1354   else
1355     ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
1356       LIBGNAT_TARGET_PAIRS += \
1357       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1358       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1359       s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1360       s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1361       system.ads<libgnat/system-vxworks7-$(ARCH_STR).ads
1363       EXTRA_LIBGNAT_OBJS+=affinity.o
1365       EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1366       EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1367     else
1368       RTSERR = $(error NO SUCH RUNTIME)
1369     endif
1370   endif
1372   EXTRA_GNATRTL_NONTASKING_OBJS += i-vxwork.o i-vxwoio.o s-stchop.o
1373   EXTRA_GNATRTL_TASKING_OBJS += i-vxinco.o s-vxwork.o s-vxwext.o
1375   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1377   GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1378 endif
1380 # ARM android
1381 ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
1382   LIBGNAT_TARGET_PAIRS = \
1383   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1384   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1385   s-intman.adb<libgnarl/s-intman__android.adb \
1386   s-linux.ads<libgnarl/s-linux__android.ads \
1387   s-osinte.adb<libgnarl/s-osinte__android.adb \
1388   s-osinte.ads<libgnarl/s-osinte__android.ads \
1389   s-osprim.adb<libgnat/s-osprim__posix.adb \
1390   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1391   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1392   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1393   $(ATOMICS_TARGET_PAIRS) \
1394   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1395   system.ads<libgnat/system-linux-arm.ads
1397   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1399   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1400   EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
1401   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1402   EH_MECHANISM=-arm
1403   THREADSLIB =
1404   GNATLIB_SHARED = gnatlib-shared-dual
1405   LIBRARY_VERSION := $(LIB_VERSION)
1406 endif
1408 # ARM and AARCH64 QNX
1409 ifeq ($(strip $(filter-out arm aarch64 %qnx,$(target_cpu) $(target_os))),)
1410   LIBGNAT_TARGET_PAIRS = \
1411   a-intnam.ads<libgnarl/a-intnam__qnx.ads \
1412   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1413   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1414   s-intman.adb<libgnarl/s-intman__qnx.adb \
1415   s-osinte.adb<libgnarl/s-osinte__qnx.adb \
1416   s-osinte.ads<libgnarl/s-osinte__qnx.ads \
1417   s-osprim.adb<libgnat/s-osprim__posix.adb \
1418   s-qnx.ads<libgnarl/s-qnx.ads \
1419   s-taprop.adb<libgnarl/s-taprop__qnx.adb \
1420   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1421   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1422   g-soliop.ads<libgnat/g-soliop__qnx.ads \
1423   s-parame.adb<libgnat/s-parame__qnx.adb \
1424   $(ATOMICS_TARGET_PAIRS) \
1425   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1426   system.ads<libgnat/system-qnx-arm.ads
1428   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1430   EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
1431   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1432      EH_MECHANISM=-arm
1433      SIGTRAMP_OBJ=sigtramp-arm-qnx.o
1434   else
1435      EH_MECHANISM=-gcc
1436      SIGTRAMP_OBJ=sigtramp-qnx.o
1437      # "fma*" instructions not available for ARM fpu=vfpv3
1438      # but not an issue on AARCH64.
1439      LIBGNAT_TARGET_PAIRS += \
1440        s-dorepr.adb<libgnat/s-dorepr__fma.adb
1441      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1442      EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
1443   endif
1444   GNATLIB_SHARED = gnatlib-shared-dual
1445   EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1446   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1448   SO_OPTS= -shared-libgcc -Wl,-soname,
1449   MISCLIB= -lsocket
1450   THREADSLIB=
1451   LIBRARY_VERSION := $(LIB_VERSION)
1452 endif
1454 # SPARC Solaris
1455 ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
1456   LIBGNAT_TARGET_PAIRS = \
1457   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1458   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1459   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1460   s-intman.adb<libgnarl/s-intman__solaris.adb \
1461   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1462   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1463   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1464   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1465   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1466   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1467   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1468   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1469   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1470   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1471   $(TRASYM_DWARF_UNIX_PAIRS) \
1472   $(ATOMICS_TARGET_PAIRS) \
1473   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1474   system.ads<libgnat/system-solaris-sparc.ads
1476   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1478   ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
1479     ifneq ($(strip $(MULTISUBDIR)),/sparcv8plus)
1480       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1481       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1482     endif
1483   else
1484     ifeq ($(strip $(MULTISUBDIR)),/sparcv9)
1485       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1486       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1487     endif
1488   endif
1490   EH_MECHANISM=-gcc
1491   MISCLIB = -lnsl -lsocket
1492   SO_OPTS = -Wl,-h,
1493   GNATLIB_SHARED = gnatlib-shared-dual
1494   GMEM_LIB = gmemlib
1495   LIBRARY_VERSION := $(LIB_VERSION)
1496 endif
1498 # x86 and x86-64 Solaris
1499 ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
1500   LIBGNAT_TARGET_PAIRS_COMMON = \
1501   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1502   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1503   s-intman.adb<libgnarl/s-intman__solaris.adb \
1504   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1505   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1506   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1507   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1508   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1509   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1510   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1511   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1512   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1513   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1514   $(TRASYM_DWARF_UNIX_PAIRS) \
1515   $(ATOMICS_TARGET_PAIRS) \
1516   system.ads<libgnat/system-solaris-x86.ads
1518   ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
1519     ifeq ($(strip $(MULTISUBDIR)),/amd64)
1520       LIBGNAT_TARGET_PAIRS = \
1521       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1522       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1523       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1524     else
1525       LIBGNAT_TARGET_PAIRS = \
1526       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1527     endif
1528   else
1529     ifeq ($(strip $(MULTISUBDIR)),/32)
1530       LIBGNAT_TARGET_PAIRS = \
1531       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1532     else
1533       LIBGNAT_TARGET_PAIRS = \
1534       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1535       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1536       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1537     endif
1538   endif
1540   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1541   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1543   EH_MECHANISM=-gcc
1544   MISCLIB = -lnsl -lsocket
1545   SO_OPTS = -Wl,-h,
1546   GNATLIB_SHARED = gnatlib-shared-dual
1547   GMEM_LIB = gmemlib
1548   LIBRARY_VERSION := $(LIB_VERSION)
1549 endif
1551 # x86 Linux
1552 ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
1553   LIBGNAT_TARGET_PAIRS = \
1554   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1555   a-synbar.adb<libgnarl/a-synbar__posix.adb \
1556   a-synbar.ads<libgnarl/a-synbar__posix.ads \
1557   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1558   s-intman.adb<libgnarl/s-intman__posix.adb \
1559   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1560   $(TRASYM_DWARF_UNIX_PAIRS) \
1561   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
1562   a-exetim.adb<libgnarl/a-exetim__posix.adb \
1563   a-exetim.ads<libgnarl/a-exetim__default.ads \
1564   s-linux.ads<libgnarl/s-linux.ads \
1565   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1566   $(ATOMICS_TARGET_PAIRS) \
1567   system.ads<libgnat/system-linux-x86.ads
1569   ifeq ($(strip $(MULTISUBDIR)),/64)
1570     LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
1571     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1572     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1573   else
1574     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1575   endif
1577   LIBGNAT_TARGET_PAIRS += \
1578   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1579   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1580   s-osprim.adb<libgnat/s-osprim__posix.adb \
1581   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1582   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1583   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1584   s-taspri.ads<libgnarl/s-taspri__posix.ads
1586   EH_MECHANISM=-gcc
1587   THREADSLIB = -lpthread -lrt
1588   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1589   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1590   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
1592   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1594   GNATLIB_SHARED = gnatlib-shared-dual
1595   MISCLIB = -ldl
1596   GMEM_LIB = gmemlib
1597   LIBRARY_VERSION := $(LIB_VERSION)
1599   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
1600 endif
1602 # x86 kfreebsd
1603 ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
1604   LIBGNAT_TARGET_PAIRS = \
1605   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1606   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1607   s-intman.adb<libgnarl/s-intman__posix.adb \
1608   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1609   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1610   s-osprim.adb<libgnat/s-osprim__posix.adb \
1611   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1612   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1613   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1614   $(TRASYM_DWARF_UNIX_PAIRS) \
1615   $(ATOMICS_TARGET_PAIRS) \
1616   $(X86_TARGET_PAIRS) \
1617   system.ads<libgnat/system-freebsd.ads
1619   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1621   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1622   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1624   EH_MECHANISM=-gcc
1625   THREADSLIB = -lpthread
1626   GNATLIB_SHARED = gnatlib-shared-dual
1627   GMEM_LIB = gmemlib
1628   LIBRARY_VERSION := $(LIB_VERSION)
1629   MISCLIB = -lutil
1630 endif
1632 # i[3456]86-pc-gnu i.e. GNU Hurd
1633 ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
1634   LIBGNAT_TARGET_PAIRS = \
1635   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1636   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1637   s-intman.adb<libgnarl/s-intman__posix.adb \
1638   s-osinte.adb<libgnarl/s-osinte__gnu.adb \
1639   s-osinte.ads<libgnarl/s-osinte__gnu.ads \
1640   s-osprim.adb<libgnat/s-osprim__posix.adb \
1641   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1642   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1643   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1644   $(ATOMICS_TARGET_PAIRS) \
1645   $(X86_TARGET_PAIRS) \
1646   system.ads<libgnat/system-freebsd.ads
1648   TOOLS_TARGET_PAIRS =  indepsw.adb<indepsw-gnu.adb
1650   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1652   EH_MECHANISM=-gcc
1653   THREADSLIB = -lpthread
1654   GNATLIB_SHARED = gnatlib-shared-dual
1655   GMEM_LIB = gmemlib
1656   LIBRARY_VERSION := $(LIB_VERSION)
1657 endif
1659 ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
1660   LIBGNAT_TARGET_PAIRS = \
1661   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1662   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1663   s-intman.adb<libgnarl/s-intman__posix.adb \
1664   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1665   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1666   s-osprim.adb<libgnat/s-osprim__posix.adb \
1667   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1668   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1669   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1670   $(ATOMICS_TARGET_PAIRS) \
1671   $(X86_64_TARGET_PAIRS) \
1672   $(GNATRTL_128BIT_PAIRS) \
1673   system.ads<libgnat/system-freebsd.ads
1675   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
1677   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1679   EH_MECHANISM=-gcc
1680   THREADSLIB = -lpthread
1681   GNATLIB_SHARED = gnatlib-shared-dual
1682   GMEM_LIB = gmemlib
1683   LIBRARY_VERSION := $(LIB_VERSION)
1684 endif
1686 # aarch64 FreeBSD
1687 ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
1688   LIBGNAT_TARGET_PAIRS = \
1689   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1690   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1691   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
1692   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1693   s-intman.adb<libgnarl/s-intman__posix.adb \
1694   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1695   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1696   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1697   s-osprim.adb<libgnat/s-osprim__posix.adb \
1698   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1699   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1700   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1701   $(ATOMICS_TARGET_PAIRS) \
1702   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1703   $(GNATRTL_128BIT_PAIRS) \
1704   system.ads<libgnat/system-freebsd.ads
1706   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
1708   GNATLIB_SHARED = gnatlib-shared-dual
1710   EH_MECHANISM=-gcc
1711   THREADSLIB= -lpthread
1712   GMEM_LIB = gmemlib
1713   LIBRARY_VERSION := $(LIB_VERSION)
1714   MISCLIB = -lutil
1715 endif
1717 # x86 FreeBSD
1718 ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
1719   LIBGNAT_TARGET_PAIRS = \
1720   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1721   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1722   s-intman.adb<libgnarl/s-intman__posix.adb \
1723   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1724   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1725   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1726   s-osprim.adb<libgnat/s-osprim__posix.adb \
1727   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1728   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1729   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1730   $(TRASYM_DWARF_UNIX_PAIRS) \
1731   $(ATOMICS_TARGET_PAIRS) \
1732   $(X86_TARGET_PAIRS) \
1733   system.ads<libgnat/system-freebsd.ads
1735   GNATLIB_SHARED = gnatlib-shared-dual
1737   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1738   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1740   EH_MECHANISM=-gcc
1741   THREADSLIB= -lpthread
1742   GMEM_LIB = gmemlib
1743   LIBRARY_VERSION := $(LIB_VERSION)
1744   MISCLIB = -lutil
1745 endif
1747 # x86-64 FreeBSD
1748 ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
1749   LIBGNAT_TARGET_PAIRS = \
1750   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1751   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1752   s-intman.adb<libgnarl/s-intman__posix.adb \
1753   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1754   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1755   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1756   s-osprim.adb<libgnat/s-osprim__posix.adb \
1757   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1758   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1759   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1760   $(TRASYM_DWARF_UNIX_PAIRS) \
1761   $(ATOMICS_TARGET_PAIRS) \
1762   $(X86_64_TARGET_PAIRS) \
1763   $(GNATRTL_128BIT_PAIRS) \
1764   system.ads<libgnat/system-freebsd.ads
1766   GNATLIB_SHARED = gnatlib-shared-dual
1768   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1769   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1770   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1772   EH_MECHANISM=-gcc
1773   THREADSLIB= -lpthread
1774   GMEM_LIB = gmemlib
1775   LIBRARY_VERSION := $(LIB_VERSION)
1776   MISCLIB = -lutil
1777 endif
1779 # x86-64 DragonFly
1780 ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
1781   LIBGNAT_TARGET_PAIRS = \
1782   a-intnam.ads<libgnarl/a-intnam__dragonfly.ads \
1783   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1784   s-intman.adb<libgnarl/s-intman__posix.adb \
1785   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1786   s-osinte.adb<libgnarl/s-osinte__dragonfly.adb \
1787   s-osinte.ads<libgnarl/s-osinte__dragonfly.ads \
1788   s-osprim.adb<libgnat/s-osprim__posix.adb \
1789   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1790   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1791   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1792   $(ATOMICS_TARGET_PAIRS) \
1793   $(X86_64_TARGET_PAIRS) \
1794   $(GNATRTL_128BIT_PAIRS) \
1795   system.ads<libgnat/system-dragonfly-x86_64.ads
1797   GNATLIB_SHARED = gnatlib-shared-dual
1799   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1800   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1802   EH_MECHANISM=-gcc
1803   THREADSLIB= -lpthread
1804   GMEM_LIB = gmemlib
1805   LIBRARY_VERSION := $(LIB_VERSION)
1806   MISCLIB = -lutil
1807 endif
1809 # S390 Linux
1810 ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
1811   LIBGNAT_TARGET_PAIRS = \
1812   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1813   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1814   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1815   s-intman.adb<libgnarl/s-intman__posix.adb \
1816   s-linux.ads<libgnarl/s-linux.ads \
1817   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1818   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1819   s-osprim.adb<libgnat/s-osprim__posix.adb \
1820   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1821   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1822   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1823   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
1824   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1825   system.ads<libgnat/system-linux-s390.ads
1827   ifeq ($(strip $(filter-out s390x,$(target_cpu))),)
1828     ifneq ($(strip $(MULTISUBDIR)),/32)
1829       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1830       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1831     endif
1832   else
1833     ifeq ($(strip $(MULTISUBDIR)),/64)
1834       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1835       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1836     endif
1837   endif
1839   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1841   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1842   EH_MECHANISM=-gcc
1843   THREADSLIB = -lpthread
1844   GNATLIB_SHARED = gnatlib-shared-dual
1845   LIBRARY_VERSION := $(LIB_VERSION)
1846 endif
1848 # HP/PA HP-UX 10
1849 ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
1850   LIBGNAT_TARGET_PAIRS = \
1851   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1852   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1853   s-interr.adb<libgnarl/s-interr__sigaction.adb \
1854   s-intman.adb<libgnarl/s-intman__posix.adb \
1855   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1856   s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
1857   s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
1858   s-parame.ads<libgnat/s-parame__hpux.ads \
1859   s-osprim.adb<libgnat/s-osprim__posix.adb \
1860   s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
1861   s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
1862   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1863   system.ads<libgnat/system-hpux.ads
1865   EH_MECHANISM=-gcc
1866 endif
1868 # HP/PA HP-UX 11
1869 ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
1870   LIBGNAT_TARGET_PAIRS = \
1871   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1872   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1873   s-intman.adb<libgnarl/s-intman__posix.adb \
1874   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1875   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1876   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
1877   s-parame.ads<libgnat/s-parame__hpux.ads \
1878   s-osprim.adb<libgnat/s-osprim__posix.adb \
1879   s-traceb.adb<libgnat/s-traceb__hpux.adb \
1880   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1881   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1882   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1883   system.ads<libgnat/system-hpux.ads
1885   EH_MECHANISM=-gcc
1886   TGT_LIB = /usr/lib/libcl.a
1887   THREADSLIB = -lpthread
1888   GMEM_LIB = gmemlib
1889   soext = .sl
1890   SO_OPTS = -Wl,+h,
1891   GNATLIB_SHARED = gnatlib-shared-dual
1892   LIBRARY_VERSION := $(LIB_VERSION)
1893 endif
1895 # IBM AIX
1896 ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
1897   LIBGNAT_TARGET_PAIRS = \
1898   a-intnam.ads<libgnarl/a-intnam__aix.ads \
1899   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1900   s-intman.adb<libgnarl/s-intman__posix.adb \
1901   s-osinte.adb<libgnarl/s-osinte__aix.adb \
1902   s-osinte.ads<libgnarl/s-osinte__aix.ads \
1903   s-osprim.adb<libgnat/s-osprim__posix.adb \
1904   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1905   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1906   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1907   $(TRASYM_DWARF_UNIX_PAIRS) \
1908   $(ATOMICS_TARGET_PAIRS) \
1909   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1910   system.ads<libgnat/system-aix.ads
1912   ifneq ($(target_os),)
1913     ifeq ($(findstring ppc64, \
1914             $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
1915                      -print-multi-os-directory)), \
1916           ppc64)
1917       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-aix.adb
1918     else
1919       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1920     endif
1921   endif
1923   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1925   THREADSLIB = -lpthreads
1926   EH_MECHANISM=-gcc
1928   GMEM_LIB = gmemlib
1929 endif
1931 # LynxOS 178 and LynxOS 178 Elf
1932 ifeq ($(strip $(filter-out lynxos178%,$(target_os))),)
1933   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1935   LIBGNAT_TARGET_PAIRS = \
1936   a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
1937   a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
1938   a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
1939   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
1940   g-soliop.ads<libgnat/g-soliop__lynxos.ads \
1941   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1942   s-intman.adb<libgnarl/s-intman__lynxos.adb \
1943   s-osinte.adb<libgnarl/s-osinte__lynxos178.adb \
1944   s-osprim.ads<libgnat/s-osprim__lynxos.ads \
1945   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1946   s-taspri.ads<libgnarl/s-taspri__lynxos.ads \
1947   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
1949   ifeq ($(strip $(filter-out powerpc%, $(target_cpu))),)
1950     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-ppc.ads
1951   endif
1952   ifeq ($(strip $(filter-out %86, $(target_cpu))),)
1953     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
1954   endif
1956   ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
1957     LIBGNAT_TARGET_PAIRS += \
1958     s-parame.ads<libgnat/s-parame__posix2008.ads \
1959     s-osinte.ads<libgnarl/s-osinte__lynxos178e.ads \
1960     s-osprim.adb<libgnat/s-osprim__posix2008.adb \
1961     s-tracon.adb<hie/s-tracon__ppc-eabi.adb
1962   endif
1964   EH_MECHANISM=-gcc
1965 endif
1967 # RTEMS
1968 ifeq ($(strip $(filter-out rtems%,$(target_os))),)
1969   LIBGNAT_TARGET_PAIRS = \
1970   system.ads<libgnat/system-rtems.ads \
1971   a-intnam.ads<libgnarl/a-intnam__rtems.ads \
1972   s-inmaop.adb<libgnarl/s-inmaop__hwint.adb \
1973   s-intman.adb<libgnarl/s-intman__rtems.adb \
1974   s-intman.ads<libgnarl/s-intman__rtems.ads \
1975   s-osinte.adb<libgnarl/s-osinte__rtems.adb \
1976   s-osinte.ads<libgnarl/s-osinte__rtems.ads \
1977   s-osprim.adb<libgnat/s-osprim__rtems.adb \
1978   s-parame.adb<libgnat/s-parame__rtems.adb \
1979   s-parame.ads<libgnat/s-parame__posix2008.ads \
1980   s-taprop.adb<libgnarl/s-taprop__rtems.adb \
1981   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1982   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1983   s-interr.adb<libgnarl/s-interr__hwint.adb
1985   EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
1987   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1988     EH_MECHANISM=-arm
1989   else
1990     EH_MECHANISM=-gcc
1991   endif
1993   ifeq ($(strip $(filter-out aarch64%,$(target_cpu))),)
1994     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
1995     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
1996   endif
1998   ifeq ($(strip $(filter-out aarch64% riscv%,$(target_cpu))),)
1999     LIBGNAT_TARGET_PAIRS += a-nallfl.ads<libgnat/a-nallfl__wraplf.ads
2000   endif
2002   # Target CPUs that support atomic primitives
2003   ifeq ($(strip $(filter-out aarch64%,$(target_cpu))),)
2004      LIBGNAT_TARGET_PAIRS += \
2005        $(ATOMICS_TARGET_PAIRS) \
2006        $(ATOMICS_BUILTINS_TARGET_PAIRS)
2007   endif
2008 endif
2010 # PikeOS
2011 ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
2012   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2013 endif
2015 # *-elf, *-eabi, or *-eabispe
2016 ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
2017   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2018 endif
2020 ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
2021   GNATRTL_SOCKETS_OBJS =
2023   LIBGNAT_TARGET_PAIRS = \
2024         a-intnam.ads<libgnarl/a-intnam__dummy.ads \
2025         s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
2026         s-intman.adb<libgnarl/s-intman__dummy.adb \
2027         s-osinte.ads<libgnarl/s-osinte__dummy.ads \
2028         s-osprim.adb<libgnat/s-osprim__unix.adb \
2029         s-taprop.adb<libgnarl/s-taprop__dummy.adb \
2030         s-taspri.ads<libgnarl/s-taspri__dummy.ads \
2031         system.ads<libgnat/system-djgpp.ads \
2032         $(DUMMY_SOCKETS_TARGET_PAIRS)
2034   EH_MECHANISM=-gcc
2035 endif
2037 # Cygwin/Mingw32
2038 ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),)
2039   # Cygwin provides a full Posix environment, and so we use the default
2040   # versions g-socthi rather than the Windows-specific MinGW version.
2041   # Ideally we would use all the default versions for Cygwin and none
2042   # of the MinGW versions, but for historical reasons the Cygwin port
2043   # has always been a CygMing frankenhybrid and it is a long-term project
2044   # to disentangle them.
2045   ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
2046     LIBGNAT_TARGET_PAIRS = \
2047     g-socthi.ads<libgnat/g-socthi.ads \
2048     g-socthi.adb<libgnat/g-socthi.adb
2049   else
2050     LIBGNAT_TARGET_PAIRS = \
2051     g-socthi.ads<libgnat/g-socthi__mingw.ads \
2052     g-socthi.adb<libgnat/g-socthi__mingw.adb \
2053     g-sopowa.adb<libgnat/g-sopowa__mingw.adb
2054   endif
2055   LIBGNAT_TARGET_PAIRS += \
2056   a-dirval.adb<libgnat/a-dirval__mingw.adb \
2057   s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
2058   s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
2059   s-taspri.ads<libgnarl/s-taspri__mingw.ads \
2060   s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
2061   s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
2062   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
2063   g-soliop.ads<libgnat/g-soliop__mingw.ads \
2064   $(ATOMICS_TARGET_PAIRS) \
2065   system.ads<libgnat/system-mingw.ads
2067   LIBGNAT_TARGET_PAIRS += \
2068   a-exetim.adb<libgnarl/a-exetim__mingw.adb \
2069   a-exetim.ads<libgnarl/a-exetim__mingw.ads \
2070   a-intnam.ads<libgnarl/a-intnam__mingw.ads \
2071   g-sercom.adb<libgnat/g-sercom__mingw.adb \
2072   $(TRASYM_DWARF_MINGW_PAIRS) \
2073   s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
2074   s-interr.adb<libgnarl/s-interr__sigaction.adb \
2075   s-intman.adb<libgnarl/s-intman__mingw.adb \
2076   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2077   s-osinte.ads<libgnarl/s-osinte__mingw.ads \
2078   s-osprim.adb<libgnat/s-osprim__mingw.adb \
2079   s-taprop.adb<libgnarl/s-taprop__mingw.adb
2081   ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
2082     ifeq ($(strip $(MULTISUBDIR)),/32)
2083       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2084       SO_OPTS= -m32 -Wl,-soname,
2085     else
2086       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS) $(GNATRTL_128BIT_PAIRS)
2087       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2088       SO_OPTS = -m64 -Wl,-soname,
2089     endif
2090   else
2091     ifeq ($(strip $(MULTISUBDIR)),/64)
2092       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS) $(GNATRTL_128BIT_PAIRS)
2093       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2094       SO_OPTS = -m64 -Wl,-soname,
2095     else
2096       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2097       SO_OPTS = -m32 -Wl,-soname,
2098     endif
2099   endif
2101   EXTRA_GNATRTL_NONTASKING_OBJS += \
2102     s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
2103   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
2104   EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
2105   EXTRA_LIBGNAT_SRCS+=mingw32.h
2106   MISCLIB = -lws2_32
2108   # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
2109   # auto-import support for array/record will be done.
2110   GNATLIB_SHARED = gnatlib-shared-win32
2112   EH_MECHANISM=-gcc
2114   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2116   GMEM_LIB = gmemlib
2117   EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
2118   EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
2119   soext = .dll
2120   LIBRARY_VERSION := $(LIB_VERSION)
2121 endif
2123 # LoongArch Linux
2124 ifeq ($(strip $(filter-out loongarch% linux%,$(target_cpu) $(target_os))),)
2125   LIBGNAT_TARGET_PAIRS = \
2126   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2127   a-exetim.ads<libgnarl/a-exetim__default.ads \
2128   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2129   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2130   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2131   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2132   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2133   s-intman.adb<libgnarl/s-intman__posix.adb \
2134   s-linux.ads<libgnarl/s-linux__loongarch.ads \
2135   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2136   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2137   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2138   s-osprim.adb<libgnat/s-osprim__posix.adb \
2139   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2140   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2141   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2142   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2143   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2144   g-sercom.adb<libgnat/g-sercom__linux.adb \
2145   $(TRASYM_DWARF_UNIX_PAIRS) \
2146   $(GNATRTL_128BIT_PAIRS) \
2147   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2148   $(ATOMICS_TARGET_PAIRS) \
2149   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2150   system.ads<libgnat/system-linux-loongarch.ads
2152   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2154   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2155   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2156   EXTRA_GNATRTL_TASKING_OBJS = s-linux.o a-exetim.o
2158   EH_MECHANISM = -gcc
2159   THREADSLIB = -lpthread
2160   MISCLIB = -ldl
2161   GNATLIB_SHARED = gnatlib-shared-dual
2162   GMEM_LIB = gmemlib
2163   LIBRARY_VERSION := $(LIB_VERSION)
2164   # Temporarily disable strict alignment -- for some reason, it causes
2165   # infinite loops during stack unwinding (libgcc) and indefinite hang
2166   # in some futex system calls.
2167   GNATLIBCFLAGS += -mno-strict-align
2168   GNATLIBCFLAGS_FOR_C += -mno-strict-align
2169 endif
2172 # Mips Linux
2173 ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
2174   LIBGNAT_TARGET_PAIRS = \
2175   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2176   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2177   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2178   s-intman.adb<libgnarl/s-intman__posix.adb \
2179   s-linux.ads<libgnarl/s-linux__mips.ads \
2180   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2181   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2182   s-osprim.adb<libgnat/s-osprim__posix.adb \
2183   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2184   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2185   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2186   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2187   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2188   system.ads<libgnat/system-linux-mips.ads
2190   ifeq ($(strip $(filter-out mips64% mipsisa64%,$(target_cpu))),)
2191     ifneq ($(strip $(MULTISUBDIR)),/32)
2192       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2193       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2194     endif
2195   else
2196     ifneq ($(strip $(filter /64 /n32,$(MULTISUBDIR))),)
2197       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2198       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2199     endif
2200   endif
2202   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2204   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2205   EH_MECHANISM=-gcc
2206   THREADSLIB = -lpthread
2207   GNATLIB_SHARED = gnatlib-shared-dual
2208   GMEM_LIB = gmemlib
2209   LIBRARY_VERSION := $(LIB_VERSION)
2210 endif
2212 # PowerPC and e500v2 Linux
2213 ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
2214   LIBGNAT_TARGET_PAIRS = \
2215   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2216   a-exetim.ads<libgnarl/a-exetim__default.ads \
2217   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2218   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2219   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2220   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2221   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2222   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2223   s-intman.adb<libgnarl/s-intman__posix.adb \
2224   s-linux.ads<libgnarl/s-linux.ads \
2225   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2226   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2227   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2228   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2229   s-osprim.adb<libgnat/s-osprim__posix.adb \
2230   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2231   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2232   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2233   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2234   $(TRASYM_DWARF_UNIX_PAIRS) \
2235   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2236   $(ATOMICS_TARGET_PAIRS) \
2237   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2238   system.ads<libgnat/system-linux-ppc.ads
2240   ifeq ($(strip $(filter-out powerpc64%,$(target_cpu))),)
2241     ifneq ($(strip $(MULTISUBDIR)),/32)
2242       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2243       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2244     endif
2245   else
2246     LIBGNAT_TARGET_PAIRS += s-atopri.ads<libgnat/s-atopri__32.ads
2247     ifeq ($(strip $(MULTISUBDIR)),/64)
2248       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2249       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2250     endif
2251   endif
2253   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2255   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2256   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2258   EH_MECHANISM=-gcc
2259   THREADSLIB = -lpthread -lrt
2260   GNATLIB_SHARED = gnatlib-shared-dual
2261   MISCLIB = -ldl
2262   GMEM_LIB = gmemlib
2263   LIBRARY_VERSION := $(LIB_VERSION)
2264 endif
2266 # ARM linux, GNU eabi
2267 ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
2268   LIBGNAT_TARGET_PAIRS = \
2269   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2270   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2271   s-intman.adb<libgnarl/s-intman__posix.adb \
2272   s-linux.ads<libgnarl/s-linux.ads \
2273   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2274   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2275   s-osprim.adb<libgnat/s-osprim__posix.adb \
2276   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2277   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2278   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2279   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2280   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2281   $(TRASYM_DWARF_UNIX_PAIRS) \
2282   $(ATOMICS_TARGET_PAIRS) \
2283   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2284   system.ads<libgnat/system-linux-arm.ads
2286   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2288   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2289   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2290   EH_MECHANISM=-arm
2291   THREADSLIB = -lpthread
2292   GNATLIB_SHARED = gnatlib-shared-dual
2293   GMEM_LIB = gmemlib
2294   LIBRARY_VERSION := $(LIB_VERSION)
2295 endif
2297 # AArch64 Linux
2298 ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
2299   LIBGNAT_TARGET_PAIRS = \
2300   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2301   a-exetim.ads<libgnarl/a-exetim__default.ads \
2302   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2303   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2304   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2305   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2306   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2307   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2308   s-intman.adb<libgnarl/s-intman__posix.adb \
2309   s-linux.ads<libgnarl/s-linux.ads \
2310   $(TRASYM_DWARF_UNIX_PAIRS) \
2311   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2312   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2313   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2314   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2315   s-osprim.adb<libgnat/s-osprim__posix.adb \
2316   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2317   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2318   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2319   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2320   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2321   $(ATOMICS_TARGET_PAIRS) \
2322   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2323   $(GNATRTL_128BIT_PAIRS) \
2324   system.ads<libgnat/system-linux-arm.ads
2326   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2328   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS) \
2329                                    $(TRASYM_DWARF_UNIX_OBJS)
2330   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2331   EH_MECHANISM=-gcc
2332   THREADSLIB=-lpthread -lrt
2333   GNATLIB_SHARED=gnatlib-shared-dual
2334   MISCLIB = -ldl
2335   GMEM_LIB = gmemlib
2336   LIBRARY_VERSION := $(LIB_VERSION)
2337 endif
2339 # SPARC Linux
2340 ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
2341   LIBGNAT_TARGET_PAIRS = \
2342   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2343   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2344   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2345   s-intman.adb<libgnarl/s-intman__posix.adb \
2346   s-linux.ads<libgnarl/s-linux__sparc.ads \
2347   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2348   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2349   s-osprim.adb<libgnat/s-osprim__posix.adb \
2350   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2351   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2352   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2353   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2354   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2355   system.ads<libgnat/system-linux-sparc.ads
2357   ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
2358     ifneq ($(strip $(MULTISUBDIR)),/32)
2359       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2360       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2361     endif
2362   else
2363     ifeq ($(strip $(MULTISUBDIR)),/64)
2364       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2365       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2366     endif
2367   endif
2369   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2371   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2372   EH_MECHANISM=-gcc
2373   THREADSLIB = -lpthread
2374   GNATLIB_SHARED = gnatlib-shared-dual
2375   GMEM_LIB = gmemlib
2376   LIBRARY_VERSION := $(LIB_VERSION)
2377 endif
2379 # HP/PA Linux
2380 ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
2381   LIBGNAT_TARGET_PAIRS = \
2382   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2383   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2384   s-intman.adb<libgnarl/s-intman__posix.adb \
2385   s-linux.ads<libgnarl/s-linux__hppa.ads \
2386   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2387   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2388   s-osprim.adb<libgnat/s-osprim__posix.adb \
2389   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2390   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2391   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2392   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2393   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2394   system.ads<libgnat/system-linux-hppa.ads
2396   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2398   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2399   EH_MECHANISM=-gcc
2400   THREADSLIB = -lpthread
2401   GNATLIB_SHARED = gnatlib-shared-dual
2402   GMEM_LIB = gmemlib
2403   LIBRARY_VERSION := $(LIB_VERSION)
2404 endif
2406 # M68K Linux
2407 ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
2408   LIBGNAT_TARGET_PAIRS = \
2409   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2410   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2411   s-intman.adb<libgnarl/s-intman__posix.adb \
2412   s-linux.ads<libgnarl/s-linux.ads \
2413   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2414   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2415   s-osprim.adb<libgnat/s-osprim__posix.adb \
2416   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2417   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2418   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2419   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2420   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2421   system.ads<libgnat/system-linux-m68k.ads
2423   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2425   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2426   EH_MECHANISM=-gcc
2427   THREADSLIB = -lpthread
2428   GNATLIB_SHARED = gnatlib-shared-dual
2429   GMEM_LIB = gmemlib
2430   LIBRARY_VERSION := $(LIB_VERSION)
2431 endif
2433 # SH4 Linux
2434 ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
2435   LIBGNAT_TARGET_PAIRS = \
2436   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2437   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2438   s-intman.adb<libgnarl/s-intman__posix.adb \
2439   s-linux.ads<libgnarl/s-linux.ads \
2440   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2441   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2442   s-osprim.adb<libgnat/s-osprim__posix.adb \
2443   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2444   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2445   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2446   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2447   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2448   system.ads<libgnat/system-linux-sh4.ads
2450   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb
2452   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2453   EH_MECHANISM=-gcc
2454   MISCLIB=
2455   THREADSLIB = -lpthread
2456   GNATLIB_SHARED = gnatlib-shared-dual
2457   GMEM_LIB = gmemlib
2458   LIBRARY_VERSION := $(LIB_VERSION)
2459 endif
2461 # IA64 Linux
2462 ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
2463   LIBGNAT_TARGET_PAIRS = \
2464   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2465   a-exetim.ads<libgnarl/a-exetim__default.ads \
2466   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2467   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
2468   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2469   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2470   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2471   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2472   s-intman.adb<libgnarl/s-intman__posix.adb \
2473   s-linux.ads<libgnarl/s-linux.ads \
2474   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2475   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2476   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2477   s-osprim.adb<libgnat/s-osprim__posix.adb \
2478   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2479   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2480   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2481   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2482   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2483   $(TRASYM_DWARF_UNIX_PAIRS) \
2484   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2485   $(ATOMICS_TARGET_PAIRS) \
2486   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2487   $(GNATRTL_128BIT_PAIRS) \
2488   system.ads<libgnat/system-linux-ia64.ads
2490   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2492   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2493   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2494   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2495   EH_MECHANISM=-gcc
2496   THREADSLIB=-lpthread -lrt
2497   GNATLIB_SHARED=gnatlib-shared-dual
2498   MISCLIB = -ldl
2499   GMEM_LIB = gmemlib
2500   LIBRARY_VERSION := $(LIB_VERSION)
2501 endif
2503 # IA64 HP-UX
2504 ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
2505   LIBGNAT_TARGET_PAIRS = \
2506   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
2507   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2508   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2509   s-intman.adb<libgnarl/s-intman__posix.adb \
2510   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2511   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
2512   s-osprim.adb<libgnat/s-osprim__posix.adb \
2513   s-taprop.adb<libgnarl/s-taprop__posix.adb \
2514   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2515   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2516   $(TRASYM_DWARF_UNIX_PAIRS) \
2517   $(ATOMICS_TARGET_PAIRS) \
2518   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2519   $(GNATRTL_128BIT_PAIRS) \
2520   system.ads<libgnat/system-hpux-ia64.ads
2522   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2523   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2525   MISCLIB=
2526   EH_MECHANISM=-gcc
2527   THREADSLIB=-lpthread
2528   GNATLIB_SHARED=gnatlib-shared-dual
2529   GMEM_LIB = gmemlib
2530   soext = .so
2531   SO_OPTS = -Wl,+h,
2532   LIBRARY_VERSION := $(LIB_VERSION)
2533 endif
2535 # Alpha Linux
2536 ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
2537   LIBGNAT_TARGET_PAIRS = \
2538   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2539   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2540   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2541   s-intman.adb<libgnarl/s-intman__posix.adb \
2542   s-linux.ads<libgnarl/s-linux__alpha.ads \
2543   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2544   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2545   s-osprim.adb<libgnat/s-osprim__posix.adb \
2546   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2547   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2548   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2549   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2550   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2551   $(ATOMICS_TARGET_PAIRS) \
2552   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2553   $(GNATRTL_128BIT_PAIRS) \
2554   system.ads<libgnat/system-linux-alpha.ads
2556   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2558   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
2559   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2560   EH_MECHANISM=-gcc
2561   MISCLIB=
2562   THREADSLIB=-lpthread
2563   GNATLIB_SHARED=gnatlib-shared-dual
2564   LIBRARY_VERSION := $(LIB_VERSION)
2565 endif
2567 # x86-64 Linux
2568 ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
2569   LIBGNAT_TARGET_PAIRS = \
2570   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2571   a-exetim.ads<libgnarl/a-exetim__default.ads \
2572   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2573   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2574   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2575   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2576   s-intman.adb<libgnarl/s-intman__posix.adb \
2577   s-linux.ads<libgnarl/s-linux.ads \
2578   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2579   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2580   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2581   s-osprim.adb<libgnat/s-osprim__posix.adb \
2582   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2583   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2584   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2585   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2586   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2587   $(TRASYM_DWARF_UNIX_PAIRS) \
2588   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2589   $(ATOMICS_TARGET_PAIRS) \
2590   $(X86_64_TARGET_PAIRS) \
2591   $(SIMD_PATH_TARGET_PAIRS) \
2592   $(GNATRTL_128BIT_PAIRS) \
2593   system.ads<libgnat/system-linux-x86.ads
2595   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2597   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2598   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2599   EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2600   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2602   EH_MECHANISM=-gcc
2603   THREADSLIB=-lpthread -lrt
2604   MISCLIB = -ldl
2605   GNATLIB_SHARED=gnatlib-shared-dual
2606   GMEM_LIB = gmemlib
2607   LIBRARY_VERSION := $(LIB_VERSION)
2609   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
2610 endif
2612 ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
2613   LIBGNAT_TARGET_PAIRS = \
2614   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2615   a-exetim.ads<libgnarl/a-exetim__default.ads \
2616   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2617   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2618   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2619   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2620   s-intman.adb<libgnarl/s-intman__posix.adb \
2621   s-linux.ads<libgnarl/s-linux__x32.ads \
2622   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2623   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2624   s-osinte.adb<libgnarl/s-osinte__x32.adb \
2625   s-osprim.adb<libgnat/s-osprim__x32.adb \
2626   s-parame.ads<libgnat/s-parame__posix2008.ads \
2627   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2628   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2629   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2630   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2631   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2632   $(TRASYM_DWARF_UNIX_PAIRS) \
2633   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2634   $(ATOMICS_TARGET_PAIRS) \
2635   $(X86_64_TARGET_PAIRS) \
2636   $(SIMD_PATH_TARGET_PAIRS) \
2637   $(GNATRTL_128BIT_PAIRS) \
2638   system.ads<libgnat/system-linux-x86.ads
2640   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2642   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2643   EXTRA_GNATRTL_NONTASKING_OBJS+=$(TRASYM_DWARF_UNIX_OBJS)
2644   EXTRA_GNATRTL_NONTASKING_OBJS+=$(GNATRTL_128BIT_OBJS)
2645   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2646   EH_MECHANISM=-gcc
2647   THREADSLIB=-lpthread -lrt
2648   GNATLIB_SHARED=gnatlib-shared-dual
2649   GMEM_LIB = gmemlib
2650   LIBRARY_VERSION := $(LIB_VERSION)
2651 endif
2653 # RISC-V Linux
2654 ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
2655   LIBGNAT_TARGET_PAIRS = \
2656   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2657   a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2658   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2659   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2660   s-intman.adb<libgnarl/s-intman__posix.adb \
2661   s-linux.ads<libgnarl/s-linux__riscv.ads \
2662   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2663   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2664   s-osprim.adb<libgnat/s-osprim__posix.adb \
2665   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2666   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2667   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2668   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2669   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2670   system.ads<libgnat/system-linux-riscv.ads
2672   ifeq ($(strip $(filter-out riscv64,$(target_cpu))),)
2673     ifneq ($(strip $(MULTISUBDIR)),/lib32)
2674       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2675       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2676     endif
2677   else
2678     ifeq ($(strip $(MULTISUBDIR)),/lib64)
2679       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2680       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2681     endif
2682   endif
2684   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2686   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2687   EH_MECHANISM=-gcc
2688   THREADSLIB = -lpthread
2689   GNATLIB_SHARED = gnatlib-shared-dual
2690   GMEM_LIB = gmemlib
2691   LIBRARY_VERSION := $(LIB_VERSION)
2692 endif
2694 # Darwin (Mac OS X)
2695 ifeq ($(strip $(filter-out darwin%,$(target_os))),)
2696   SO_OPTS = -shared-libgcc
2697   LIBGNAT_TARGET_PAIRS = \
2698     a-intnam.ads<libgnarl/a-intnam__darwin.ads \
2699     s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2700     s-osinte.adb<libgnarl/s-osinte__darwin.adb \
2701     s-osinte.ads<libgnarl/s-osinte__darwin.ads \
2702     s-taprop.adb<libgnarl/s-taprop__posix.adb \
2703     s-taspri.ads<libgnarl/s-taspri__posix.ads \
2704     g-sercom.adb<libgnat/g-sercom__linux.adb \
2705     s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
2707   ifeq ($(strip $(filter-out %86,$(target_cpu))),)
2708     LIBGNAT_TARGET_PAIRS += \
2709       s-intman.adb<libgnarl/s-intman__susv3.adb \
2710       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2711       $(ATOMICS_TARGET_PAIRS) \
2712       system.ads<libgnat/system-darwin-x86.ads
2714     ifeq ($(strip $(MULTISUBDIR)),/x86_64)
2715       SO_OPTS += -m64
2716       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2717       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2718       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2719     else
2720       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2721     endif
2723     EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2724   endif
2726   ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
2727     LIBGNAT_TARGET_PAIRS += \
2728       s-intman.adb<libgnarl/s-intman__susv3.adb \
2729       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2730       a-exetim.ads<libgnarl/a-exetim__default.ads \
2731       a-exetim.adb<libgnarl/a-exetim__darwin.adb \
2732       $(ATOMICS_TARGET_PAIRS) \
2733       system.ads<libgnat/system-darwin-x86.ads
2735     ifeq ($(strip $(MULTISUBDIR)),/i386)
2736       SO_OPTS += -m32
2737       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2738     else
2739       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2740       LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2741       EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2742     endif
2744     EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2745     EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
2746   endif
2748   ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
2749     LIBGNAT_TARGET_PAIRS += \
2750       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2751       s-intman.adb<libgnarl/s-intman__posix.adb \
2752       s-osprim.adb<libgnat/s-osprim__posix.adb \
2753       $(ATOMICS_TARGET_PAIRS) \
2754       $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2755       system.ads<libgnat/system-darwin-ppc.ads
2757     ifeq ($(strip $(filter-out powerpc64,$(target_cpu))),)
2758       ifneq ($(strip $(MULTISUBDIR)),/ppc)
2759         LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2760         EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2761       else
2762         SO_OPTS += -m32
2763       endif
2764     else
2765       ifeq ($(strip $(MULTISUBDIR)),/ppc64)
2766         SO_OPTS += -m64
2767         LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
2768         EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2769       endif
2770     endif
2771   endif
2773   ifeq ($(strip $(filter-out arm,$(target_cpu))),)
2774     LIBGNAT_TARGET_PAIRS += \
2775       s-intman.adb<libgnarl/s-intman__susv3.adb \
2776       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2777       $(ATOMICS_TARGET_PAIRS) \
2778       $(ATOMICS_BUILTINS_TARGET_PAIRS)
2780     LIBGNAT_TARGET_PAIRS += \
2781       system.ads<libgnat/system-darwin-arm.ads
2782   endif
2784   ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
2785     LIBGNAT_TARGET_PAIRS += \
2786       a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
2787       s-intman.adb<libgnarl/s-intman__susv3.adb \
2788       s-dorepr.adb<libgnat/s-dorepr__fma.adb \
2789       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2790       $(ATOMICS_TARGET_PAIRS) \
2791       $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2792       $(GNATRTL_128BIT_PAIRS)
2794     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
2795     EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
2796     EXTRA_LIBGNAT_SRCS+=sigtramp.h
2797     LIBGNAT_TARGET_PAIRS += \
2798       system.ads<libgnat/system-darwin-arm.ads
2799   endif
2801   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb
2803   EH_MECHANISM=-gcc
2804   GNATLIB_SHARED = gnatlib-shared-darwin
2805   GMEM_LIB = gmemlib
2806   LIBRARY_VERSION := $(LIB_VERSION)
2807   soext = .dylib
2808   GCC_LINK_FLAGS=-static-libstdc++
2809 endif
2811 ifeq ($(EH_MECHANISM),-gcc)
2812   LIBGNAT_TARGET_PAIRS += \
2813     s-excmac.ads<libgnat/s-excmac__gcc.ads \
2814     s-excmac.adb<libgnat/s-excmac__gcc.adb
2815   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2816   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2817 endif
2819 ifeq ($(EH_MECHANISM),-arm)
2820   LIBGNAT_TARGET_PAIRS += \
2821     s-excmac.ads<libgnat/s-excmac__arm.ads \
2822     s-excmac.adb<libgnat/s-excmac__arm.adb
2823   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2824   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2825 endif
2827 ifeq ($(strip $(filter-out linux%,$(target_os))),)
2828   LIBGNAT_TARGET_PAIRS += \
2829     g-sercom.adb<libgnat/g-sercom__linux.adb
2830 endif
2832 # Turn on shared gnatlib for specific vx7r2 targets for RTP runtimes. Once
2833 # all targets are ported the target_cpu selector can be removed.
2834 ifeq ($(strip $(filter-out vxworks7r2 powerpc64 x86_64 aarch64 rtp rtp-smp, $(target_os) $(target_cpu) $(THREAD_KIND))),)
2835     GNATLIB_SHARED = gnatlib-shared-dual
2836     LIBRARY_VERSION := $(LIB_VERSION)
2837 endif
2839 LIBGNAT_TARGET_PAIRS += \
2840   interfac.ads<libgnat/interfac__2020.ads
2842 # LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
2843 # library.  LIBGNAT_OBJS is the list of object files for libgnat.
2844 # thread.c is special as put into GNATRTL_TASKING_OBJS
2845 LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o                     \
2846   cal.o cio.o cstreams.o ctrl_c.o                                       \
2847   env.o errno.o exit.o expect.o final.o rtfinal.o rtinit.o              \
2848   init.o initialize.o locales.o mkdir.o                                 \
2849   raise.o seh_init.o socket.o sysdep.o                                  \
2850   targext.o terminals.o tracebak.o                                      \
2851   $(EXTRA_LIBGNAT_OBJS)
2853 # NOTE ??? - when the -I option for compiling Ada code is made to work,
2854 #  the library installation will change and there will be a
2855 #  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
2856 #  from ADA_INCLUDE_SRCS.
2858 LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))                      \
2859   adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h           \
2860   runtime.h $(EXTRA_LIBGNAT_SRCS)
2862 # memtrack.o is special as not put into libgnat.
2863 GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
2864   memtrack.o
2866 # Run time source files
2867 # Note that libgnat contains a significant number of files. In orde to avoid
2868 # command line length limitations the source regexp has been split for that
2869 # directory.
2870 ADA_INCLUDE_SRCS =\
2871  libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
2872  libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
2873  libgnat/sequenio.ads libgnat/memtrack.adb \
2874  libgna*/*.gpr \
2875  libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
2876  libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
2877  libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
2878  libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
2879  libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
2880  libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
2881  libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
2882  libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
2883  libgnarl/[agis]-[a-z]*.ad[sb]
2886 # Files that are in ADA_INCLUDE_SRCS but not in all configurations.
2887 # They will be removed from the run time if not used.
2888 ADA_EXCLUDE_SRCS =\
2889   g-allein.ads g-alleve.adb g-alleve.ads g-altcon.adb g-altcon.ads \
2890   g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
2891   g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
2892   i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
2893   s-linux.ads  s-vxwext.adb s-vxwext.ads s-win32.ads  s-winext.ads \
2894   s-stchop.ads s-stchop.adb \
2895   s-strcom.adb s-strcom.ads s-thread.ads \
2896   s-qnx.ads \
2898 # ADA_EXCLUDE_SRCS without the sources used by the target
2899 ADA_EXCLUDE_FILES=$(filter-out \
2900   $(patsubst %$(objext),%.ads,$(GNATRTL_OBJS)) \
2901   $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
2902   $(ADA_EXCLUDE_SRCS))
2904 .PHONY: rts-err
2905 rts-err: ; $(RTSERR)
2907 setup-rts: rts-err force
2908         $(RMDIR) $(RTSDIR)
2909         $(MKDIR) $(RTSDIR)
2910         $(CHMOD) u+w $(RTSDIR)
2911 # Copy target independent sources
2912         $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS) libgnarl/thread.c, \
2913           $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
2914 # Remove files not used
2915         $(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
2916 # Remove files to be replaced by target dependent sources
2917         $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2918                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
2919         for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
2920           $(RM) $$f ; \
2921         done
2922 # Copy new target dependent sources
2923         $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2924                   $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
2925                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
2926 # And finally generate libgnat.lst and libgnarl.lst
2927         @for f in \
2928           $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.ads,$(F))) \
2929           $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.adb,$(F))); \
2930         do \
2931           if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnarl.lst; fi \
2932         done
2933         @echo thread.c >> $(RTSDIR)/libgnarl.lst
2934         @for f in \
2935           $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.ads,$(F))) \
2936           $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.adb,$(F))); \
2937         do \
2938           if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnat.lst; fi \
2939         done
2940 # s-oscons.ads is generated later, so hardcode it here
2941         @echo s-oscons.ads >> $(RTSDIR)/libgnat.lst
2942         @for f in $(LIBGNAT_SRCS); do \
2943           echo $$f >> $(RTSDIR)/libgnat.lst; \
2944         done
2946 # Special flags. It is recommended not to change the compilation flags
2947 # without a careful analysis of the consequences because (part of) the
2948 # runtime implements low-level support that is outside of the semantics
2949 # of the language and therefore needs to be treated differently from the
2950 # other units. For example, the part of the runtime implementing the
2951 # propagation of exceptions cannot itself be compiled with checks that
2952 # may give rise to exceptions, e.g. stack overflow checks.
2954 # Generate target-dependent info into a file named ada_target_properties.
2955 # This information is used by tools for static analysis: they need to know
2956 # the size of standard types for a given run-time library. This metadata
2957 # is meant to be saved at the root of the run-time directory.
2959 ADA_TARGET_PROPERTIES = -gnatet=ada_target_properties
2961 system.o: system.ads
2962         $(ADAC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< \
2963           $(ADA_TARGET_PROPERTIES) \
2964           $(OUTPUT_OPTION)
2966 # Force no sibling call optimization on s-traceb.o so the number of stack
2967 # frames to be skipped when computing a call chain is not modified by
2968 # optimization. We don't want inlining, either.
2970 s-traceb.o: s-traceb.adb s-traceb.ads
2971         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2972           $(NO_INLINE_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) $< \
2973           $(OUTPUT_OPTION)
2975 # Compile s-tasdeb.o without optimization and with debug info so that it is
2976 # always possible to set conditional breakpoints on tasks.
2978 s-tasdeb.o: s-tasdeb.adb s-tasdeb.ads
2979         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2980           $< $(OUTPUT_OPTION)
2982 # Force no function reordering on a-except.o because of the exclusion bounds
2983 # mechanism (see the source file for more detailed information).
2984 # force debugging information on a-except.o so that it is always
2985 # possible to set conditional breakpoints on exceptions.
2986 # use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.
2988 a-except.o: a-except.adb a-except.ads
2989         $(ADAC) -c $(ALL_ADAFLAGS) -O1 $(FORCE_DEBUG_ADAFLAGS) \
2990           $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) \
2991           $< $(OUTPUT_OPTION)
2993 # Compile s-excdeb.o without optimization and with debug info to let the
2994 # debugger set breakpoints and inspect subprogram parameters on exception
2995 # related events.
2997 s-excdeb.o: s-excdeb.adb s-excdeb.ads s-except.ads
2998         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
2999           $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
3001 # Force debugging information on s-assert.o so that it is always
3002 # possible to set breakpoint on assert failures.
3004 s-assert.o: s-assert.adb s-assert.ads
3005         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
3006           $< $(OUTPUT_OPTION)
3008 # Force debugging information on a-tags.o so that the debugger can find
3009 # the description of Ada.Tags.Type_Specific_Data.
3011 a-tags.o: a-tags.adb a-tags.ads
3012         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
3013           $< $(OUTPUT_OPTION)
3015 # Force no sibling call optimization on s-memory.o to avoid turning the
3016 # tail recursion in Alloc into a loop that confuses branch prediction.
3018 s-memory.o: s-memory.adb s-memory.ads
3019         $(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
3020           $< $(OUTPUT_OPTION)
3022 # Need to keep functions ordered on g-debpoo.o since labels are used to
3023 # exclude subprograms from traceback computation.
3025 g-debpoo.o: g-debpoo.adb g-debpoo.ads
3026         $(ADAC) -c $(ALL_ADAFLAGS) $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) \
3027           $< $(OUTPUT_OPTION)