Update LOCAL_PATCHES after libsanitizer merge.
[official-gcc.git] / gcc / ada / Makefile.rtl
blobe1b26de67a66e26c2228e452224f78b507f793c2
1 # Makefile.rtl for GNU Ada Compiler (GNAT).
2 #   Copyright (C) 2003-2017, 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-taster$(objext) \
43   g-boubuf$(objext) \
44   g-boumai$(objext) \
45   g-semaph$(objext) \
46   g-signal$(objext) \
47   g-tastus$(objext) \
48   g-thread$(objext) \
49   s-inmaop$(objext) \
50   s-interr$(objext) \
51   s-intman$(objext) \
52   s-mudido$(objext) \
53   s-osinte$(objext) \
54   s-proinf$(objext) \
55   s-solita$(objext) \
56   s-stusta$(objext) \
57   s-taenca$(objext) \
58   s-taprob$(objext) \
59   s-taprop$(objext) \
60   s-tarest$(objext) \
61   s-tasdeb$(objext) \
62   s-tasinf$(objext) \
63   s-tasini$(objext) \
64   s-taskin$(objext) \
65   s-taspri$(objext) \
66   s-tasque$(objext) \
67   s-tasres$(objext) \
68   s-tasren$(objext) \
69   s-tassta$(objext) \
70   s-tasuti$(objext) \
71   s-taasde$(objext) \
72   s-tadeca$(objext) \
73   s-tadert$(objext) \
74   s-tataat$(objext) \
75   s-tpinop$(objext) \
76   s-tpoben$(objext) \
77   s-tpobop$(objext) \
78   s-tposen$(objext) \
79   thread$(objext) \
80   $(EXTRA_GNATRTL_TASKING_OBJS)
82 # Objects the require IEEE Float
83 GNATRTL_ALTIVEC_OBJS= \
84   g-allein$(objext) \
85   g-alleve$(objext) \
86   g-altcon$(objext) \
87   g-altive$(objext) \
88   g-alveop$(objext) \
89   g-alvety$(objext) \
90   g-alvevi$(objext)
92 # Objects needed for non-tasking.
93 GNATRTL_NONTASKING_OBJS= \
94   a-assert$(objext) \
95   a-btgbso$(objext) \
96   a-calari$(objext) \
97   a-calcon$(objext) \
98   a-caldel$(objext) \
99   a-calend$(objext) \
100   a-calfor$(objext) \
101   a-catizo$(objext) \
102   a-cbdlli$(objext) \
103   a-cbhama$(objext) \
104   a-cbhase$(objext) \
105   a-cbmutr$(objext) \
106   a-cborma$(objext) \
107   a-cborse$(objext) \
108   a-cbprqu$(objext) \
109   a-cbsyqu$(objext) \
110   a-cdlili$(objext) \
111   a-cfdlli$(objext) \
112   a-cfhama$(objext) \
113   a-cfhase$(objext) \
114   a-cfinve$(objext) \
115   a-cforma$(objext) \
116   a-cforse$(objext) \
117   a-cgaaso$(objext) \
118   a-cgarso$(objext) \
119   a-cgcaso$(objext) \
120   a-chacon$(objext) \
121   a-chahan$(objext) \
122   a-charac$(objext) \
123   a-chlat1$(objext) \
124   a-chlat9$(objext) \
125   a-chtgbk$(objext) \
126   a-chtgbo$(objext) \
127   a-chtgke$(objext) \
128   a-chtgop$(objext) \
129   a-chzla1$(objext) \
130   a-chzla9$(objext) \
131   a-cidlli$(objext) \
132   a-cihama$(objext) \
133   a-cihase$(objext) \
134   a-cimutr$(objext) \
135   a-ciorma$(objext) \
136   a-ciormu$(objext) \
137   a-ciorse$(objext) \
138   a-clrefi$(objext) \
139   a-coboho$(objext) \
140   a-cobove$(objext) \
141   a-cofove$(objext) \
142   a-cofuba$(objext) \
143   a-cofuma$(objext) \
144   a-cofuse$(objext) \
145   a-cofuve$(objext) \
146   a-cogeso$(objext) \
147   a-cohama$(objext) \
148   a-cohase$(objext) \
149   a-cohata$(objext) \
150   a-coinho$(objext) \
151   a-coinve$(objext) \
152   a-colien$(objext) \
153   a-colire$(objext) \
154   a-comlin$(objext) \
155   a-comutr$(objext) \
156   a-conhel$(objext) \
157   a-contai$(objext) \
158   a-convec$(objext) \
159   a-coorma$(objext) \
160   a-coormu$(objext) \
161   a-coorse$(objext) \
162   a-coprnu$(objext) \
163   a-coteio$(objext) \
164   a-crbltr$(objext) \
165   a-crbtgk$(objext) \
166   a-crbtgo$(objext) \
167   a-crdlli$(objext) \
168   a-csquin$(objext) \
169   a-cuprqu$(objext) \
170   a-cusyqu$(objext) \
171   a-cwila1$(objext) \
172   a-cwila9$(objext) \
173   a-decima$(objext) \
174   a-diocst$(objext) \
175   a-direct$(objext) \
176   a-direio$(objext) \
177   a-dirval$(objext) \
178   a-einuoc$(objext) \
179   a-elchha$(objext) \
180   a-envvar$(objext) \
181   a-except$(objext) \
182   a-exctra$(objext) \
183   a-finali$(objext) \
184   a-flteio$(objext) \
185   a-fwteio$(objext) \
186   a-fzteio$(objext) \
187   a-inteio$(objext) \
188   a-ioexce$(objext) \
189   a-iteint$(objext) \
190   a-iwteio$(objext) \
191   a-izteio$(objext) \
192   a-lcteio$(objext) \
193   a-lfteio$(objext) \
194   a-lfwtio$(objext) \
195   a-lfztio$(objext) \
196   a-liteio$(objext) \
197   a-liwtio$(objext) \
198   a-liztio$(objext) \
199   a-llctio$(objext) \
200   a-llftio$(objext) \
201   a-llfwti$(objext) \
202   a-llfzti$(objext) \
203   a-llitio$(objext) \
204   a-lliwti$(objext) \
205   a-llizti$(objext) \
206   a-locale$(objext) \
207   a-ncelfu$(objext) \
208   a-ngcefu$(objext) \
209   a-ngcoar$(objext) \
210   a-ngcoty$(objext) \
211   a-ngelfu$(objext) \
212   a-ngrear$(objext) \
213   a-nlcefu$(objext) \
214   a-nlcoar$(objext) \
215   a-nlcoty$(objext) \
216   a-nlelfu$(objext) \
217   a-nllcar$(objext) \
218   a-nllcef$(objext) \
219   a-nllcty$(objext) \
220   a-nllefu$(objext) \
221   a-nllrar$(objext) \
222   a-nlrear$(objext) \
223   a-nscefu$(objext) \
224   a-nscoty$(objext) \
225   a-nselfu$(objext) \
226   a-nucoar$(objext) \
227   a-nucoty$(objext) \
228   a-nudira$(objext) \
229   a-nuelfu$(objext) \
230   a-nuflra$(objext) \
231   a-numaux$(objext) \
232   a-numeri$(objext) \
233   a-nurear$(objext) \
234   a-rbtgbk$(objext) \
235   a-rbtgbo$(objext) \
236   a-rbtgso$(objext) \
237   a-sbecin$(objext) \
238   a-sbhcin$(objext) \
239   a-sblcin$(objext) \
240   a-scteio$(objext) \
241   a-secain$(objext) \
242   a-sequio$(objext) \
243   a-sfecin$(objext) \
244   a-sfhcin$(objext) \
245   a-sflcin$(objext) \
246   a-sfteio$(objext) \
247   a-sfwtio$(objext) \
248   a-sfztio$(objext) \
249   a-shcain$(objext) \
250   a-siocst$(objext) \
251   a-siteio$(objext) \
252   a-siwtio$(objext) \
253   a-siztio$(objext) \
254   a-slcain$(objext) \
255   a-ssicst$(objext) \
256   a-ssitio$(objext) \
257   a-ssiwti$(objext) \
258   a-ssizti$(objext) \
259   a-stboha$(objext) \
260   a-stfiha$(objext) \
261   a-stmaco$(objext) \
262   a-storio$(objext) \
263   a-strbou$(objext) \
264   a-stream$(objext) \
265   a-strfix$(objext) \
266   a-strhas$(objext) \
267   a-string$(objext) \
268   a-strmap$(objext) \
269   a-strsea$(objext) \
270   a-strsup$(objext) \
271   a-strunb$(objext) \
272   a-ststio$(objext) \
273   a-stunau$(objext) \
274   a-stunha$(objext) \
275   a-stuten$(objext) \
276   a-stwibo$(objext) \
277   a-stwifi$(objext) \
278   a-stwiha$(objext) \
279   a-stwima$(objext) \
280   a-stwise$(objext) \
281   a-stwisu$(objext) \
282   a-stwiun$(objext) \
283   a-stzbou$(objext) \
284   a-stzfix$(objext) \
285   a-stzhas$(objext) \
286   a-stzmap$(objext) \
287   a-stzsea$(objext) \
288   a-stzsup$(objext) \
289   a-stzunb$(objext) \
290   a-suecin$(objext) \
291   a-suenco$(objext) \
292   a-suenst$(objext) \
293   a-suewst$(objext) \
294   a-suezst$(objext) \
295   a-suhcin$(objext) \
296   a-sulcin$(objext) \
297   a-suteio$(objext) \
298   a-swbwha$(objext) \
299   a-swfwha$(objext) \
300   a-swmwco$(objext) \
301   a-swunau$(objext) \
302   a-swuwha$(objext) \
303   a-swuwti$(objext) \
304   a-szbzha$(objext) \
305   a-szfzha$(objext) \
306   a-szmzco$(objext) \
307   a-szunau$(objext) \
308   a-szuzha$(objext) \
309   a-szuzti$(objext) \
310   a-tags$(objext) \
311   a-teioed$(objext) \
312   a-textio$(objext) \
313   a-tgdico$(objext) \
314   a-tiboio$(objext) \
315   a-ticoau$(objext) \
316   a-ticoio$(objext) \
317   a-tideau$(objext) \
318   a-tideio$(objext) \
319   a-tienau$(objext) \
320   a-tienio$(objext) \
321   a-tifiio$(objext) \
322   a-tiflau$(objext) \
323   a-tiflio$(objext) \
324   a-tigeau$(objext) \
325   a-tiinau$(objext) \
326   a-tiinio$(objext) \
327   a-timoau$(objext) \
328   a-timoio$(objext) \
329   a-tiocst$(objext) \
330   a-tirsfi$(objext) \
331   a-titest$(objext) \
332   a-tiunio$(objext) \
333   a-unccon$(objext) \
334   a-uncdea$(objext) \
335   a-undesu$(objext) \
336   a-wichha$(objext) \
337   a-wichun$(objext) \
338   a-widcha$(objext) \
339   a-witeio$(objext) \
340   a-wrstfi$(objext) \
341   a-wtcoau$(objext) \
342   a-wtcoio$(objext) \
343   a-wtcstr$(objext) \
344   a-wtdeau$(objext) \
345   a-wtdeio$(objext) \
346   a-wtedit$(objext) \
347   a-wtenau$(objext) \
348   a-wtenio$(objext) \
349   a-wtfiio$(objext) \
350   a-wtflau$(objext) \
351   a-wtflio$(objext) \
352   a-wtgeau$(objext) \
353   a-wtinau$(objext) \
354   a-wtinio$(objext) \
355   a-wtmoau$(objext) \
356   a-wtmoio$(objext) \
357   a-wttest$(objext) \
358   a-wwboio$(objext) \
359   a-wwunio$(objext) \
360   a-zchara$(objext) \
361   a-zchhan$(objext) \
362   a-zchuni$(objext) \
363   a-zrstfi$(objext) \
364   a-ztcoau$(objext) \
365   a-ztcoio$(objext) \
366   a-ztcstr$(objext) \
367   a-ztdeau$(objext) \
368   a-ztdeio$(objext) \
369   a-ztedit$(objext) \
370   a-ztenau$(objext) \
371   a-ztenio$(objext) \
372   a-ztexio$(objext) \
373   a-ztfiio$(objext) \
374   a-ztflau$(objext) \
375   a-ztflio$(objext) \
376   a-ztgeau$(objext) \
377   a-ztinau$(objext) \
378   a-ztinio$(objext) \
379   a-ztmoau$(objext) \
380   a-ztmoio$(objext) \
381   a-zttest$(objext) \
382   a-zzboio$(objext) \
383   a-zzunio$(objext) \
384   ada$(objext) \
385   calendar$(objext) \
386   directio$(objext) \
387   g-arrspl$(objext) \
388   g-awk$(objext) \
389   g-binenv$(objext) \
390   g-bubsor$(objext) \
391   g-busora$(objext) \
392   g-busorg$(objext) \
393   g-byorma$(objext) \
394   g-bytswa$(objext) \
395   g-calend$(objext) \
396   g-casuti$(objext) \
397   g-catiio$(objext) \
398   g-cgi$(objext)    \
399   g-cgicoo$(objext) \
400   g-cgideb$(objext) \
401   g-comlin$(objext) \
402   g-comver$(objext) \
403   g-crc32$(objext) \
404   g-ctrl_c$(objext) \
405   g-curexc$(objext) \
406   g-debpoo$(objext) \
407   g-debuti$(objext) \
408   g-decstr$(objext) \
409   g-deutst$(objext) \
410   g-diopit$(objext) \
411   g-dirope$(objext) \
412   g-dynhta$(objext) \
413   g-dyntab$(objext) \
414   g-encstr$(objext) \
415   g-enutst$(objext) \
416   g-excact$(objext) \
417   g-except$(objext) \
418   g-exctra$(objext) \
419   s-exctra$(objext) \
420   g-expect$(objext) \
421   g-exptty$(objext) \
422   g-flocon$(objext) \
423   g-forstr$(objext) \
424   g-heasor$(objext) \
425   g-hesora$(objext) \
426   g-hesorg$(objext) \
427   g-htable$(objext) \
428   g-io$(objext) \
429   g-io_aux$(objext) \
430   g-lists$(objext) \
431   g-locfil$(objext) \
432   g-mbdira$(objext) \
433   g-mbflra$(objext) \
434   g-md5$(objext) \
435   g-memdum$(objext) \
436   g-moreex$(objext) \
437   g-os_lib$(objext) \
438   g-pehage$(objext) \
439   g-rannum$(objext) \
440   g-regexp$(objext) \
441   g-regpat$(objext) \
442   g-rewdat$(objext) \
443   g-sechas$(objext) \
444   g-sehamd$(objext) \
445   g-sehash$(objext) \
446   g-sercom$(objext) \
447   g-sestin$(objext) \
448   g-sets$(objext) \
449   g-sha1$(objext) \
450   g-sha224$(objext) \
451   g-sha256$(objext) \
452   g-sha384$(objext) \
453   g-sha512$(objext) \
454   g-shsh32$(objext) \
455   g-shsh64$(objext) \
456   g-shshco$(objext) \
457   g-souinf$(objext) \
458   g-spchge$(objext) \
459   g-speche$(objext) \
460   g-spipat$(objext) \
461   g-spitbo$(objext) \
462   g-sptabo$(objext) \
463   g-sptain$(objext) \
464   g-sptavs$(objext) \
465   g-strhas$(objext) \
466   g-string$(objext) \
467   g-strspl$(objext) \
468   g-table$(objext) \
469   g-tasloc$(objext) \
470   g-timsta$(objext) \
471   g-traceb$(objext) \
472   g-trasym$(objext) \
473   s-trasym$(objext) \
474   g-tty$(objext) \
475   g-u3spch$(objext) \
476   g-utf_32$(objext) \
477   g-wispch$(objext) \
478   g-wistsp$(objext) \
479   g-zspche$(objext) \
480   g-zstspl$(objext) \
481   gnat$(objext) \
482   i-c$(objext) \
483   i-cexten$(objext) \
484   i-cobol$(objext) \
485   i-cpoint$(objext) \
486   i-cstrea$(objext) \
487   i-cstrin$(objext) \
488   i-fortra$(objext) \
489   i-pacdec$(objext) \
490   interfac$(objext) \
491   ioexcept$(objext) \
492   machcode$(objext) \
493   s-addima$(objext) \
494   s-addope$(objext) \
495   s-arit64$(objext) \
496   s-assert$(objext) \
497   s-atacco$(objext) \
498   s-atocou$(objext) \
499   s-atopri$(objext) \
500   s-auxdec$(objext) \
501   s-bignum$(objext) \
502   s-bitops$(objext) \
503   s-boarop$(objext) \
504   s-boustr$(objext) \
505   s-bytswa$(objext) \
506   s-carsi8$(objext) \
507   s-carun8$(objext) \
508   s-casi16$(objext) \
509   s-casi32$(objext) \
510   s-casi64$(objext) \
511   s-casuti$(objext) \
512   s-caun16$(objext) \
513   s-caun32$(objext) \
514   s-caun64$(objext) \
515   s-chepoo$(objext) \
516   s-commun$(objext) \
517   s-conca2$(objext) \
518   s-conca3$(objext) \
519   s-conca4$(objext) \
520   s-conca5$(objext) \
521   s-conca6$(objext) \
522   s-conca7$(objext) \
523   s-conca8$(objext) \
524   s-conca9$(objext) \
525   s-crc32$(objext)  \
526   s-crtl$(objext)   \
527   s-dfmkio$(objext) \
528   s-dfmopr$(objext) \
529   s-dgmgop$(objext) \
530   s-dlmopr$(objext) \
531   s-diflio$(objext) \
532   s-diflmk$(objext) \
533   s-digemk$(objext) \
534   s-diinio$(objext) \
535   s-dilomk$(objext) \
536   s-dim$(objext)    \
537   s-dimkio$(objext) \
538   s-dimmks$(objext) \
539   s-direio$(objext) \
540   s-dlmkio$(objext) \
541   s-dmotpr$(objext) \
542   s-dsaser$(objext) \
543   s-elaall$(objext) \
544   s-excdeb$(objext) \
545   s-except$(objext) \
546   s-exctab$(objext) \
547   s-exnint$(objext) \
548   s-exnllf$(objext) \
549   s-exnlli$(objext) \
550   s-expint$(objext) \
551   s-explli$(objext) \
552   s-expllu$(objext) \
553   s-expmod$(objext) \
554   s-expuns$(objext) \
555   s-fatflt$(objext) \
556   s-fatgen$(objext) \
557   s-fatlfl$(objext) \
558   s-fatllf$(objext) \
559   s-fatsfl$(objext) \
560   s-ficobl$(objext) \
561   s-filatt$(objext) \
562   s-fileio$(objext) \
563   s-finmas$(objext) \
564   s-finroo$(objext) \
565   s-flocon$(objext) \
566   s-fore$(objext)   \
567   s-gearop$(objext) \
568   s-geveop$(objext) \
569   s-gloloc$(objext) \
570   s-htable$(objext) \
571   s-imenne$(objext) \
572   s-imgbiu$(objext) \
573   s-imgboo$(objext) \
574   s-imgcha$(objext) \
575   s-imgdec$(objext) \
576   s-imgenu$(objext) \
577   s-imgint$(objext) \
578   s-imgllb$(objext) \
579   s-imglld$(objext) \
580   s-imglli$(objext) \
581   s-imgllu$(objext) \
582   s-imgllw$(objext) \
583   s-imgrea$(objext) \
584   s-imguns$(objext) \
585   s-imgwch$(objext) \
586   s-imgwiu$(objext) \
587   s-io$(objext)     \
588   s-llflex$(objext) \
589   s-maccod$(objext) \
590   s-mantis$(objext) \
591   s-mastop$(objext) \
592   s-memcop$(objext) \
593   s-memory$(objext) \
594   s-multip$(objext) \
595   s-os_lib$(objext) \
596   s-oscons$(objext) \
597   s-osprim$(objext) \
598   s-pack03$(objext) \
599   s-pack05$(objext) \
600   s-pack06$(objext) \
601   s-pack07$(objext) \
602   s-pack09$(objext) \
603   s-pack10$(objext) \
604   s-pack11$(objext) \
605   s-pack12$(objext) \
606   s-pack13$(objext) \
607   s-pack14$(objext) \
608   s-pack15$(objext) \
609   s-pack17$(objext) \
610   s-pack18$(objext) \
611   s-pack19$(objext) \
612   s-pack20$(objext) \
613   s-pack21$(objext) \
614   s-pack22$(objext) \
615   s-pack23$(objext) \
616   s-pack24$(objext) \
617   s-pack25$(objext) \
618   s-pack26$(objext) \
619   s-pack27$(objext) \
620   s-pack28$(objext) \
621   s-pack29$(objext) \
622   s-pack30$(objext) \
623   s-pack31$(objext) \
624   s-pack33$(objext) \
625   s-pack34$(objext) \
626   s-pack35$(objext) \
627   s-pack36$(objext) \
628   s-pack37$(objext) \
629   s-pack38$(objext) \
630   s-pack39$(objext) \
631   s-pack40$(objext) \
632   s-pack41$(objext) \
633   s-pack42$(objext) \
634   s-pack43$(objext) \
635   s-pack44$(objext) \
636   s-pack45$(objext) \
637   s-pack46$(objext) \
638   s-pack47$(objext) \
639   s-pack48$(objext) \
640   s-pack49$(objext) \
641   s-pack50$(objext) \
642   s-pack51$(objext) \
643   s-pack52$(objext) \
644   s-pack53$(objext) \
645   s-pack54$(objext) \
646   s-pack55$(objext) \
647   s-pack56$(objext) \
648   s-pack57$(objext) \
649   s-pack58$(objext) \
650   s-pack59$(objext) \
651   s-pack60$(objext) \
652   s-pack61$(objext) \
653   s-pack62$(objext) \
654   s-pack63$(objext) \
655   s-parame$(objext) \
656   s-parint$(objext) \
657   s-pooglo$(objext) \
658   s-pooloc$(objext) \
659   s-poosiz$(objext) \
660   s-powtab$(objext) \
661   s-purexc$(objext) \
662   s-rannum$(objext) \
663   s-ransee$(objext) \
664   s-regexp$(objext) \
665   s-regpat$(objext) \
666   s-resfil$(objext) \
667   s-restri$(objext) \
668   s-rident$(objext) \
669   s-rpc$(objext)    \
670   s-scaval$(objext) \
671   s-secsta$(objext) \
672   s-sequio$(objext) \
673   s-shasto$(objext) \
674   s-soflin$(objext) \
675   s-soliin$(objext) \
676   s-spsufi$(objext) \
677   s-stache$(objext) \
678   s-stalib$(objext) \
679   s-stausa$(objext) \
680   s-stoele$(objext) \
681   s-stopoo$(objext) \
682   s-stposu$(objext) \
683   s-stratt$(objext) \
684   s-strhas$(objext) \
685   s-string$(objext) \
686   s-ststop$(objext) \
687   s-tasloc$(objext) \
688   s-traceb$(objext) \
689   s-traent$(objext) \
690   s-unstyp$(objext) \
691   s-utf_32$(objext) \
692   s-valboo$(objext) \
693   s-valcha$(objext) \
694   s-valdec$(objext) \
695   s-valenu$(objext) \
696   s-valint$(objext) \
697   s-vallld$(objext) \
698   s-vallli$(objext) \
699   s-valllu$(objext) \
700   s-valrea$(objext) \
701   s-valuns$(objext) \
702   s-valuti$(objext) \
703   s-valwch$(objext) \
704   s-veboop$(objext) \
705   s-vector$(objext) \
706   s-vercon$(objext) \
707   s-wchcnv$(objext) \
708   s-wchcon$(objext) \
709   s-wchjis$(objext) \
710   s-wchstw$(objext) \
711   s-wchwts$(objext) \
712   s-widboo$(objext) \
713   s-widcha$(objext) \
714   s-widenu$(objext) \
715   s-widlli$(objext) \
716   s-widllu$(objext) \
717   s-widwch$(objext) \
718   s-wwdcha$(objext) \
719   s-wwdenu$(objext) \
720   s-wwdwch$(objext) \
721   sequenio$(objext) \
722   system$(objext) \
723   text_io$(objext) \
724   unchconv$(objext) \
725   unchdeal$(objext) \
726   $(GNATRTL_ALTIVEC_OBJS) \
727   $(GNATRTL_SOCKETS_OBJS) \
728   $(EXTRA_GNATRTL_NONTASKING_OBJS)
730 # LIBGNAT_TARGET_PAIRS is a list of pairs of filenames.
731 # The members of each pair must be separated by a '<' and no whitespace.
732 # Each pair must be separated by some amount of whitespace from the following
733 # pair.
735 # Non-tasking case:
737 LIBGNAT_TARGET_PAIRS = \
738 a-intnam.ads<libgnarl/a-intnam__dummy.ads \
739 s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
740 s-intman.adb<libgnarl/s-intman__dummy.adb \
741 s-osinte.ads<libgnarl/s-osinte__dummy.ads \
742 s-osprim.adb<libgnat/s-osprim__posix.adb \
743 s-taprop.adb<libgnarl/s-taprop__dummy.adb \
744 s-taspri.ads<libgnarl/s-taspri__dummy.ads
746 # When using the GCC exception handling mechanism, we need to use an
747 # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
749 EH_MECHANISM=
751 # Compilation options for the GCC-SJLJ RTS. This may be augmented for
752 # target specific contexts, e.g. to add -fno-omit-frame-pointer for backtrace
753 # computations.
754 GNATLIBCFLAGS_FOR_GCCSJLJ=-fsjlj
756 # Default shared object option. Note that we rely on the fact that the "soname"
757 # option will always be present and last in this flag, so that we can have
758 # $(SO_OPTS)libgnat-x.xx
760 SO_OPTS = -Wl,-soname,
762 # Default gnatlib-shared target.
763 # By default, equivalent to gnatlib.
764 # Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
765 # target when supported.
766 GNATLIB_SHARED = gnatlib
768 # By default, build socket support units. On platforms that do not support
769 # sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
770 # to LIBGNAT_TARGET_PAIRS.
772 GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
773   g-soliop$(objext) g-sothco$(objext)
775 DUMMY_SOCKETS_TARGET_PAIRS = \
776   g-socket.adb<libgnat/g-socket__dummy.adb \
777   g-socket.ads<libgnat/g-socket__dummy.ads \
778   g-socthi.adb<libgnat/g-socthi__dummy.adb \
779   g-socthi.ads<libgnat/g-socthi__dummy.ads \
780   g-sothco.adb<libgnat/g-sothco__dummy.adb \
781   g-sothco.ads<libgnat/g-sothco__dummy.ads
783 # On platforms where atomic increment/decrement operations are supported,
784 # special version of Ada.Strings.Unbounded package can be used.
786 ATOMICS_TARGET_PAIRS = \
787   a-coinho.adb<libgnat/a-coinho__shared.adb \
788   a-coinho.ads<libgnat/a-coinho__shared.ads \
789   a-stunau.adb<libgnat/a-stunau__shared.adb \
790   a-suteio.adb<libgnat/a-suteio__shared.adb \
791   a-strunb.ads<libgnat/a-strunb__shared.ads \
792   a-strunb.adb<libgnat/a-strunb__shared.adb \
793   a-stwiun.adb<libgnat/a-stwiun__shared.adb \
794   a-stwiun.ads<libgnat/a-stwiun__shared.ads \
795   a-swunau.adb<libgnat/a-swunau__shared.adb \
796   a-swuwti.adb<libgnat/a-swuwti__shared.adb \
797   a-stzunb.adb<libgnat/a-stzunb__shared.adb \
798   a-stzunb.ads<libgnat/a-stzunb__shared.ads \
799   a-szunau.adb<libgnat/a-szunau__shared.adb \
800   a-szuzti.adb<libgnat/a-szuzti__shared.adb
802 ATOMICS_BUILTINS_TARGET_PAIRS = \
803   s-atocou.adb<libgnat/s-atocou__builtin.adb
805 # Special version of units for x86 and x86-64 platforms.
807 X86_TARGET_PAIRS = \
808   a-numaux.ads<libgnat/a-numaux__x86.ads \
809   a-numaux.adb<libgnat/a-numaux__x86.adb \
810   s-atocou.adb<libgnat/s-atocou__x86.adb
812 X86_64_TARGET_PAIRS = \
813   a-numaux.ads<libgnat/a-numaux__x86.ads \
814   a-numaux.adb<libgnat/a-numaux__x86.adb \
815   s-atocou.adb<libgnat/s-atocou__builtin.adb
817 # Implementation of symbolic traceback based on dwarf
818 TRASYM_DWARF_UNIX_PAIRS = \
819   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
820   s-mmosin.ads<libgnat/s-mmosin__unix.ads \
821   s-mmosin.adb<libgnat/s-mmosin__unix.adb \
822   s-mmauni.ads<libgnat/s-mmauni__long.ads
824 TRASYM_DWARF_MINGW_PAIRS = \
825   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
826   s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
827   s-mmosin.adb<libgnat/s-mmosin__mingw.adb
829 TRASYM_DWARF_COMMON_OBJS = s-objrea$(objext) s-dwalin$(objext) s-mmap$(objext) \
830   s-mmosin$(objext)
832 TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)
834 TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
836 # Shared library version
837 LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(GNAT_SRC)/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
839 # Additional object files from C source to be added to libgnat.
840 EXTRA_LIBGNAT_OBJS=
842 # Additional C source files to be added to libgnat without corresponding
843 # object file (#included files). This should include at least the GNAT
844 # specific header files required to rebuild the runtime library from sources.
845 EXTRA_LIBGNAT_SRCS=
847 # Additional object files from Ada sources to be added in libgnat
848 EXTRA_GNATRTL_NONTASKING_OBJS=
850 # Additional object files from Ada sources to be added in libgnarl
851 EXTRA_GNATRTL_TASKING_OBJS=
853 # Subsets of extra libgnat sources that always go together
854 VX_SIGTRAMP_EXTRA_SRCS=sigtramp.h sigtramp-vxworks-target.inc
856 # Additional object files that should go in the same directory as libgnat,
857 # aside the library itself. Typically useful for crtbegin/crtend kind of files.
858 EXTRA_ADALIB_OBJS=
860 # crt files for VxWorks exception tables registration, referenced by
861 # spec files in the runtime library.
862 VX_CRTBE_EXTRA_ADALIB_OBJS=vx_crtbegin.o vx_crtbegin_array.o vx_crtend.o
864 # Contructor attributes (with priorities) are only supported on VxWorks 7
865 # or for RTPs.
866 ifneq ($(strip $(filter vxworks7% rtp%,$(target_os) $(THREAD_KIND))),)
867 VX_CRTBE_EXTRA_ADALIB_OBJS+=vx_crtbegin_attr.o
868 endif
870 # GCC spec files to be installed in $(libsubdir), so --specs=<spec-filename>
871 # finds them at runtime.
872 GCC_SPEC_FILES=
874 # $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT.
875 # $(strip STRING) removes leading and trailing spaces from STRING.
876 # If what's left is null then it's a match.
878 # PowerPC and e500v2 VxWorks
879 ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworksspe vxworks7 vxworks7spe,$(target_cpu) $(target_vendor) $(target_os))),)
881   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
882      ARCH_STR=e500
883      # gcc config translates the target e500v2-wrs-vxworks to
884      # powerpc-wrs-vxworksspe. Let's keep the original alias here when
885      # generating s-oscons.ads.
886      target=$(target_alias)
887   else
888      ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
889         ARCH_STR=ppc64
890      else
891         ARCH_STR=ppc
892      endif
893   endif
895   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
896   SVX=system-$(VX)
897   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
899   LIBGNAT_TARGET_PAIRS = \
900   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
901   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
902   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
903   s-intman.ads<libgnarl/s-intman__vxworks.ads \
904   s-intman.adb<libgnarl/s-intman__vxworks.adb \
905   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
906   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
907   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
908   s-parame.ads<libgnat/s-parame__vxworks.ads \
909   s-parame.adb<libgnat/s-parame__vxworks.adb \
910   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
911   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
912   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
913   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
914   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
915   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
916   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
917   $(ATOMICS_TARGET_PAIRS) \
918   $(ATOMICS_BUILTINS_TARGET_PAIRS)
920   # VxWorks 5 and 6 both use the same target triplet making them
921   # indistinguishable in the context of this make file. Package
922   # System.Stack_Checking.Operations is not needed on VxWorks 6 as it leads to
923   # an undefined symbol when building a dynamic shared library. To alleviate
924   # this problem and distinguish this case, we use the THREAD_KIND and include
925   # the package only in default mode.
927   ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
928     LIBGNAT_TARGET_PAIRS += \
929       s-stchop.ads<libgnat/s-stchop__limit.ads \
930       s-stchop.adb<libgnat/s-stchop__vxworks.adb
931     EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
932   endif
934   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
936   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
937     LIBGNAT_TARGET_PAIRS += \
938     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
939     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
940     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
941     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp.ads
943     EH_MECHANISM=-gcc
944   else
945     ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
946       LIBGNAT_TARGET_PAIRS += \
947       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
948       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
949       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
950       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
951       system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
953       EH_MECHANISM=-gcc
954       EXTRA_LIBGNAT_OBJS+=affinity.o
955     else
956       ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
957         LIBGNAT_TARGET_PAIRS += \
958         s-interr.adb<libgnarl/s-interr__vxworks.adb \
959         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
960         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
961         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
962         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
963         system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
965         EH_MECHANISM=-gcc
966         EXTRA_LIBGNAT_OBJS+=affinity.o
967       else
968         LIBGNAT_TARGET_PAIRS += \
969         s-interr.adb<libgnarl/s-interr__vxworks.adb \
970         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
972         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
973           EH_MECHANISM=-gcc
974           LIBGNAT_TARGET_PAIRS += \
975           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
976           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
977           system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
978         else
979           LIBGNAT_TARGET_PAIRS += \
980           system.ads<libgnat/system-vxworks-ppc.ads
981         endif
982       endif
983       EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
984     endif
985   endif
987   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
988   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
990   EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o
992   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
994   EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
995   EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
997   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
998     ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
999       GCC_SPEC_FILES+=vxworks7-ppc64-rtp-base-link.spec
1000     else
1001       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1002     endif
1003   else
1004     GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
1005     GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
1006     GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
1007   endif
1008 endif
1010 # PowerPC and e500v2 VxWorks 653
1011 ifeq ($(strip $(filter-out powerpc% wrs vxworksae vxworksaespe,$(target_cpu) $(target_vendor) $(target_os))),)
1013   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
1014      ARCH_STR=e500
1015      # gcc config translates the target e500v2-wrs-vxworks to
1016      # powerpc-wrs-vxworksspe. Let's keep the original alias here when
1017      # generating s-oscons.ads.
1018      target=$(target_alias)
1019   else
1020      ARCH_STR=ppc
1021   endif
1023   # target pairs for vthreads runtime
1024   LIBGNAT_TARGET_PAIRS = \
1025   a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
1026   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1027   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1028   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
1029   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1030   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1031   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1032   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1033   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1034   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1035   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1036   s-parame.ads<libgnat/s-parame__ae653.ads \
1037   s-parame.adb<libgnat/s-parame__vxworks.adb \
1038   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1039   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1040   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1041   s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1042   s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
1043   s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
1044   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
1045   system.ads<libgnat/system-vxworks-$(ARCH_STR)-vthread.ads \
1046   $(ATOMICS_TARGET_PAIRS) \
1047   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1049   EH_MECHANISM=-gcc
1051   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1053   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
1054   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1056   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1057   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1059   # Extra pairs for the vthreads runtime
1060   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
1061     LIBGNAT_TARGET_PAIRS += \
1062     s-thread.adb<libgnat/s-thread__ae653.adb \
1063     s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
1064     $(DUMMY_SOCKETS_TARGET_PAIRS)
1066     GNATRTL_SOCKETS_OBJS =
1067     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
1068   else
1069     LIBGNAT_TARGET_PAIRS += \
1070     g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1071     g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1072     g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1073   endif
1075 endif
1077 # VxWorksae / VxWorks 653 for x86 (vxsim) - ?? VxWorks mils not implemented
1078 ifeq ($(strip $(filter-out %86 wrs vxworksae,$(target_cpu) $(target_vendor) $(target_os))),)
1079   # target pairs for kernel + vthreads runtime
1080   LIBGNAT_TARGET_PAIRS = \
1081   a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
1082   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1083   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1084   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
1085   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1086   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1087   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1088   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1089   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1090   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1091   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1092   s-parame.ads<libgnat/s-parame__ae653.ads \
1093   s-parame.adb<libgnat/s-parame__vxworks.adb \
1094   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1095   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1096   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1097   s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1098   s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
1099   s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
1100   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
1101   system.ads<libgnat/system-vxworks-x86-vthread.ads \
1102   $(ATOMICS_TARGET_PAIRS) \
1103   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1105   EH_MECHANISM=-gcc
1107   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1109   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-thread.o
1110   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1112   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1113   GNATRTL_SOCKETS_OBJS =
1115   # Extra pairs for the vthreads runtime
1116   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
1117     LIBGNAT_TARGET_PAIRS += \
1118     s-thread.adb<libgnat/s-thread__ae653.adb \
1119     s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
1120     $(DUMMY_SOCKETS_TARGET_PAIRS)
1122     GNATRTL_SOCKETS_OBJS =
1123     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
1124   else
1125     LIBGNAT_TARGET_PAIRS += \
1126     g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1127     g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1128     g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1129   endif
1131 endif
1133 # x86/x86_64 VxWorks
1134 ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7,$(target_cpu) $(target_vendor) $(target_os))),)
1136   EH_MECHANISM=-gcc
1138   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
1139   SVX=system-$(VX)
1140   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
1142   ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
1143      X86CPU=x86_64
1144      LIBGNAT_TARGET_PAIRS=$(X86_64_TARGET_PAIRS)
1145   else
1146      X86CPU=x86
1147      LIBGNAT_TARGET_PAIRS=$(X86_TARGET_PAIRS)
1148   endif
1150   LIBGNAT_TARGET_PAIRS+= \
1151   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1152   i-vxwork.ads<libgnat/i-vxwork__x86.ads \
1153   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1154   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1155   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1156   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1157   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1158   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1159   s-parame.ads<libgnat/s-parame__vxworks.ads \
1160   s-parame.adb<libgnat/s-parame__vxworks.adb \
1161   s-stchop.ads<libgnat/s-stchop__limit.ads \
1162   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1163   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1164   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1165   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1166   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
1167   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1168   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1169   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1170   $(ATOMICS_TARGET_PAIRS)
1172   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1174   # The CPU setting for VxSim varies with the
1175   # host (Windows or Linux)
1176   # target (VxWorks6 or VxWorks7)
1177   # runtime (rtp or kernel)
1178   # -------------------------------------------------------------
1179   #                                     vx6             vx7
1180   # Windows (host_os = mingw32)
1181   #     kernel                          SIMNT           SIMNT
1182   #     rtp                             SIMPENTIUM      SIMNT
1183   # Linux (host_os = linux-gnu)
1184   #     kernel                          SIMLINUX        SIMLINUX
1185   #     rtp                             SIMPENTIUM      SIMLINUX
1186   # -------------------------------------------------------------
1187   # It is overridden by VXSIM_CPU only in files init-vxsim.c and
1188   # sigtramp-vxworks-vxsim.c which contain functions determined at
1189   # runtime to be called if a program is running on VxSim vs real hardware
1190   # (due to differences in signal context for unwinding).
1192   ifneq ($(strip $(filter-out vxworks7, $(target_os))),)
1193     ifeq ($(strip $(filter-out vxworks rtp rtp-smp,$(target_os) $(THREAD_KIND))),)
1194       VXSIM_CPU = SIMPENTIUM
1195     else
1196       ifeq ($(strip $(filter-out kernel kernel-smp rtp rtp-smp,$(THREAD_KIND))),)
1197         ifeq ($(strip $(filter-out linux%,$(host_os))),)
1198           # Linux
1199           VXSIM_CPU = SIMLINUX
1200         else
1201           # Windows
1202           VXSIM_CPU = SIMNT
1203         endif
1204       endif
1205     endif
1207     GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
1208   endif
1210   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
1211     LIBGNAT_TARGET_PAIRS += \
1212     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1213     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
1214     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
1215     system.ads<libgnat/$(SVX)-x86-rtp.ads
1216   else
1217     ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
1218       LIBGNAT_TARGET_PAIRS += \
1219       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1220       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1221       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1222       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1223       system.ads<libgnat/$(SVX)-$(X86CPU)-rtp-smp.ads
1225       EXTRA_LIBGNAT_OBJS+=affinity.o
1226     else
1227       ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
1228         LIBGNAT_TARGET_PAIRS += \
1229         s-interr.adb<libgnarl/s-interr__vxworks.adb \
1230         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1231         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1232         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1233         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1234         system.ads<libgnat/$(SVX)-$(X86CPU)-kernel.ads
1236         EXTRA_LIBGNAT_OBJS+=affinity.o
1237       else
1238         LIBGNAT_TARGET_PAIRS += \
1239         s-interr.adb<libgnarl/s-interr__vxworks.adb \
1240         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
1242         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
1243           LIBGNAT_TARGET_PAIRS += \
1244           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1245           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
1246           system.ads<libgnat/$(SVX)-x86-kernel.ads
1247         else
1248           LIBGNAT_TARGET_PAIRS += \
1249           system.ads<libgnat/system-vxworks-x86.ads
1250         endif
1251       endif
1253       EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
1254     endif
1255   endif
1257   EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
1258   EXTRA_GNATRTL_TASKING_OBJS += i-vxinco.o s-vxwork.o s-vxwext.o
1260   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1262   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1263   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1265   EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
1266   EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
1268   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
1269     GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
1270   else
1271     GCC_SPEC_FILES+=vxworks-x86-link.spec
1272     GCC_SPEC_FILES+=vxworks-cert-x86-link.spec
1273     GCC_SPEC_FILES+=vxworks-smp-x86-link.spec
1274   endif
1275 endif
1277 # ARM and Aarch64 VxWorks
1278 ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
1280   ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
1281     ARCH_STR=aarch64
1282     VX=vxworks7
1283     EH_MECHANISM=-gcc
1284     SIGTRAMP_OBJ=sigtramp-vxworks.o
1285   else
1286     ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1287       ARCH_STR=arm
1288       ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
1289         VX=vxworks7
1290         EH_MECHANISM=-arm
1291         SIGTRAMP_OBJ=sigtramp-armvxworks.o
1292       else
1293         VX=vxworks
1294         EH_MECHANISM=-gcc
1295         SIGTRAMP_OBJ=sigtramp-vxworks.o
1296       endif
1297     else
1298       ARCH_STR=coff
1299     endif
1300   endif
1302   SVX=system-$(VX)
1303   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
1305   LIBGNAT_TARGET_PAIRS = \
1306   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1307   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1308   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1309   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1310   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1311   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1312   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1313   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1314   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1315   s-parame.ads<libgnat/s-parame__vxworks.ads \
1316   s-parame.adb<libgnat/s-parame__vxworks.adb \
1317   s-stchop.ads<libgnat/s-stchop__limit.ads \
1318   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1319   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1320   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1321   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1322   s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads \
1323   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1324   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1325   g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1327   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1329   ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
1330     LIBGNAT_TARGET_PAIRS += \
1331     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1332     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1333     s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1334     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1335     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
1337     EXTRA_LIBGNAT_OBJS+=affinity.o
1339     EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1340     EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1341   else
1342     ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
1343       LIBGNAT_TARGET_PAIRS += \
1344       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1345       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1346       s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1347       s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1348       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
1350       EXTRA_LIBGNAT_OBJS+=affinity.o
1352       EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1353       EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1354     else
1355       LIBGNAT_TARGET_PAIRS += \
1356       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1357       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
1359       ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
1360         LIBGNAT_TARGET_PAIRS += \
1361         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1362         s-vxwext.adb<libgnarl/s-vxwext__kernel.adb
1364         EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1365         EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1366       endif
1367     endif
1368   endif
1370   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o \
1371     s-stchop.o
1372   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1374   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1376   ifeq ($(strip $(filter-out arm vxworks7%, $(target_cpu) $(target_os))),)
1377     GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1378   else
1379     ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
1380       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1381     endif
1382     EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
1383     EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
1385     ifneq ($(strip $(filter-out vxworks7%, $(target_os))),)
1386       GCC_SPEC_FILES+=vxworks-arm-link.spec
1387       GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
1388     endif
1389   endif
1390 endif
1392 # ARM android
1393 ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
1394   LIBGNAT_TARGET_PAIRS = \
1395   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1396   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1397   s-intman.adb<libgnarl/s-intman__android.adb \
1398   s-linux.ads<libgnarl/s-linux__android.ads \
1399   s-osinte.adb<libgnarl/s-osinte__android.adb \
1400   s-osinte.ads<libgnarl/s-osinte__android.ads \
1401   s-osprim.adb<libgnat/s-osprim__posix.adb \
1402   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1403   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1404   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1405   $(ATOMICS_TARGET_PAIRS) \
1406   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1407   system.ads<libgnat/system-linux-arm.ads
1409   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1411   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1412   EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
1413   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1414   EH_MECHANISM=-arm
1415   THREADSLIB =
1416   GNATLIB_SHARED = gnatlib-shared-dual
1417   LIBRARY_VERSION := $(LIB_VERSION)
1418 endif
1420 # AARCH64 QNX
1421 ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),)
1422   LIBGNAT_TARGET_PAIRS = \
1423   a-intnam.ads<libgnarl/a-intnam__qnx.ads \
1424   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1425   s-intman.adb<libgnarl/s-intman__qnx.adb \
1426   s-osinte.adb<libgnarl/s-osinte__qnx.adb \
1427   s-osinte.ads<libgnarl/s-osinte__qnx.ads \
1428   s-osprim.adb<libgnat/s-osprim__posix.adb \
1429   s-qnx.ads<libgnarl/s-qnx.ads \
1430   s-taprop.adb<libgnarl/s-taprop__qnx.adb \
1431   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1432   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1433   g-soliop.ads<libgnat/g-soliop__qnx.ads \
1434   $(ATOMICS_TARGET_PAIRS) \
1435   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1436   system.ads<libgnat/system-qnx-aarch64.ads
1438   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1440   EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
1441   EXTRA_LIBGNAT_OBJS+=sigtramp-qnx.o
1442   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1443   EH_MECHANISM=-gcc
1445   SO_OPTS= -shared-libgcc -Wl,-soname,
1446   MISCLIB= -lsocket
1447   THREADSLIB=
1448   GNATLIB_SHARED = gnatlib-shared-dual
1449   LIBRARY_VERSION := $(LIB_VERSION)
1450 endif
1452 # Sparc Solaris
1453 ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
1454   LIBGNAT_TARGET_PAIRS = \
1455   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1456   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1457   s-intman.adb<libgnarl/s-intman__solaris.adb \
1458   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1459   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1460   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1461   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1462   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1463   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1464   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1465   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1466   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1467   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1468   $(TRASYM_DWARF_UNIX_PAIRS) \
1469   $(ATOMICS_TARGET_PAIRS) \
1470   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1471   system.ads<libgnat/system-solaris-sparc.ads
1473   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1475   EH_MECHANISM=-gcc
1476   THREADSLIB = -lposix4 -lthread
1477   MISCLIB = -lposix4 -lnsl -lsocket
1478   SO_OPTS = -Wl,-h,
1479   GNATLIB_SHARED = gnatlib-shared-dual
1480   GMEM_LIB = gmemlib
1481   LIBRARY_VERSION := $(LIB_VERSION)
1482 endif
1484 # x86 and x86-64 solaris
1485 ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
1486   LIBGNAT_TARGET_PAIRS_COMMON = \
1487   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1488   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1489   s-intman.adb<libgnarl/s-intman__solaris.adb \
1490   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1491   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1492   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1493   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1494   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1495   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1496   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1497   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1498   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1499   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1500   $(TRASYM_DWARF_UNIX_PAIRS) \
1501   $(ATOMICS_TARGET_PAIRS) \
1502   system.ads<libgnat/system-solaris-x86.ads
1504   ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
1505     ifeq ($(strip $(MULTISUBDIR)),/amd64)
1506       LIBGNAT_TARGET_PAIRS = \
1507       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1508     else
1509       LIBGNAT_TARGET_PAIRS = \
1510       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1511     endif
1512   else
1513     ifeq ($(strip $(MULTISUBDIR)),/32)
1514       LIBGNAT_TARGET_PAIRS = \
1515       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1516     else
1517       LIBGNAT_TARGET_PAIRS = \
1518       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1519     endif
1520   endif
1522   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1523   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1525   EH_MECHANISM=-gcc
1526   THREADSLIB = -lposix4 -lthread
1527   MISCLIB = -lposix4 -lnsl -lsocket
1528   SO_OPTS = -Wl,-h,
1529   GNATLIB_SHARED = gnatlib-shared-dual
1530   GMEM_LIB = gmemlib
1531   LIBRARY_VERSION := $(LIB_VERSION)
1532 endif
1534 # x86 Linux
1535 ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
1536   LIBGNAT_TARGET_PAIRS = \
1537   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1538   a-synbar.adb<libgnarl/a-synbar__posix.adb \
1539   a-synbar.ads<libgnarl/a-synbar__posix.ads \
1540   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1541   s-intman.adb<libgnarl/s-intman__posix.adb \
1542   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1543   $(TRASYM_DWARF_UNIX_PAIRS) \
1544   g-sercom.adb<libgnat/g-sercom__linux.adb \
1545   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
1546   a-exetim.adb<libgnarl/a-exetim__posix.adb \
1547   a-exetim.ads<libgnarl/a-exetim__default.ads \
1548   s-linux.ads<libgnarl/s-linux.ads \
1549   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1550   $(ATOMICS_TARGET_PAIRS) \
1551   system.ads<libgnat/system-linux-x86.ads
1553   ifeq ($(strip $(MULTISUBDIR)),/64)
1554     LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
1555   else
1556     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1557   endif
1559   LIBGNAT_TARGET_PAIRS += \
1560   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1561   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1562   s-osprim.adb<libgnat/s-osprim__posix.adb \
1563   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1564   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1565   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1566   s-taspri.ads<libgnarl/s-taspri__posix.ads
1568   EH_MECHANISM=-gcc
1569   THREADSLIB = -lpthread -lrt
1570   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1571   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1572   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
1574   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1576   GNATLIB_SHARED = gnatlib-shared-dual
1577   MISCLIB = -ldl
1578   GMEM_LIB = gmemlib
1579   LIBRARY_VERSION := $(LIB_VERSION)
1581   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
1582 endif
1584 # x86 kfreebsd
1585 ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
1586   LIBGNAT_TARGET_PAIRS = \
1587   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1588   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1589   s-intman.adb<libgnarl/s-intman__posix.adb \
1590   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1591   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1592   s-osprim.adb<libgnat/s-osprim__posix.adb \
1593   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1594   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1595   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1596   $(TRASYM_DWARF_UNIX_PAIRS) \
1597   $(ATOMICS_TARGET_PAIRS) \
1598   $(X86_TARGET_PAIRS) \
1599   system.ads<libgnat/system-freebsd.ads
1601   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1603   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1604   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1606   EH_MECHANISM=-gcc
1607   THREADSLIB = -lpthread
1608   GNATLIB_SHARED = gnatlib-shared-dual
1609   GMEM_LIB = gmemlib
1610   LIBRARY_VERSION := $(LIB_VERSION)
1611   MISCLIB = -lutil
1612 endif
1614 # i[3456]86-pc-gnu i.e. GNU Hurd
1615 ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
1616   LIBGNAT_TARGET_PAIRS = \
1617   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1618   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1619   s-intman.adb<libgnarl/s-intman__posix.adb \
1620   s-osinte.adb<libgnarl/s-osinte__gnu.adb \
1621   s-osinte.ads<libgnarl/s-osinte__gnu.ads \
1622   s-osprim.adb<libgnat/s-osprim__posix.adb \
1623   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1624   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1625   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1626   $(ATOMICS_TARGET_PAIRS) \
1627   $(X86_TARGET_PAIRS) \
1628   system.ads<libgnat/system-freebsd.ads
1630   TOOLS_TARGET_PAIRS =  indepsw.adb<indepsw-gnu.adb
1632   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1634   EH_MECHANISM=-gcc
1635   THREADSLIB = -lpthread
1636   GNATLIB_SHARED = gnatlib-shared-dual
1637   GMEM_LIB = gmemlib
1638   LIBRARY_VERSION := $(LIB_VERSION)
1639 endif
1641 ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
1642   LIBGNAT_TARGET_PAIRS = \
1643   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1644   a-numaux.adb<libgnat/a-numaux__x86.adb \
1645   a-numaux.ads<libgnat/a-numaux__x86.ads \
1646   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1647   s-intman.adb<libgnarl/s-intman__posix.adb \
1648   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1649   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1650   s-osprim.adb<libgnat/s-osprim__posix.adb \
1651   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1652   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1653   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1654   system.ads<libgnat/system-freebsd.ads
1656   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1658   EH_MECHANISM=-gcc
1659   THREADSLIB = -lpthread
1660   GNATLIB_SHARED = gnatlib-shared-dual
1661   GMEM_LIB = gmemlib
1662   LIBRARY_VERSION := $(LIB_VERSION)
1663 endif
1665 # aarch64 FreeBSD
1666 ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
1667   LIBGNAT_TARGET_PAIRS = \
1668   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1669   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1670   s-intman.adb<libgnarl/s-intman__posix.adb \
1671   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1672   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1673   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1674   s-osprim.adb<libgnat/s-osprim__posix.adb \
1675   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1676   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1677   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1678   $(ATOMICS_TARGET_PAIRS) \
1679   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1680   system.ads<libgnat/system-freebsd.ads
1682   GNATLIB_SHARED = gnatlib-shared-dual
1684   EH_MECHANISM=-gcc
1685   THREADSLIB= -lpthread
1686   GMEM_LIB = gmemlib
1687   LIBRARY_VERSION := $(LIB_VERSION)
1688   MISCLIB = -lutil
1689 endif
1691 # x86 FreeBSD
1692 ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
1693   LIBGNAT_TARGET_PAIRS = \
1694   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1695   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1696   s-intman.adb<libgnarl/s-intman__posix.adb \
1697   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1698   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1699   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1700   s-osprim.adb<libgnat/s-osprim__posix.adb \
1701   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1702   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1703   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1704   $(TRASYM_DWARF_UNIX_PAIRS) \
1705   $(ATOMICS_TARGET_PAIRS) \
1706   $(X86_TARGET_PAIRS) \
1707   system.ads<libgnat/system-freebsd.ads
1709   GNATLIB_SHARED = gnatlib-shared-dual
1711   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1712   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1714   EH_MECHANISM=-gcc
1715   THREADSLIB= -lpthread
1716   GMEM_LIB = gmemlib
1717   LIBRARY_VERSION := $(LIB_VERSION)
1718   MISCLIB = -lutil
1719 endif
1721 # x86-64 FreeBSD
1722 ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
1723   LIBGNAT_TARGET_PAIRS = \
1724   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1725   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1726   s-intman.adb<libgnarl/s-intman__posix.adb \
1727   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1728   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1729   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1730   s-osprim.adb<libgnat/s-osprim__posix.adb \
1731   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1732   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1733   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1734   $(TRASYM_DWARF_UNIX_PAIRS) \
1735   $(ATOMICS_TARGET_PAIRS) \
1736   $(X86_64_TARGET_PAIRS) \
1737   system.ads<libgnat/system-freebsd.ads
1739   GNATLIB_SHARED = gnatlib-shared-dual
1741   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1742   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1744   EH_MECHANISM=-gcc
1745   THREADSLIB= -lpthread
1746   GMEM_LIB = gmemlib
1747   LIBRARY_VERSION := $(LIB_VERSION)
1748   MISCLIB = -lutil
1749 endif
1751 # x86-64 DragonFly
1752 ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
1753   LIBGNAT_TARGET_PAIRS = \
1754   a-intnam.ads<libgnarl/a-intnam__dragonfly.ads \
1755   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1756   s-intman.adb<libgnarl/s-intman__posix.adb \
1757   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1758   s-osinte.adb<libgnarl/s-osinte__dragonfly.adb \
1759   s-osinte.ads<libgnarl/s-osinte__dragonfly.ads \
1760   s-osprim.adb<libgnat/s-osprim__posix.adb \
1761   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1762   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1763   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1764   $(ATOMICS_TARGET_PAIRS) \
1765   $(X86_64_TARGET_PAIRS) \
1766   system.ads<libgnat/system-dragonfly-x86_64.ads
1768   GNATLIB_SHARED = gnatlib-shared-dual
1770   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1772   EH_MECHANISM=-gcc
1773   THREADSLIB= -lpthread
1774   GMEM_LIB = gmemlib
1775   LIBRARY_VERSION := $(LIB_VERSION)
1776   MISCLIB = -lutil
1777 endif
1779 # S390 Linux
1780 ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
1781   LIBGNAT_TARGET_PAIRS = \
1782   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1783   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1784   s-intman.adb<libgnarl/s-intman__posix.adb \
1785   s-linux.ads<libgnarl/s-linux.ads \
1786   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1787   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1788   s-osprim.adb<libgnat/s-osprim__posix.adb \
1789   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1790   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1791   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1792   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
1793   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1794   system.ads<libgnat/system-linux-s390.ads
1796   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1798   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1799   EH_MECHANISM=-gcc
1800   THREADSLIB = -lpthread
1801   GNATLIB_SHARED = gnatlib-shared-dual
1802   LIBRARY_VERSION := $(LIB_VERSION)
1803 endif
1805 # HP/PA HP-UX 10
1806 ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
1807   LIBGNAT_TARGET_PAIRS = \
1808   a-excpol.adb<libgnat/a-excpol__abort.adb \
1809   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1810   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1811   s-interr.adb<libgnarl/s-interr__sigaction.adb \
1812   s-intman.adb<libgnarl/s-intman__posix.adb \
1813   s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
1814   s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
1815   s-parame.ads<libgnat/s-parame__hpux.ads \
1816   s-osprim.adb<libgnat/s-osprim__posix.adb \
1817   s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
1818   s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
1819   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1820   system.ads<libgnat/system-hpux.ads
1822   EH_MECHANISM=-gcc
1823 endif
1825 # HP/PA HP-UX 11
1826 ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
1827   LIBGNAT_TARGET_PAIRS = \
1828   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1829   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1830   s-intman.adb<libgnarl/s-intman__posix.adb \
1831   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1832   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
1833   s-parame.ads<libgnat/s-parame__hpux.ads \
1834   s-osprim.adb<libgnat/s-osprim__posix.adb \
1835   s-traceb.adb<libgnat/s-traceb__hpux.adb \
1836   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1837   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1838   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1839   system.ads<libgnat/system-hpux.ads
1841   EH_MECHANISM=-gcc
1842   TGT_LIB = /usr/lib/libcl.a
1843   THREADSLIB = -lpthread
1844   GMEM_LIB = gmemlib
1845   soext = .sl
1846   SO_OPTS = -Wl,+h,
1847   GNATLIB_SHARED = gnatlib-shared-dual
1848   LIBRARY_VERSION := $(LIB_VERSION)
1849 endif
1851 # IBM AIX
1852 ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
1853   LIBGNAT_TARGET_PAIRS = \
1854   a-intnam.ads<libgnarl/a-intnam__aix.ads \
1855   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1856   s-intman.adb<libgnarl/s-intman__posix.adb \
1857   s-osinte.adb<libgnarl/s-osinte__aix.adb \
1858   s-osinte.ads<libgnarl/s-osinte__aix.ads \
1859   s-osprim.adb<libgnat/s-osprim__posix.adb \
1860   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1861   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1862   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1863   $(TRASYM_DWARF_UNIX_PAIRS) \
1864   $(ATOMICS_TARGET_PAIRS) \
1865   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1866   system.ads<libgnat/system-aix.ads
1868   ifneq ($(target_os),)
1869     ifeq ($(findstring ppc64, \
1870             $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
1871                      -print-multi-os-directory)), \
1872           ppc64)
1873       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-aix.adb
1874     else
1875       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1876     endif
1877   endif
1879   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1881   THREADSLIB = -lpthreads
1882   EH_MECHANISM=-gcc
1884   GMEM_LIB = gmemlib
1885 endif
1887 # LynxOS 178 and LynxOS 178 Elf
1888 ifeq ($(strip $(filter-out lynxos178%,$(target_os))),)
1889   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1891   LIBGNAT_TARGET_PAIRS = \
1892   a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
1893   g-soliop.ads<libgnat/g-soliop__lynxos.ads \
1894   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1895   s-intman.adb<libgnarl/s-intman__lynxos.adb \
1896   s-osinte.adb<libgnarl/s-osinte__lynxos178.adb \
1897   s-osprim.ads<libgnat/s-osprim__lynxos.ads \
1898   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1899   s-taspri.ads<libgnarl/s-taspri__lynxos.ads \
1900   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
1902   ifeq ($(strip $(filter-out powerpc%, $(target_cpu))),)
1903     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-ppc.ads
1904   endif
1905   ifeq ($(strip $(filter-out %86, $(target_cpu))),)
1906     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
1907     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1908   endif
1910   ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
1911     LIBGNAT_TARGET_PAIRS += \
1912     s-osinte.ads<libgnarl/s-osinte__lynxos178e.ads \
1913     s-osprim.adb<libgnat/s-osprim__posix2008.adb \
1914     s-tracon.adb<hie/s-tracon__ppc-eabi.adb
1915   endif
1917   EH_MECHANISM=-gcc
1918 endif
1920 # RTEMS
1921 ifeq ($(strip $(filter-out rtems%,$(target_os))),)
1922   LIBGNAT_TARGET_PAIRS = \
1923   system.ads<libgnat/system-rtems.ads \
1924   a-intnam.ads<libgnarl/a-intnam__rtems.ads \
1925   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1926   s-intman.adb<libgnarl/s-intman__posix.adb \
1927   s-osinte.adb<libgnarl/s-osinte__rtems.adb \
1928   s-osinte.ads<libgnarl/s-osinte__rtems.ads \
1929   s-osprim.adb<libgnat/s-osprim__rtems.adb \
1930   s-parame.adb<libgnat/s-parame__rtems.adb \
1931   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1932   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1933   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1934   s-stchop.adb<libgnat/s-stchop__rtems.adb \
1935   s-interr.adb<libgnarl/s-interr__hwint.adb
1936   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1937     EH_MECHANISM=-arm
1938   else
1939     EH_MECHANISM=-gcc
1940   endif
1941 endif
1943 # PikeOS
1944 ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
1945   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1946 endif
1948 # *-elf, *-eabi, or *-eabispe
1949 ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
1950   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1951 endif
1953 ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
1954   GNATRTL_SOCKETS_OBJS =
1956   LIBGNAT_TARGET_PAIRS = \
1957         a-intnam.ads<libgnarl/a-intnam__dummy.ads \
1958         s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1959         s-intman.adb<libgnarl/s-intman__dummy.adb \
1960         s-osinte.ads<libgnarl/s-osinte__dummy.ads \
1961         s-osprim.adb<libgnat/s-osprim__unix.adb \
1962         s-taprop.adb<libgnarl/s-taprop__dummy.adb \
1963         s-taspri.ads<libgnarl/s-taspri__dummy.ads \
1964         system.ads<libgnat/system-djgpp.ads \
1965         $(DUMMY_SOCKETS_TARGET_PAIRS)
1967   EH_MECHANISM=-gcc
1968 endif
1970 # Cygwin/Mingw32
1971 ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),)
1972   # Cygwin provides a full Posix environment, and so we use the default
1973   # versions g-socthi rather than the Windows-specific MinGW version.
1974   # Ideally we would use all the default versions for Cygwin and none
1975   # of the MinGW versions, but for historical reasons the Cygwin port
1976   # has always been a CygMing frankenhybrid and it is a long-term project
1977   # to disentangle them.
1978   ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
1979     LIBGNAT_TARGET_PAIRS = \
1980     g-socthi.ads<libgnat/g-socthi.ads \
1981     g-socthi.adb<libgnat/g-socthi.adb
1982   else
1983     LIBGNAT_TARGET_PAIRS = \
1984     g-socthi.ads<libgnat/g-socthi__mingw.ads \
1985     g-socthi.adb<libgnat/g-socthi__mingw.adb
1986   endif
1987   LIBGNAT_TARGET_PAIRS += \
1988   a-dirval.adb<libgnat/a-dirval__mingw.adb \
1989   a-excpol.adb<libgnat/a-excpol__abort.adb \
1990   s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
1991   s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1992   s-taspri.ads<libgnarl/s-taspri__mingw.ads \
1993   s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
1994   s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
1995   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1996   g-soliop.ads<libgnat/g-soliop__mingw.ads \
1997   $(ATOMICS_TARGET_PAIRS) \
1998   system.ads<libgnat/system-mingw.ads
2000   LIBGNAT_TARGET_PAIRS += \
2001   a-exetim.adb<libgnarl/a-exetim__mingw.adb \
2002   a-exetim.ads<libgnarl/a-exetim__mingw.ads \
2003   a-intnam.ads<libgnarl/a-intnam__mingw.ads \
2004   g-sercom.adb<libgnat/g-sercom__mingw.adb \
2005   $(TRASYM_DWARF_MINGW_PAIRS) \
2006   s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
2007   s-interr.adb<libgnarl/s-interr__sigaction.adb \
2008   s-intman.adb<libgnarl/s-intman__mingw.adb \
2009   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2010   s-osinte.ads<libgnarl/s-osinte__mingw.ads \
2011   s-osprim.adb<libgnat/s-osprim__mingw.adb \
2012   s-taprop.adb<libgnarl/s-taprop__mingw.adb
2014   ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
2015     ifeq ($(strip $(MULTISUBDIR)),/32)
2016       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2017       SO_OPTS= -m32 -Wl,-soname,
2018     else
2019       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2020       SO_OPTS = -m64 -Wl,-soname,
2021     endif
2022   else
2023     ifeq ($(strip $(MULTISUBDIR)),/64)
2024       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2025       SO_OPTS = -m64 -Wl,-soname,
2026     else
2027       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2028       SO_OPTS = -m32 -Wl,-soname,
2029     endif
2030   endif
2032   EXTRA_GNATRTL_NONTASKING_OBJS += \
2033     s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
2034   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
2035   EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
2036   EXTRA_LIBGNAT_SRCS+=mingw32.h
2037   MISCLIB = -lws2_32
2039   # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
2040   # auto-import support for array/record will be done.
2041   GNATLIB_SHARED = gnatlib-shared-win32
2043   EH_MECHANISM=-gcc
2045   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2047   GMEM_LIB = gmemlib
2048   EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
2049   EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
2050   soext = .dll
2051   LIBRARY_VERSION := $(LIB_VERSION)
2052 endif
2054 # Mips Linux
2055 ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
2056   LIBGNAT_TARGET_PAIRS = \
2057   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2058   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2059   s-intman.adb<libgnarl/s-intman__posix.adb \
2060   s-linux.ads<libgnarl/s-linux__mips.ads \
2061   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2062   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2063   s-osprim.adb<libgnat/s-osprim__posix.adb \
2064   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2065   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2066   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2067   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2068   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2069   g-sercom.adb<libgnat/g-sercom__linux.adb \
2070   system.ads<libgnat/system-linux-mips.ads
2072   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2074   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2075   EH_MECHANISM=-gcc
2076   THREADSLIB = -lpthread
2077   GNATLIB_SHARED = gnatlib-shared-dual
2078   GMEM_LIB = gmemlib
2079   LIBRARY_VERSION := $(LIB_VERSION)
2080 endif
2082 # PowerPC and e500v2 Linux
2083 ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
2084   LIBGNAT_TARGET_PAIRS_COMMON = \
2085   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2086   a-exetim.ads<libgnarl/a-exetim__default.ads \
2087   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2088   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2089   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2090   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2091   s-intman.adb<libgnarl/s-intman__posix.adb \
2092   s-linux.ads<libgnarl/s-linux.ads \
2093   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2094   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2095   g-sercom.adb<libgnat/g-sercom__linux.adb \
2096   $(TRASYM_DWARF_UNIX_PAIRS) \
2097   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2098   $(ATOMICS_TARGET_PAIRS) \
2099   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2100   system.ads<libgnat/system-linux-ppc.ads
2102   LIBGNAT_TARGET_PAIRS = \
2103     $(LIBGNAT_TARGET_PAIRS_COMMON) \
2104     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2105     s-osinte.ads<libgnarl/s-osinte__linux.ads \
2106     s-osprim.adb<libgnat/s-osprim__posix.adb \
2107     s-taprop.adb<libgnarl/s-taprop__linux.adb \
2108     s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2109     s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2110     s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads
2112   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2114   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2115   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2117   EH_MECHANISM=-gcc
2118   THREADSLIB = -lpthread -lrt
2119   GNATLIB_SHARED = gnatlib-shared-dual
2120   MISCLIB = -ldl
2121   GMEM_LIB = gmemlib
2122   LIBRARY_VERSION := $(LIB_VERSION)
2123 endif
2125 # ARM linux, GNU eabi
2126 ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
2127   LIBGNAT_TARGET_PAIRS = \
2128   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2129   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2130   s-intman.adb<libgnarl/s-intman__posix.adb \
2131   s-linux.ads<libgnarl/s-linux.ads \
2132   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2133   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2134   s-osprim.adb<libgnat/s-osprim__posix.adb \
2135   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2136   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2137   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2138   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2139   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2140   $(ATOMICS_TARGET_PAIRS) \
2141   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2142   system.ads<libgnat/system-linux-arm.ads
2144   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2146   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2147   EH_MECHANISM=-arm
2148   THREADSLIB = -lpthread
2149   GNATLIB_SHARED = gnatlib-shared-dual
2150   GMEM_LIB = gmemlib
2151   LIBRARY_VERSION := $(LIB_VERSION)
2152 endif
2154 # AArch64 Linux
2155 ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
2156   LIBGNAT_TARGET_PAIRS = \
2157   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2158   a-exetim.ads<libgnarl/a-exetim__default.ads \
2159   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2160   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2161   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2162   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2163   s-intman.adb<libgnarl/s-intman__posix.adb \
2164   s-linux.ads<libgnarl/s-linux.ads \
2165   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2166   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2167   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2168   s-osprim.adb<libgnat/s-osprim__posix.adb \
2169   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2170   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2171   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2172   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2173   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2174   g-sercom.adb<libgnat/g-sercom__linux.adb \
2175   $(ATOMICS_TARGET_PAIRS) \
2176   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2177   system.ads<libgnat/system-linux-arm.ads
2179   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2181   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2182   EH_MECHANISM=-gcc
2183   THREADSLIB=-lpthread -lrt
2184   GNATLIB_SHARED=gnatlib-shared-dual
2185   GMEM_LIB = gmemlib
2186   LIBRARY_VERSION := $(LIB_VERSION)
2187 endif
2189 # Sparc Linux
2190 ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
2191   LIBGNAT_TARGET_PAIRS = \
2192   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2193   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2194   s-intman.adb<libgnarl/s-intman__posix.adb \
2195   s-linux.ads<libgnarl/s-linux__sparc.ads \
2196   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2197   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2198   s-osprim.adb<libgnat/s-osprim__posix.adb \
2199   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2200   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2201   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2202   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2203   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2204   system.ads<libgnat/system-linux-sparc.ads
2206   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2208   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2209   EH_MECHANISM=-gcc
2210   THREADSLIB = -lpthread
2211   GNATLIB_SHARED = gnatlib-shared-dual
2212   GMEM_LIB = gmemlib
2213   LIBRARY_VERSION := $(LIB_VERSION)
2214 endif
2216 # HP/PA Linux
2217 ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
2218   LIBGNAT_TARGET_PAIRS = \
2219   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2220   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2221   s-intman.adb<libgnarl/s-intman__posix.adb \
2222   s-linux.ads<libgnarl/s-linux__hppa.ads \
2223   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2224   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2225   s-osprim.adb<libgnat/s-osprim__posix.adb \
2226   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2227   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2228   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2229   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2230   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2231   system.ads<libgnat/system-linux-hppa.ads
2233   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2235   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2236   EH_MECHANISM=-gcc
2237   THREADSLIB = -lpthread
2238   GNATLIB_SHARED = gnatlib-shared-dual
2239   GMEM_LIB = gmemlib
2240   LIBRARY_VERSION := $(LIB_VERSION)
2241 endif
2243 # M68K Linux
2244 ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
2245   LIBGNAT_TARGET_PAIRS = \
2246   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2247   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2248   s-intman.adb<libgnarl/s-intman__posix.adb \
2249   s-linux.ads<libgnarl/s-linux.ads \
2250   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2251   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2252   s-osprim.adb<libgnat/s-osprim__posix.adb \
2253   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2254   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2255   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2256   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2257   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2258   system.ads<libgnat/system-linux-m68k.ads
2260   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2262   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2263   EH_MECHANISM=-gcc
2264   THREADSLIB = -lpthread
2265   GNATLIB_SHARED = gnatlib-shared-dual
2266   GMEM_LIB = gmemlib
2267   LIBRARY_VERSION := $(LIB_VERSION)
2268 endif
2270 # SH4 Linux
2271 ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
2272   LIBGNAT_TARGET_PAIRS = \
2273   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2274   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2275   s-intman.adb<libgnarl/s-intman__posix.adb \
2276   s-linux.ads<libgnarl/s-linux.ads \
2277   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2278   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2279   s-osprim.adb<libgnat/s-osprim__posix.adb \
2280   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2281   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2282   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2283   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2284   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2285   system.ads<libgnat/system-linux-sh4.ads
2287   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb
2289   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2290   EH_MECHANISM=-gcc
2291   MISCLIB=
2292   THREADSLIB = -lpthread
2293   GNATLIB_SHARED = gnatlib-shared-dual
2294   GMEM_LIB = gmemlib
2295   LIBRARY_VERSION := $(LIB_VERSION)
2296 endif
2298 # IA64 Linux
2299 ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
2300   LIBGNAT_TARGET_PAIRS = \
2301   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2302   a-exetim.ads<libgnarl/a-exetim__default.ads \
2303   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2304   a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
2305   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2306   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2307   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2308   s-intman.adb<libgnarl/s-intman__posix.adb \
2309   s-linux.ads<libgnarl/s-linux.ads \
2310   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2311   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2312   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2313   s-osprim.adb<libgnat/s-osprim__posix.adb \
2314   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2315   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2316   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2317   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2318   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2319   g-sercom.adb<libgnat/g-sercom__linux.adb \
2320   $(TRASYM_DWARF_UNIX_PAIRS) \
2321   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2322   $(ATOMICS_TARGET_PAIRS) \
2323   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2324   system.ads<libgnat/system-linux-ia64.ads
2326   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2328   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2329   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2330   EH_MECHANISM=-gcc
2331   THREADSLIB=-lpthread -lrt
2332   GNATLIB_SHARED=gnatlib-shared-dual
2333   MISCLIB = -ldl
2334   GMEM_LIB = gmemlib
2335   LIBRARY_VERSION := $(LIB_VERSION)
2336 endif
2338 # IA64 HP-UX
2339 ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
2340   LIBGNAT_TARGET_PAIRS = \
2341   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
2342   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2343   s-intman.adb<libgnarl/s-intman__posix.adb \
2344   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2345   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
2346   s-osprim.adb<libgnat/s-osprim__posix.adb \
2347   s-taprop.adb<libgnarl/s-taprop__posix.adb \
2348   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2349   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2350   $(TRASYM_DWARF_UNIX_PAIRS) \
2351   $(ATOMICS_TARGET_PAIRS) \
2352   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2353   system.ads<libgnat/system-hpux-ia64.ads
2355   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2357   MISCLIB=
2358   EH_MECHANISM=-gcc
2359   THREADSLIB=-lpthread
2360   GNATLIB_SHARED=gnatlib-shared-dual
2361   GMEM_LIB = gmemlib
2362   soext = .so
2363   SO_OPTS = -Wl,+h,
2364   LIBRARY_VERSION := $(LIB_VERSION)
2365 endif
2367 # Alpha Linux
2368 ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
2369   LIBGNAT_TARGET_PAIRS = \
2370   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2371   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2372   s-intman.adb<libgnarl/s-intman__posix.adb \
2373   s-linux.ads<libgnarl/s-linux__alpha.ads \
2374   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2375   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2376   s-osprim.adb<libgnat/s-osprim__posix.adb \
2377   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2378   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2379   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2380   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2381   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2382   $(ATOMICS_TARGET_PAIRS) \
2383   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2384   system.ads<libgnat/system-linux-alpha.ads
2386   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2388   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2389   EH_MECHANISM=-gcc
2390   MISCLIB=
2391   THREADSLIB=-lpthread
2392   GNATLIB_SHARED=gnatlib-shared-dual
2393   LIBRARY_VERSION := $(LIB_VERSION)
2394 endif
2396 # x86-64 Linux
2397 ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
2398   LIBGNAT_TARGET_PAIRS = \
2399   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2400   a-exetim.ads<libgnarl/a-exetim__default.ads \
2401   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2402   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2403   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2404   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2405   s-intman.adb<libgnarl/s-intman__posix.adb \
2406   s-linux.ads<libgnarl/s-linux.ads \
2407   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2408   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2409   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2410   s-osprim.adb<libgnat/s-osprim__posix.adb \
2411   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2412   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2413   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2414   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2415   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2416   g-sercom.adb<libgnat/g-sercom__linux.adb \
2417   $(TRASYM_DWARF_UNIX_PAIRS) \
2418   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2419   $(ATOMICS_TARGET_PAIRS) \
2420   $(X86_64_TARGET_PAIRS) \
2421   system.ads<libgnat/system-linux-x86.ads
2423   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2425   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2426   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2427   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2429   EH_MECHANISM=-gcc
2430   THREADSLIB=-lpthread -lrt
2431   MISCLIB = -ldl
2432   GNATLIB_SHARED=gnatlib-shared-dual
2433   GMEM_LIB = gmemlib
2434   LIBRARY_VERSION := $(LIB_VERSION)
2436   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
2437 endif
2439 ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
2440   LIBGNAT_TARGET_PAIRS = \
2441   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2442   a-exetim.ads<libgnarl/a-exetim__default.ads \
2443   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2444   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2445   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2446   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2447   s-intman.adb<libgnarl/s-intman__posix.adb \
2448   s-linux.ads<libgnarl/s-linux__x32.ads \
2449   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2450   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2451   s-osinte.adb<libgnarl/s-osinte__x32.adb \
2452   s-osprim.adb<libgnat/s-osprim__x32.adb \
2453   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2454   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2455   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2456   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2457   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2458   g-sercom.adb<libgnat/g-sercom__linux.adb \
2459   $(ATOMICS_TARGET_PAIRS) \
2460   $(X86_64_TARGET_PAIRS) \
2461   system.ads<libgnat/system-linux-x86.ads
2463   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2465   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2466   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2467   EH_MECHANISM=-gcc
2468   THREADSLIB=-lpthread -lrt
2469   GNATLIB_SHARED=gnatlib-shared-dual
2470   GMEM_LIB = gmemlib
2471   LIBRARY_VERSION := $(LIB_VERSION)
2472 endif
2474 # RISC-V Linux
2475 ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
2476   LIBGNAT_TARGET_PAIRS = \
2477   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2478   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2479   s-intman.adb<libgnarl/s-intman__posix.adb \
2480   s-linux.ads<libgnarl/s-linux__riscv.ads \
2481   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2482   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2483   s-osprim.adb<libgnat/s-osprim__posix.adb \
2484   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2485   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2486   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2487   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2488   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2489   g-sercom.adb<libgnat/g-sercom__linux.adb \
2490   system.ads<libgnat/system-linux-riscv.ads
2492   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2494   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2495   EH_MECHANISM=-gcc
2496   THREADSLIB = -lpthread
2497   GNATLIB_SHARED = gnatlib-shared-dual
2498   GMEM_LIB = gmemlib
2499   LIBRARY_VERSION := $(LIB_VERSION)
2500 endif
2502 # Darwin (Mac OS X)
2503 ifeq ($(strip $(filter-out darwin%,$(target_os))),)
2504   SO_OPTS = -shared-libgcc
2505   LIBGNAT_TARGET_PAIRS = \
2506     a-intnam.ads<libgnarl/a-intnam__darwin.ads \
2507     s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2508     s-osinte.adb<libgnarl/s-osinte__darwin.adb \
2509     s-osinte.ads<libgnarl/s-osinte__darwin.ads \
2510     s-taprop.adb<libgnarl/s-taprop__posix.adb \
2511     s-taspri.ads<libgnarl/s-taspri__posix.ads \
2512     g-sercom.adb<libgnat/g-sercom__linux.adb \
2513     s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
2515   ifeq ($(strip $(filter-out %86,$(target_cpu))),)
2516     LIBGNAT_TARGET_PAIRS += \
2517       s-intman.adb<libgnarl/s-intman__susv3.adb \
2518       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2519       $(ATOMICS_TARGET_PAIRS) \
2520       system.ads<libgnat/system-darwin-x86.ads
2522     ifeq ($(strip $(MULTISUBDIR)),/x86_64)
2523       SO_OPTS += -m64
2524       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2525     else
2526       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2527     endif
2529     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2530   endif
2532   ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
2533     LIBGNAT_TARGET_PAIRS += \
2534       s-intman.adb<libgnarl/s-intman__susv3.adb \
2535       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2536       a-exetim.ads<libgnarl/a-exetim__default.ads \
2537       a-exetim.adb<libgnarl/a-exetim__darwin.adb \
2538       $(ATOMICS_TARGET_PAIRS) \
2539       system.ads<libgnat/system-darwin-x86.ads
2541     ifeq ($(strip $(MULTISUBDIR)),/i386)
2542       SO_OPTS += -m32
2543       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2544     else
2545       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2546     endif
2548     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2549     EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
2550   endif
2552   ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
2553     LIBGNAT_TARGET_PAIRS += \
2554       s-intman.adb<libgnarl/s-intman__posix.adb \
2555       s-osprim.adb<libgnat/s-osprim__posix.adb \
2556       a-numaux.ads<libgnat/a-numaux__darwin.ads \
2557       a-numaux.adb<libgnat/a-numaux__darwin.adb \
2558       $(ATOMICS_TARGET_PAIRS) \
2559       $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2560       system.ads<libgnat/system-darwin-ppc.ads
2562     ifeq ($(strip $(MULTISUBDIR)),/ppc64)
2563         SO_OPTS += -m64
2564     endif
2565   endif
2567   ifeq ($(strip $(filter-out arm,$(target_cpu))),)
2568     LIBGNAT_TARGET_PAIRS += \
2569       s-intman.adb<libgnarl/s-intman__susv3.adb \
2570       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2571       $(ATOMICS_TARGET_PAIRS) \
2572       $(ATOMICS_BUILTINS_TARGET_PAIRS)
2574     LIBGNAT_TARGET_PAIRS += \
2575       system.ads<libgnat/system-darwin-arm.ads
2576   endif
2578   ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
2579     LIBGNAT_TARGET_PAIRS += \
2580       s-intman.adb<libgnarl/s-intman__susv3.adb \
2581       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2582       $(ATOMICS_TARGET_PAIRS) \
2583       $(ATOMICS_BUILTINS_TARGET_PAIRS)
2585     EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
2586     EXTRA_LIBGNAT_SRCS+=sigtramp.h
2587     LIBGNAT_TARGET_PAIRS += \
2588       system.ads<libgnat/system-darwin-arm.ads
2589   endif
2591   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb
2593   EH_MECHANISM=-gcc
2594   GNATLIB_SHARED = gnatlib-shared-darwin
2595   GMEM_LIB = gmemlib
2596   LIBRARY_VERSION := $(LIB_VERSION)
2597   soext = .dylib
2598   GCC_LINK_FLAGS=-static-libstdc++
2599 endif
2601 ifeq ($(EH_MECHANISM),-gcc)
2602   LIBGNAT_TARGET_PAIRS += \
2603     s-excmac.ads<libgnat/s-excmac__gcc.ads \
2604     s-excmac.adb<libgnat/s-excmac__gcc.adb
2605   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2606   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2607 endif
2609 ifeq ($(EH_MECHANISM),-arm)
2610   LIBGNAT_TARGET_PAIRS += \
2611     s-excmac.ads<libgnat/s-excmac__arm.ads \
2612     s-excmac.adb<libgnat/s-excmac__arm.adb
2613   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2614   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2615 endif
2617 # LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
2618 # library.  LIBGNAT_OBJS is the list of object files for libgnat.
2619 # thread.c is special as put into GNATRTL_TASKING_OBJS
2620 LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o                     \
2621   cal.o cio.o cstreams.o ctrl_c.o                                       \
2622   env.o errno.o exit.o expect.o final.o rtfinal.o rtinit.o              \
2623   init.o initialize.o locales.o mkdir.o                                 \
2624   raise.o seh_init.o socket.o sysdep.o                                  \
2625   targext.o terminals.o tracebak.o                                      \
2626   $(EXTRA_LIBGNAT_OBJS)
2628 # NOTE ??? - when the -I option for compiling Ada code is made to work,
2629 #  the library installation will change and there will be a
2630 #  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
2631 #  from ADA_INCLUDE_SRCS.
2633 LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))                      \
2634   adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h           \
2635   tb-gcc.c libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
2637 # memtrack.o is special as not put into libgnat.
2638 GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
2639   memtrack.o
2641 # Run time source files
2642 # Note that libgnat contains a significant number of files. In orde to avoid
2643 # command line length limitations the source regexp has been split for that
2644 # directory.
2645 ADA_INCLUDE_SRCS =\
2646  libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
2647  libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
2648  libgnat/sequenio.ads libgnat/system.ads Makefile.adalib libgnat/memtrack.adb \
2649  libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
2650  libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
2651  libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
2652  libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
2653  libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
2654  libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
2655  libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
2656  libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
2657  libgnarl/[agis]-[a-z]*.ad[sb]
2660 # Files that are in ADA_INCLUDE_SRCS but not in all configurations.
2661 # They will be removed from the run time if not used.
2662 ADA_EXCLUDE_SRCS =\
2663   g-allein.ads g-alleve.adb g-alleve.ads g-altcon.adb g-altcon.ads \
2664   g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
2665   g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
2666   i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
2667   s-bb.ads     s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb \
2668   s-bbexti.ads s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads \
2669   s-bbsle3.ads s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads \
2670   s-bbthre.adb s-bbthre.ads s-bbtiev.adb s-bbtiev.ads s-bbtime.adb \
2671   s-bbtime.ads s-bcprmu.adb s-bcprmu.ads s-btstch.adb s-btstch.ads \
2672   s-gcc.adb    s-gcc.ads    s-gccdiv.adb s-gccdiv.ads \
2673   s-gccshi.adb s-gccshi.ads \
2674   s-init.ads   s-init.adb   s-linux.ads  s-macres.ads \
2675   s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
2676   s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
2677   s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
2678   s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb s-stm32.ads \
2679   s-strcom.adb s-strcom.ads s-thread.ads \
2680   s-vxwext.adb s-vxwext.ads \
2681   s-win32.ads  s-winext.ads
2683 # ADA_EXCLUDE_SRCS without the sources used by the target
2684 ADA_EXCLUDE_FILES=$(filter-out \
2685   $(patsubst %$(objext),%.ads,$(GNATRTL_OBJS)) \
2686   $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
2687   $(ADA_EXCLUDE_SRCS))
2689 setup-rts: force
2690         $(RMDIR) $(RTSDIR)
2691         $(MKDIR) $(RTSDIR)
2692         $(CHMOD) u+w $(RTSDIR)
2693 # Copy target independent sources
2694         $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
2695           $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
2696 # Remove files not used
2697         $(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
2698 # Remove files to be replaced by target dependent sources
2699         $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2700                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
2701         for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
2702           case "$$f" in \
2703             $(RTSDIR)/s-stratt__*) ;; \
2704             *) $(RM) $$f ;; \
2705           esac; \
2706         done
2707 # Copy new target dependent sources
2708         $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2709                   $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
2710                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
2712 # Special flags
2714 # force no sibling call optimization on s-traceb.o so the number of stack
2715 # frames to be skipped when computing a call chain is not modified by
2716 # optimization. We don't want inlining, either.
2718 s-traceb.o  : s-traceb.adb s-traceb.ads
2719         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2720           $(NO_INLINE_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) $< \
2721           $(OUTPUT_OPTION)
2723 # compile s-tasdeb.o without optimization and with debug info so that it is
2724 # always possible to set conditional breakpoints on tasks.
2726 s-tasdeb.o  : s-tasdeb.adb s-tasdeb.ads
2727         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2728           $< $(OUTPUT_OPTION)
2730 # force no function reordering on a-except.o because of the exclusion bounds
2731 # mechanism (see the source file for more detailed information).
2732 # force debugging information on a-except.o so that it is always
2733 # possible to set conditional breakpoints on exceptions.
2734 # use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.
2736 a-except.o  : a-except.adb a-except.ads
2737         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2738           $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) -O1 $(ADA_INCLUDES) \
2739           $< $(OUTPUT_OPTION)
2741 # compile s-excdeb.o without optimization and with debug info to let the
2742 # debugger set breakpoints and inspect subprogram parameters on exception
2743 # related events.
2745 s-excdeb.o  : s-excdeb.adb s-excdeb.ads s-except.ads
2746         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
2747           $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
2749 # force debugging information on s-assert.o so that it is always
2750 # possible to set breakpoint on assert failures.
2752 s-assert.o  : s-assert.adb s-assert.ads
2753         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2754           $< $(OUTPUT_OPTION)
2756 # force debugging information on a-tags.o so that the debugger can find
2757 # the description of Ada.Tags.Type_Specific_Data.
2759 a-tags.o  : a-tags.adb a-tags.ads
2760         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2761           $< $(OUTPUT_OPTION)
2763 # force no sibling call optimization on s-memory.o to avoid turning the
2764 # tail recursion in Alloc into a loop that confuses branch prediction.
2766 s-memory.o  : s-memory.adb s-memory.ads
2767         $(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
2768           $< $(OUTPUT_OPTION)