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