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