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