gcc/testsuite/ChangeLog:
[official-gcc.git] / gcc / ada / Makefile.rtl
blob7eaa9ba90cd151388e920b9bda8550f52799fd2e
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-locfil$(objext) \
431   g-mbdira$(objext) \
432   g-mbflra$(objext) \
433   g-md5$(objext) \
434   g-memdum$(objext) \
435   g-moreex$(objext) \
436   g-os_lib$(objext) \
437   g-pehage$(objext) \
438   g-rannum$(objext) \
439   g-regexp$(objext) \
440   g-regpat$(objext) \
441   g-rewdat$(objext) \
442   g-sechas$(objext) \
443   g-sehamd$(objext) \
444   g-sehash$(objext) \
445   g-sercom$(objext) \
446   g-sestin$(objext) \
447   g-sha1$(objext) \
448   g-sha224$(objext) \
449   g-sha256$(objext) \
450   g-sha384$(objext) \
451   g-sha512$(objext) \
452   g-shsh32$(objext) \
453   g-shsh64$(objext) \
454   g-shshco$(objext) \
455   g-souinf$(objext) \
456   g-spchge$(objext) \
457   g-speche$(objext) \
458   g-spipat$(objext) \
459   g-spitbo$(objext) \
460   g-sptabo$(objext) \
461   g-sptain$(objext) \
462   g-sptavs$(objext) \
463   g-strhas$(objext) \
464   g-string$(objext) \
465   g-strspl$(objext) \
466   g-table$(objext) \
467   g-tasloc$(objext) \
468   g-timsta$(objext) \
469   g-traceb$(objext) \
470   g-trasym$(objext) \
471   s-trasym$(objext) \
472   g-tty$(objext) \
473   g-u3spch$(objext) \
474   g-utf_32$(objext) \
475   g-wispch$(objext) \
476   g-wistsp$(objext) \
477   g-zspche$(objext) \
478   g-zstspl$(objext) \
479   gnat$(objext) \
480   i-c$(objext) \
481   i-cexten$(objext) \
482   i-cobol$(objext) \
483   i-cpoint$(objext) \
484   i-cstrea$(objext) \
485   i-cstrin$(objext) \
486   i-fortra$(objext) \
487   i-pacdec$(objext) \
488   interfac$(objext) \
489   ioexcept$(objext) \
490   machcode$(objext) \
491   s-addima$(objext) \
492   s-addope$(objext) \
493   s-arit64$(objext) \
494   s-assert$(objext) \
495   s-atacco$(objext) \
496   s-atocou$(objext) \
497   s-atopri$(objext) \
498   s-auxdec$(objext) \
499   s-bignum$(objext) \
500   s-bitops$(objext) \
501   s-boarop$(objext) \
502   s-boustr$(objext) \
503   s-bytswa$(objext) \
504   s-carsi8$(objext) \
505   s-carun8$(objext) \
506   s-casi16$(objext) \
507   s-casi32$(objext) \
508   s-casi64$(objext) \
509   s-casuti$(objext) \
510   s-caun16$(objext) \
511   s-caun32$(objext) \
512   s-caun64$(objext) \
513   s-chepoo$(objext) \
514   s-commun$(objext) \
515   s-conca2$(objext) \
516   s-conca3$(objext) \
517   s-conca4$(objext) \
518   s-conca5$(objext) \
519   s-conca6$(objext) \
520   s-conca7$(objext) \
521   s-conca8$(objext) \
522   s-conca9$(objext) \
523   s-crc32$(objext)  \
524   s-crtl$(objext)   \
525   s-diflio$(objext) \
526   s-diinio$(objext) \
527   s-dim$(objext)    \
528   s-dimkio$(objext) \
529   s-dimmks$(objext) \
530   s-direio$(objext) \
531   s-dmotpr$(objext) \
532   s-dsaser$(objext) \
533   s-elaall$(objext) \
534   s-excdeb$(objext) \
535   s-except$(objext) \
536   s-exctab$(objext) \
537   s-exnint$(objext) \
538   s-exnllf$(objext) \
539   s-exnlli$(objext) \
540   s-expint$(objext) \
541   s-explli$(objext) \
542   s-expllu$(objext) \
543   s-expmod$(objext) \
544   s-expuns$(objext) \
545   s-fatflt$(objext) \
546   s-fatgen$(objext) \
547   s-fatlfl$(objext) \
548   s-fatllf$(objext) \
549   s-fatsfl$(objext) \
550   s-ficobl$(objext) \
551   s-filatt$(objext) \
552   s-fileio$(objext) \
553   s-finmas$(objext) \
554   s-finroo$(objext) \
555   s-flocon$(objext) \
556   s-fore$(objext)   \
557   s-gearop$(objext) \
558   s-geveop$(objext) \
559   s-gloloc$(objext) \
560   s-htable$(objext) \
561   s-imenne$(objext) \
562   s-imgbiu$(objext) \
563   s-imgboo$(objext) \
564   s-imgcha$(objext) \
565   s-imgdec$(objext) \
566   s-imgenu$(objext) \
567   s-imgint$(objext) \
568   s-imgllb$(objext) \
569   s-imglld$(objext) \
570   s-imglli$(objext) \
571   s-imgllu$(objext) \
572   s-imgllw$(objext) \
573   s-imgrea$(objext) \
574   s-imguns$(objext) \
575   s-imgwch$(objext) \
576   s-imgwiu$(objext) \
577   s-io$(objext)     \
578   s-llflex$(objext) \
579   s-maccod$(objext) \
580   s-mantis$(objext) \
581   s-mastop$(objext) \
582   s-memcop$(objext) \
583   s-memory$(objext) \
584   s-multip$(objext) \
585   s-os_lib$(objext) \
586   s-oscons$(objext) \
587   s-osprim$(objext) \
588   s-pack03$(objext) \
589   s-pack05$(objext) \
590   s-pack06$(objext) \
591   s-pack07$(objext) \
592   s-pack09$(objext) \
593   s-pack10$(objext) \
594   s-pack11$(objext) \
595   s-pack12$(objext) \
596   s-pack13$(objext) \
597   s-pack14$(objext) \
598   s-pack15$(objext) \
599   s-pack17$(objext) \
600   s-pack18$(objext) \
601   s-pack19$(objext) \
602   s-pack20$(objext) \
603   s-pack21$(objext) \
604   s-pack22$(objext) \
605   s-pack23$(objext) \
606   s-pack24$(objext) \
607   s-pack25$(objext) \
608   s-pack26$(objext) \
609   s-pack27$(objext) \
610   s-pack28$(objext) \
611   s-pack29$(objext) \
612   s-pack30$(objext) \
613   s-pack31$(objext) \
614   s-pack33$(objext) \
615   s-pack34$(objext) \
616   s-pack35$(objext) \
617   s-pack36$(objext) \
618   s-pack37$(objext) \
619   s-pack38$(objext) \
620   s-pack39$(objext) \
621   s-pack40$(objext) \
622   s-pack41$(objext) \
623   s-pack42$(objext) \
624   s-pack43$(objext) \
625   s-pack44$(objext) \
626   s-pack45$(objext) \
627   s-pack46$(objext) \
628   s-pack47$(objext) \
629   s-pack48$(objext) \
630   s-pack49$(objext) \
631   s-pack50$(objext) \
632   s-pack51$(objext) \
633   s-pack52$(objext) \
634   s-pack53$(objext) \
635   s-pack54$(objext) \
636   s-pack55$(objext) \
637   s-pack56$(objext) \
638   s-pack57$(objext) \
639   s-pack58$(objext) \
640   s-pack59$(objext) \
641   s-pack60$(objext) \
642   s-pack61$(objext) \
643   s-pack62$(objext) \
644   s-pack63$(objext) \
645   s-parame$(objext) \
646   s-parint$(objext) \
647   s-pooglo$(objext) \
648   s-pooloc$(objext) \
649   s-poosiz$(objext) \
650   s-powtab$(objext) \
651   s-purexc$(objext) \
652   s-rannum$(objext) \
653   s-ransee$(objext) \
654   s-regexp$(objext) \
655   s-regpat$(objext) \
656   s-resfil$(objext) \
657   s-restri$(objext) \
658   s-rident$(objext) \
659   s-rpc$(objext)    \
660   s-scaval$(objext) \
661   s-secsta$(objext) \
662   s-sequio$(objext) \
663   s-shasto$(objext) \
664   s-soflin$(objext) \
665   s-soliin$(objext) \
666   s-spsufi$(objext) \
667   s-stache$(objext) \
668   s-stalib$(objext) \
669   s-stausa$(objext) \
670   s-stoele$(objext) \
671   s-stopoo$(objext) \
672   s-stposu$(objext) \
673   s-stratt$(objext) \
674   s-strhas$(objext) \
675   s-string$(objext) \
676   s-ststop$(objext) \
677   s-tasloc$(objext) \
678   s-traceb$(objext) \
679   s-traent$(objext) \
680   s-unstyp$(objext) \
681   s-utf_32$(objext) \
682   s-valboo$(objext) \
683   s-valcha$(objext) \
684   s-valdec$(objext) \
685   s-valenu$(objext) \
686   s-valint$(objext) \
687   s-vallld$(objext) \
688   s-vallli$(objext) \
689   s-valllu$(objext) \
690   s-valrea$(objext) \
691   s-valuns$(objext) \
692   s-valuti$(objext) \
693   s-valwch$(objext) \
694   s-veboop$(objext) \
695   s-vector$(objext) \
696   s-vercon$(objext) \
697   s-wchcnv$(objext) \
698   s-wchcon$(objext) \
699   s-wchjis$(objext) \
700   s-wchstw$(objext) \
701   s-wchwts$(objext) \
702   s-widboo$(objext) \
703   s-widcha$(objext) \
704   s-widenu$(objext) \
705   s-widlli$(objext) \
706   s-widllu$(objext) \
707   s-widwch$(objext) \
708   s-wwdcha$(objext) \
709   s-wwdenu$(objext) \
710   s-wwdwch$(objext) \
711   sequenio$(objext) \
712   system$(objext) \
713   text_io$(objext) \
714   unchconv$(objext) \
715   unchdeal$(objext) \
716   $(GNATRTL_ALTIVEC_OBJS) \
717   $(GNATRTL_SOCKETS_OBJS) \
718   $(EXTRA_GNATRTL_NONTASKING_OBJS)
720 # LIBGNAT_TARGET_PAIRS is a list of pairs of filenames.
721 # The members of each pair must be separated by a '<' and no whitespace.
722 # Each pair must be separated by some amount of whitespace from the following
723 # pair.
725 # Non-tasking case:
727 LIBGNAT_TARGET_PAIRS = \
728 a-intnam.ads<libgnarl/a-intnam__dummy.ads \
729 s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
730 s-intman.adb<libgnarl/s-intman__dummy.adb \
731 s-osinte.ads<libgnarl/s-osinte__dummy.ads \
732 s-osprim.adb<libgnat/s-osprim__posix.adb \
733 s-taprop.adb<libgnarl/s-taprop__dummy.adb \
734 s-taspri.ads<libgnarl/s-taspri__dummy.ads
736 # When using the GCC exception handling mechanism, we need to use an
737 # alternate body for a-exexpr.adb (a-exexpr-gcc.adb)
739 EH_MECHANISM=
741 # Compilation options for the GCC-SJLJ RTS. This may be augmented for
742 # target specific contexts, e.g. to add -fno-omit-frame-pointer for backtrace
743 # computations.
744 GNATLIBCFLAGS_FOR_GCCSJLJ=-fsjlj
746 # Default shared object option. Note that we rely on the fact that the "soname"
747 # option will always be present and last in this flag, so that we can have
748 # $(SO_OPTS)libgnat-x.xx
750 SO_OPTS = -Wl,-soname,
752 # Default gnatlib-shared target.
753 # By default, equivalent to gnatlib.
754 # Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
755 # target when supported.
756 GNATLIB_SHARED = gnatlib
758 # By default, build socket support units. On platforms that do not support
759 # sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
760 # to LIBGNAT_TARGET_PAIRS.
762 GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
763   g-soliop$(objext) g-sothco$(objext)
765 DUMMY_SOCKETS_TARGET_PAIRS = \
766   g-socket.adb<libgnat/g-socket__dummy.adb \
767   g-socket.ads<libgnat/g-socket__dummy.ads \
768   g-socthi.adb<libgnat/g-socthi__dummy.adb \
769   g-socthi.ads<libgnat/g-socthi__dummy.ads \
770   g-sothco.adb<libgnat/g-sothco__dummy.adb \
771   g-sothco.ads<libgnat/g-sothco__dummy.ads
773 # On platforms where atomic increment/decrement operations are supported,
774 # special version of Ada.Strings.Unbounded package can be used.
776 ATOMICS_TARGET_PAIRS = \
777   a-coinho.adb<libgnat/a-coinho__shared.adb \
778   a-coinho.ads<libgnat/a-coinho__shared.ads \
779   a-stunau.adb<libgnat/a-stunau__shared.adb \
780   a-suteio.adb<libgnat/a-suteio__shared.adb \
781   a-strunb.ads<libgnat/a-strunb__shared.ads \
782   a-strunb.adb<libgnat/a-strunb__shared.adb \
783   a-stwiun.adb<libgnat/a-stwiun__shared.adb \
784   a-stwiun.ads<libgnat/a-stwiun__shared.ads \
785   a-swunau.adb<libgnat/a-swunau__shared.adb \
786   a-swuwti.adb<libgnat/a-swuwti__shared.adb \
787   a-stzunb.adb<libgnat/a-stzunb__shared.adb \
788   a-stzunb.ads<libgnat/a-stzunb__shared.ads \
789   a-szunau.adb<libgnat/a-szunau__shared.adb \
790   a-szuzti.adb<libgnat/a-szuzti__shared.adb
792 ATOMICS_BUILTINS_TARGET_PAIRS = \
793   s-atocou.adb<libgnat/s-atocou__builtin.adb
795 # Special version of units for x86 and x86-64 platforms.
797 X86_TARGET_PAIRS = \
798   a-numaux.ads<libgnat/a-numaux__x86.ads \
799   a-numaux.adb<libgnat/a-numaux__x86.adb \
800   s-atocou.adb<libgnat/s-atocou__x86.adb
802 X86_64_TARGET_PAIRS = \
803   a-numaux.ads<libgnat/a-numaux__x86.ads \
804   a-numaux.adb<libgnat/a-numaux__x86.adb \
805   s-atocou.adb<libgnat/s-atocou__builtin.adb
807 # Implementation of symbolic traceback based on dwarf
808 TRASYM_DWARF_UNIX_PAIRS = \
809   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
810   s-mmosin.ads<libgnat/s-mmosin__unix.ads \
811   s-mmosin.adb<libgnat/s-mmosin__unix.adb \
812   s-mmauni.ads<libgnat/s-mmauni__long.ads
814 TRASYM_DWARF_MINGW_PAIRS = \
815   s-trasym.adb<libgnat/s-trasym__dwarf.adb \
816   s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
817   s-mmosin.adb<libgnat/s-mmosin__mingw.adb
819 TRASYM_DWARF_COMMON_OBJS = s-objrea$(objext) s-dwalin$(objext) s-mmap$(objext) \
820   s-mmosin$(objext)
822 TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)
824 TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
826 # Shared library version
827 LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(GNAT_SRC)/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
829 # Additional object files from C source to be added to libgnat.
830 EXTRA_LIBGNAT_OBJS=
832 # Additional C source files to be added to libgnat without corresponding
833 # object file (#included files). This should include at least the GNAT
834 # specific header files required to rebuild the runtime library from sources.
835 EXTRA_LIBGNAT_SRCS=
837 # Additional object files from Ada sources to be added in libgnat
838 EXTRA_GNATRTL_NONTASKING_OBJS=
840 # Additional object files from Ada sources to be added in libgnarl
841 EXTRA_GNATRTL_TASKING_OBJS=
843 # Subsets of extra libgnat sources that always go together
844 VX_SIGTRAMP_EXTRA_SRCS=sigtramp.h sigtramp-vxworks-target.inc
846 # Additional object files that should go in the same directory as libgnat,
847 # aside the library itself. Typically useful for crtbegin/crtend kind of files.
848 EXTRA_ADALIB_OBJS=
850 # crt files for VxWorks exception tables registration, referenced by
851 # spec files in the runtime library.
852 VX_CRTBE_EXTRA_ADALIB_OBJS=vx_crtbegin.o vx_crtbegin_array.o vx_crtend.o
854 # Contructor attributes (with priorities) are only supported on VxWorks 7
855 # or for RTPs.
856 ifneq ($(strip $(filter vxworks7% rtp%,$(target_os) $(THREAD_KIND))),)
857 VX_CRTBE_EXTRA_ADALIB_OBJS+=vx_crtbegin_attr.o
858 endif
860 # GCC spec files to be installed in $(libsubdir), so --specs=<spec-filename>
861 # finds them at runtime.
862 GCC_SPEC_FILES=
864 # $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT.
865 # $(strip STRING) removes leading and trailing spaces from STRING.
866 # If what's left is null then it's a match.
868 # PowerPC and e500v2 VxWorks
869 ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworksspe vxworks7 vxworks7spe,$(target_cpu) $(target_vendor) $(target_os))),)
871   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
872      ARCH_STR=e500
873      # gcc config translates the target e500v2-wrs-vxworks to
874      # powerpc-wrs-vxworksspe. Let's keep the original alias here when
875      # generating s-oscons.ads.
876      target=$(target_alias)
877   else
878      ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
879         ARCH_STR=ppc64
880      else
881         ARCH_STR=ppc
882      endif
883   endif
885   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
886   SVX=system-$(VX)
887   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
889   LIBGNAT_TARGET_PAIRS = \
890   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
891   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
892   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
893   s-intman.ads<libgnarl/s-intman__vxworks.ads \
894   s-intman.adb<libgnarl/s-intman__vxworks.adb \
895   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
896   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
897   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
898   s-parame.ads<libgnat/s-parame__vxworks.ads \
899   s-parame.adb<libgnat/s-parame__vxworks.adb \
900   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
901   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
902   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
903   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
904   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
905   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
906   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
907   $(ATOMICS_TARGET_PAIRS) \
908   $(ATOMICS_BUILTINS_TARGET_PAIRS)
910   # VxWorks 5 and 6 both use the same target triplet making them
911   # indistinguishable in the context of this make file. Package
912   # System.Stack_Checking.Operations is not needed on VxWorks 6 as it leads to
913   # an undefined symbol when building a dynamic shared library. To alleviate
914   # this problem and distinguish this case, we use the THREAD_KIND and include
915   # the package only in default mode.
917   ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
918     LIBGNAT_TARGET_PAIRS += \
919       s-stchop.ads<libgnat/s-stchop__limit.ads \
920       s-stchop.adb<libgnat/s-stchop__vxworks.adb
921     EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
922   endif
924   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
926   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
927     LIBGNAT_TARGET_PAIRS += \
928     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
929     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
930     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
931     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp.ads
933     EH_MECHANISM=-gcc
934   else
935     ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
936       LIBGNAT_TARGET_PAIRS += \
937       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
938       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
939       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
940       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
941       system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
943       EH_MECHANISM=-gcc
944       EXTRA_LIBGNAT_OBJS+=affinity.o
945     else
946       ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
947         LIBGNAT_TARGET_PAIRS += \
948         s-interr.adb<libgnarl/s-interr__vxworks.adb \
949         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
950         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
951         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
952         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
953         system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
955         EH_MECHANISM=-gcc
956         EXTRA_LIBGNAT_OBJS+=affinity.o
957       else
958         LIBGNAT_TARGET_PAIRS += \
959         s-interr.adb<libgnarl/s-interr__vxworks.adb \
960         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
962         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
963           EH_MECHANISM=-gcc
964           LIBGNAT_TARGET_PAIRS += \
965           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
966           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
967           system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
968         else
969           LIBGNAT_TARGET_PAIRS += \
970           system.ads<libgnat/system-vxworks-ppc.ads
971         endif
972       endif
973       EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
974     endif
975   endif
977   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
978   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
980   EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o
982   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
984   EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
985   EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
987   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
988     ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
989       GCC_SPEC_FILES+=vxworks7-ppc64-rtp-base-link.spec
990     else
991       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
992     endif
993   else
994     GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
995     GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
996     GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
997   endif
998 endif
1000 # PowerPC and e500v2 VxWorks 653
1001 ifeq ($(strip $(filter-out powerpc% wrs vxworksae vxworksaespe,$(target_cpu) $(target_vendor) $(target_os))),)
1003   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
1004      ARCH_STR=e500
1005      # gcc config translates the target e500v2-wrs-vxworks to
1006      # powerpc-wrs-vxworksspe. Let's keep the original alias here when
1007      # generating s-oscons.ads.
1008      target=$(target_alias)
1009   else
1010      ARCH_STR=ppc
1011   endif
1013   # target pairs for vthreads runtime
1014   LIBGNAT_TARGET_PAIRS = \
1015   a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
1016   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1017   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1018   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
1019   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1020   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1021   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1022   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1023   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1024   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1025   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1026   s-parame.ads<libgnat/s-parame__ae653.ads \
1027   s-parame.adb<libgnat/s-parame__vxworks.adb \
1028   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1029   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1030   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1031   s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1032   s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
1033   s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
1034   s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
1035   system.ads<libgnat/system-vxworks-$(ARCH_STR)-vthread.ads \
1036   $(ATOMICS_TARGET_PAIRS) \
1037   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1039   EH_MECHANISM=-gcc
1041   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1043   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
1044   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1046   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1047   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1049   # Extra pairs for the vthreads runtime
1050   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
1051     LIBGNAT_TARGET_PAIRS += \
1052     s-thread.adb<libgnat/s-thread__ae653.adb \
1053     s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
1054     $(DUMMY_SOCKETS_TARGET_PAIRS)
1056     GNATRTL_SOCKETS_OBJS =
1057     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
1058   else
1059     LIBGNAT_TARGET_PAIRS += \
1060     g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1061     g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1062     g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1063   endif
1065 endif
1067 # VxWorksae / VxWorks 653 for x86 (vxsim) - ?? VxWorks mils not implemented
1068 ifeq ($(strip $(filter-out %86 wrs vxworksae,$(target_cpu) $(target_vendor) $(target_os))),)
1069   # target pairs for kernel + vthreads runtime
1070   LIBGNAT_TARGET_PAIRS = \
1071   a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
1072   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1073   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1074   g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
1075   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1076   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1077   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1078   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1079   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1080   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1081   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1082   s-parame.ads<libgnat/s-parame__ae653.ads \
1083   s-parame.adb<libgnat/s-parame__vxworks.adb \
1084   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1085   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1086   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1087   s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1088   s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
1089   s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
1090   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
1091   system.ads<libgnat/system-vxworks-x86-vthread.ads \
1092   $(ATOMICS_TARGET_PAIRS) \
1093   $(ATOMICS_BUILTINS_TARGET_PAIRS)
1095   EH_MECHANISM=-gcc
1097   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1099   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-thread.o
1100   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1102   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1103   GNATRTL_SOCKETS_OBJS =
1105   # Extra pairs for the vthreads runtime
1106   ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
1107     LIBGNAT_TARGET_PAIRS += \
1108     s-thread.adb<libgnat/s-thread__ae653.adb \
1109     s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
1110     $(DUMMY_SOCKETS_TARGET_PAIRS)
1112     GNATRTL_SOCKETS_OBJS =
1113     EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
1114   else
1115     LIBGNAT_TARGET_PAIRS += \
1116     g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1117     g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1118     g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1119   endif
1121 endif
1123 # x86/x86_64 VxWorks
1124 ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7,$(target_cpu) $(target_vendor) $(target_os))),)
1126   EH_MECHANISM=-gcc
1128   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
1129   SVX=system-$(VX)
1130   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
1132   ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
1133      X86CPU=x86_64
1134      LIBGNAT_TARGET_PAIRS=$(X86_64_TARGET_PAIRS)
1135   else
1136      X86CPU=x86
1137      LIBGNAT_TARGET_PAIRS=$(X86_TARGET_PAIRS)
1138   endif
1140   LIBGNAT_TARGET_PAIRS+= \
1141   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1142   i-vxwork.ads<libgnat/i-vxwork__x86.ads \
1143   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1144   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1145   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1146   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1147   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1148   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1149   s-parame.ads<libgnat/s-parame__vxworks.ads \
1150   s-parame.adb<libgnat/s-parame__vxworks.adb \
1151   s-stchop.ads<libgnat/s-stchop__limit.ads \
1152   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1153   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1154   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1155   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1156   s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
1157   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1158   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1159   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1160   $(ATOMICS_TARGET_PAIRS)
1162   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1164   # The CPU setting for VxSim varies with the
1165   # host (Windows or Linux)
1166   # target (VxWorks6 or VxWorks7)
1167   # runtime (rtp or kernel)
1168   # -------------------------------------------------------------
1169   #                                     vx6             vx7
1170   # Windows (host_os = mingw32)
1171   #     kernel                          SIMNT           SIMNT
1172   #     rtp                             SIMPENTIUM      SIMNT
1173   # Linux (host_os = linux-gnu)
1174   #     kernel                          SIMLINUX        SIMLINUX
1175   #     rtp                             SIMPENTIUM      SIMLINUX
1176   # -------------------------------------------------------------
1177   # It is overridden by VXSIM_CPU only in files init-vxsim.c and
1178   # sigtramp-vxworks-vxsim.c which contain functions determined at
1179   # runtime to be called if a program is running on VxSim vs real hardware
1180   # (due to differences in signal context for unwinding).
1182   ifneq ($(strip $(filter-out vxworks7, $(target_os))),)
1183     ifeq ($(strip $(filter-out vxworks rtp rtp-smp,$(target_os) $(THREAD_KIND))),)
1184       VXSIM_CPU = SIMPENTIUM
1185     else
1186       ifeq ($(strip $(filter-out kernel kernel-smp rtp rtp-smp,$(THREAD_KIND))),)
1187         ifeq ($(strip $(filter-out linux%,$(host_os))),)
1188           # Linux
1189           VXSIM_CPU = SIMLINUX
1190         else
1191           # Windows
1192           VXSIM_CPU = SIMNT
1193         endif
1194       endif
1195     endif
1197     GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
1198   endif
1200   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
1201     LIBGNAT_TARGET_PAIRS += \
1202     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1203     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
1204     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
1205     system.ads<libgnat/$(SVX)-x86-rtp.ads
1206   else
1207     ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
1208       LIBGNAT_TARGET_PAIRS += \
1209       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1210       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1211       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1212       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1213       system.ads<libgnat/$(SVX)-$(X86CPU)-rtp-smp.ads
1215       EXTRA_LIBGNAT_OBJS+=affinity.o
1216     else
1217       ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
1218         LIBGNAT_TARGET_PAIRS += \
1219         s-interr.adb<libgnarl/s-interr__vxworks.adb \
1220         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1221         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1222         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1223         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1224         system.ads<libgnat/$(SVX)-$(X86CPU)-kernel.ads
1226         EXTRA_LIBGNAT_OBJS+=affinity.o
1227       else
1228         LIBGNAT_TARGET_PAIRS += \
1229         s-interr.adb<libgnarl/s-interr__vxworks.adb \
1230         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
1232         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
1233           LIBGNAT_TARGET_PAIRS += \
1234           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1235           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
1236           system.ads<libgnat/$(SVX)-x86-kernel.ads
1237         else
1238           LIBGNAT_TARGET_PAIRS += \
1239           system.ads<libgnat/system-vxworks-x86.ads
1240         endif
1241       endif
1243       EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
1244     endif
1245   endif
1247   EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
1248   EXTRA_GNATRTL_TASKING_OBJS += i-vxinco.o s-vxwork.o s-vxwext.o
1250   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1252   EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
1253   EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1255   EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
1256   EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
1258   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
1259     GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
1260   else
1261     GCC_SPEC_FILES+=vxworks-x86-link.spec
1262     GCC_SPEC_FILES+=vxworks-cert-x86-link.spec
1263     GCC_SPEC_FILES+=vxworks-smp-x86-link.spec
1264   endif
1265 endif
1267 # ARM and Aarch64 VxWorks
1268 ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
1270   ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
1271     ARCH_STR=aarch64
1272     VX=vxworks7
1273     EH_MECHANISM=-gcc
1274     SIGTRAMP_OBJ=sigtramp-vxworks.o
1275   else
1276     ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1277       ARCH_STR=arm
1278       ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
1279         VX=vxworks7
1280         EH_MECHANISM=-arm
1281         SIGTRAMP_OBJ=sigtramp-armvxworks.o
1282       else
1283         VX=vxworks
1284         EH_MECHANISM=-gcc
1285         SIGTRAMP_OBJ=sigtramp-vxworks.o
1286       endif
1287     else
1288       ARCH_STR=coff
1289     endif
1290   endif
1292   SVX=system-$(VX)
1293   GCC_SPEC_FILES+=$(VX)-gnat-crtbe-link.spec
1295   LIBGNAT_TARGET_PAIRS = \
1296   a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
1297   a-numaux.ads<libgnat/a-numaux__vxworks.ads \
1298   s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
1299   s-interr.adb<libgnarl/s-interr__vxworks.adb \
1300   s-intman.ads<libgnarl/s-intman__vxworks.ads \
1301   s-intman.adb<libgnarl/s-intman__vxworks.adb \
1302   s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
1303   s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
1304   s-osprim.adb<libgnat/s-osprim__vxworks.adb \
1305   s-parame.ads<libgnat/s-parame__vxworks.ads \
1306   s-parame.adb<libgnat/s-parame__vxworks.adb \
1307   s-stchop.ads<libgnat/s-stchop__limit.ads \
1308   s-stchop.adb<libgnat/s-stchop__vxworks.adb \
1309   s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
1310   s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
1311   s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
1312   s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads \
1313   g-socthi.ads<libgnat/g-socthi__vxworks.ads \
1314   g-socthi.adb<libgnat/g-socthi__vxworks.adb \
1315   g-stsifd.adb<libgnat/g-stsifd__sockets.adb
1317   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1319   ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
1320     LIBGNAT_TARGET_PAIRS += \
1321     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1322     s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
1323     s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
1324     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1325     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
1327     EXTRA_LIBGNAT_OBJS+=affinity.o
1329     EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1330     EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1331   else
1332     ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
1333       LIBGNAT_TARGET_PAIRS += \
1334       s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1335       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
1336       s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1337       s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
1338       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
1340       EXTRA_LIBGNAT_OBJS+=affinity.o
1342       EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1343       EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1344     else
1345       LIBGNAT_TARGET_PAIRS += \
1346       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
1347       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
1349       ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
1350         LIBGNAT_TARGET_PAIRS += \
1351         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
1352         s-vxwext.adb<libgnarl/s-vxwext__kernel.adb
1354         EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
1355         EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
1356       endif
1357     endif
1358   endif
1360   EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o \
1361     s-stchop.o
1362   EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o
1364   EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
1366   ifeq ($(strip $(filter-out arm vxworks7%, $(target_cpu) $(target_os))),)
1367     GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1368   else
1369     ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
1370       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
1371     endif
1372     EXTRA_ADALIB_OBJS+=$(VX_CRTBE_EXTRA_ADALIB_OBJS)
1373     EXTRA_LIBGNAT_SRCS+=vx_crtbegin.inc
1375     ifneq ($(strip $(filter-out vxworks7%, $(target_os))),)
1376       GCC_SPEC_FILES+=vxworks-arm-link.spec
1377       GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
1378     endif
1379   endif
1380 endif
1382 # ARM android
1383 ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
1384   LIBGNAT_TARGET_PAIRS = \
1385   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1386   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1387   s-intman.adb<libgnarl/s-intman__android.adb \
1388   s-linux.ads<libgnarl/s-linux__android.ads \
1389   s-osinte.adb<libgnarl/s-osinte__android.adb \
1390   s-osinte.ads<libgnarl/s-osinte__android.ads \
1391   s-osprim.adb<libgnat/s-osprim__posix.adb \
1392   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1393   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1394   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1395   $(ATOMICS_TARGET_PAIRS) \
1396   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1397   system.ads<libgnat/system-linux-arm.ads
1399   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1401   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1402   EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
1403   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1404   EH_MECHANISM=-arm
1405   THREADSLIB =
1406   GNATLIB_SHARED = gnatlib-shared-dual
1407   LIBRARY_VERSION := $(LIB_VERSION)
1408 endif
1410 # AARCH64 QNX
1411 ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),)
1412   LIBGNAT_TARGET_PAIRS = \
1413   a-intnam.ads<libgnarl/a-intnam__qnx.ads \
1414   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1415   s-intman.adb<libgnarl/s-intman__qnx.adb \
1416   s-osinte.adb<libgnarl/s-osinte__qnx.adb \
1417   s-osinte.ads<libgnarl/s-osinte__qnx.ads \
1418   s-osprim.adb<libgnat/s-osprim__posix.adb \
1419   s-qnx.ads<libgnarl/s-qnx.ads \
1420   s-taprop.adb<libgnarl/s-taprop__qnx.adb \
1421   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1422   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1423   g-soliop.ads<libgnat/g-soliop__qnx.ads \
1424   $(ATOMICS_TARGET_PAIRS) \
1425   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1426   system.ads<libgnat/system-qnx-aarch64.ads
1428   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1430   EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
1431   EXTRA_LIBGNAT_OBJS+=sigtramp-qnx.o
1432   EXTRA_LIBGNAT_SRCS+=sigtramp.h
1433   EH_MECHANISM=-gcc
1435   SO_OPTS= -shared-libgcc -Wl,-soname,
1436   MISCLIB= -lsocket
1437   THREADSLIB=
1438   GNATLIB_SHARED = gnatlib-shared-dual
1439   LIBRARY_VERSION := $(LIB_VERSION)
1440 endif
1442 # Sparc Solaris
1443 ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
1444   LIBGNAT_TARGET_PAIRS = \
1445   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1446   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1447   s-intman.adb<libgnarl/s-intman__solaris.adb \
1448   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1449   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1450   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1451   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1452   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1453   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1454   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1455   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1456   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1457   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1458   $(TRASYM_DWARF_UNIX_PAIRS) \
1459   $(ATOMICS_TARGET_PAIRS) \
1460   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1461   system.ads<libgnat/system-solaris-sparc.ads
1463   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1465   EH_MECHANISM=-gcc
1466   THREADSLIB = -lposix4 -lthread
1467   MISCLIB = -lposix4 -lnsl -lsocket
1468   SO_OPTS = -Wl,-h,
1469   GNATLIB_SHARED = gnatlib-shared-dual
1470   GMEM_LIB = gmemlib
1471   LIBRARY_VERSION := $(LIB_VERSION)
1472 endif
1474 # x86 and x86-64 solaris
1475 ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
1476   LIBGNAT_TARGET_PAIRS_COMMON = \
1477   a-intnam.ads<libgnarl/a-intnam__solaris.ads \
1478   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1479   s-intman.adb<libgnarl/s-intman__solaris.adb \
1480   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1481   s-osinte.adb<libgnarl/s-osinte__solaris.adb \
1482   s-osinte.ads<libgnarl/s-osinte__solaris.ads \
1483   s-osprim.adb<libgnat/s-osprim__solaris.adb \
1484   s-taprop.adb<libgnarl/s-taprop__solaris.adb \
1485   s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
1486   s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
1487   s-taspri.ads<libgnarl/s-taspri__solaris.ads \
1488   s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
1489   g-soliop.ads<libgnat/g-soliop__solaris.ads \
1490   $(TRASYM_DWARF_UNIX_PAIRS) \
1491   $(ATOMICS_TARGET_PAIRS) \
1492   system.ads<libgnat/system-solaris-x86.ads
1494   ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
1495     ifeq ($(strip $(MULTISUBDIR)),/amd64)
1496       LIBGNAT_TARGET_PAIRS = \
1497       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1498     else
1499       LIBGNAT_TARGET_PAIRS = \
1500       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1501     endif
1502   else
1503     ifeq ($(strip $(MULTISUBDIR)),/32)
1504       LIBGNAT_TARGET_PAIRS = \
1505       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
1506     else
1507       LIBGNAT_TARGET_PAIRS = \
1508       $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
1509     endif
1510   endif
1512   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1513   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1515   EH_MECHANISM=-gcc
1516   THREADSLIB = -lposix4 -lthread
1517   MISCLIB = -lposix4 -lnsl -lsocket
1518   SO_OPTS = -Wl,-h,
1519   GNATLIB_SHARED = gnatlib-shared-dual
1520   GMEM_LIB = gmemlib
1521   LIBRARY_VERSION := $(LIB_VERSION)
1522 endif
1524 # x86 Linux
1525 ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
1526   LIBGNAT_TARGET_PAIRS = \
1527   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1528   a-synbar.adb<libgnarl/a-synbar__posix.adb \
1529   a-synbar.ads<libgnarl/a-synbar__posix.ads \
1530   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1531   s-intman.adb<libgnarl/s-intman__posix.adb \
1532   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1533   $(TRASYM_DWARF_UNIX_PAIRS) \
1534   g-sercom.adb<libgnat/g-sercom__linux.adb \
1535   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
1536   a-exetim.adb<libgnarl/a-exetim__posix.adb \
1537   a-exetim.ads<libgnarl/a-exetim__default.ads \
1538   s-linux.ads<libgnarl/s-linux.ads \
1539   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1540   $(ATOMICS_TARGET_PAIRS) \
1541   system.ads<libgnat/system-linux-x86.ads
1543   ifeq ($(strip $(MULTISUBDIR)),/64)
1544     LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
1545   else
1546     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1547   endif
1549   LIBGNAT_TARGET_PAIRS += \
1550   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1551   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1552   s-osprim.adb<libgnat/s-osprim__posix.adb \
1553   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1554   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1555   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1556   s-taspri.ads<libgnarl/s-taspri__posix.ads
1558   EH_MECHANISM=-gcc
1559   THREADSLIB = -lpthread -lrt
1560   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1561   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1562   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
1564   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1566   GNATLIB_SHARED = gnatlib-shared-dual
1567   MISCLIB = -ldl
1568   GMEM_LIB = gmemlib
1569   LIBRARY_VERSION := $(LIB_VERSION)
1571   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
1572 endif
1574 # x86 kfreebsd
1575 ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
1576   LIBGNAT_TARGET_PAIRS = \
1577   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1578   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1579   s-intman.adb<libgnarl/s-intman__posix.adb \
1580   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1581   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1582   s-osprim.adb<libgnat/s-osprim__posix.adb \
1583   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1584   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1585   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1586   $(TRASYM_DWARF_UNIX_PAIRS) \
1587   $(ATOMICS_TARGET_PAIRS) \
1588   $(X86_TARGET_PAIRS) \
1589   system.ads<libgnat/system-freebsd.ads
1591   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1593   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1594   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1596   EH_MECHANISM=-gcc
1597   THREADSLIB = -lpthread
1598   GNATLIB_SHARED = gnatlib-shared-dual
1599   GMEM_LIB = gmemlib
1600   LIBRARY_VERSION := $(LIB_VERSION)
1601   MISCLIB = -lutil
1602 endif
1604 # i[3456]86-pc-gnu i.e. GNU Hurd
1605 ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
1606   LIBGNAT_TARGET_PAIRS = \
1607   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1608   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1609   s-intman.adb<libgnarl/s-intman__posix.adb \
1610   s-osinte.adb<libgnarl/s-osinte__gnu.adb \
1611   s-osinte.ads<libgnarl/s-osinte__gnu.ads \
1612   s-osprim.adb<libgnat/s-osprim__posix.adb \
1613   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1614   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1615   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1616   $(ATOMICS_TARGET_PAIRS) \
1617   $(X86_TARGET_PAIRS) \
1618   system.ads<libgnat/system-freebsd.ads
1620   TOOLS_TARGET_PAIRS =  indepsw.adb<indepsw-gnu.adb
1622   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1624   EH_MECHANISM=-gcc
1625   THREADSLIB = -lpthread
1626   GNATLIB_SHARED = gnatlib-shared-dual
1627   GMEM_LIB = gmemlib
1628   LIBRARY_VERSION := $(LIB_VERSION)
1629 endif
1631 ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
1632   LIBGNAT_TARGET_PAIRS = \
1633   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1634   a-numaux.adb<libgnat/a-numaux__x86.adb \
1635   a-numaux.ads<libgnat/a-numaux__x86.ads \
1636   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1637   s-intman.adb<libgnarl/s-intman__posix.adb \
1638   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1639   s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
1640   s-osprim.adb<libgnat/s-osprim__posix.adb \
1641   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1642   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1643   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1644   system.ads<libgnat/system-freebsd.ads
1646   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1648   EH_MECHANISM=-gcc
1649   THREADSLIB = -lpthread
1650   GNATLIB_SHARED = gnatlib-shared-dual
1651   GMEM_LIB = gmemlib
1652   LIBRARY_VERSION := $(LIB_VERSION)
1653 endif
1655 # aarch64 FreeBSD
1656 ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
1657   LIBGNAT_TARGET_PAIRS = \
1658   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1659   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1660   s-intman.adb<libgnarl/s-intman__posix.adb \
1661   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1662   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1663   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1664   s-osprim.adb<libgnat/s-osprim__posix.adb \
1665   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1666   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1667   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1668   $(ATOMICS_TARGET_PAIRS) \
1669   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1670   system.ads<libgnat/system-freebsd.ads
1672   GNATLIB_SHARED = gnatlib-shared-dual
1674   EH_MECHANISM=-gcc
1675   THREADSLIB= -lpthread
1676   GMEM_LIB = gmemlib
1677   LIBRARY_VERSION := $(LIB_VERSION)
1678   MISCLIB = -lutil
1679 endif
1681 # x86 FreeBSD
1682 ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
1683   LIBGNAT_TARGET_PAIRS = \
1684   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1685   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1686   s-intman.adb<libgnarl/s-intman__posix.adb \
1687   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1688   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1689   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1690   s-osprim.adb<libgnat/s-osprim__posix.adb \
1691   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1692   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1693   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1694   $(TRASYM_DWARF_UNIX_PAIRS) \
1695   $(ATOMICS_TARGET_PAIRS) \
1696   $(X86_TARGET_PAIRS) \
1697   system.ads<libgnat/system-freebsd.ads
1699   GNATLIB_SHARED = gnatlib-shared-dual
1701   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1702   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1704   EH_MECHANISM=-gcc
1705   THREADSLIB= -lpthread
1706   GMEM_LIB = gmemlib
1707   LIBRARY_VERSION := $(LIB_VERSION)
1708   MISCLIB = -lutil
1709 endif
1711 # x86-64 FreeBSD
1712 ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
1713   LIBGNAT_TARGET_PAIRS = \
1714   a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
1715   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1716   s-intman.adb<libgnarl/s-intman__posix.adb \
1717   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1718   s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
1719   s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
1720   s-osprim.adb<libgnat/s-osprim__posix.adb \
1721   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1722   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1723   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1724   $(TRASYM_DWARF_UNIX_PAIRS) \
1725   $(ATOMICS_TARGET_PAIRS) \
1726   $(X86_64_TARGET_PAIRS) \
1727   system.ads<libgnat/system-freebsd.ads
1729   GNATLIB_SHARED = gnatlib-shared-dual
1731   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
1732   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1734   EH_MECHANISM=-gcc
1735   THREADSLIB= -lpthread
1736   GMEM_LIB = gmemlib
1737   LIBRARY_VERSION := $(LIB_VERSION)
1738   MISCLIB = -lutil
1739 endif
1741 # x86-64 DragonFly
1742 ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
1743   LIBGNAT_TARGET_PAIRS = \
1744   a-intnam.ads<libgnarl/a-intnam__dragonfly.ads \
1745   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1746   s-intman.adb<libgnarl/s-intman__posix.adb \
1747   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1748   s-osinte.adb<libgnarl/s-osinte__dragonfly.adb \
1749   s-osinte.ads<libgnarl/s-osinte__dragonfly.ads \
1750   s-osprim.adb<libgnat/s-osprim__posix.adb \
1751   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1752   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1753   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1754   $(ATOMICS_TARGET_PAIRS) \
1755   $(X86_64_TARGET_PAIRS) \
1756   system.ads<libgnat/system-dragonfly-x86_64.ads
1758   GNATLIB_SHARED = gnatlib-shared-dual
1760   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1762   EH_MECHANISM=-gcc
1763   THREADSLIB= -lpthread
1764   GMEM_LIB = gmemlib
1765   LIBRARY_VERSION := $(LIB_VERSION)
1766   MISCLIB = -lutil
1767 endif
1769 # S390 Linux
1770 ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
1771   LIBGNAT_TARGET_PAIRS = \
1772   a-intnam.ads<libgnarl/a-intnam__linux.ads \
1773   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1774   s-intman.adb<libgnarl/s-intman__posix.adb \
1775   s-linux.ads<libgnarl/s-linux.ads \
1776   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1777   s-osinte.ads<libgnarl/s-osinte__linux.ads \
1778   s-osprim.adb<libgnat/s-osprim__posix.adb \
1779   s-taprop.adb<libgnarl/s-taprop__linux.adb \
1780   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1781   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1782   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
1783   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1784   system.ads<libgnat/system-linux-s390.ads
1786   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1788   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1789   EH_MECHANISM=-gcc
1790   THREADSLIB = -lpthread
1791   GNATLIB_SHARED = gnatlib-shared-dual
1792   LIBRARY_VERSION := $(LIB_VERSION)
1793 endif
1795 # HP/PA HP-UX 10
1796 ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
1797   LIBGNAT_TARGET_PAIRS = \
1798   a-excpol.adb<libgnat/a-excpol__abort.adb \
1799   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1800   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1801   s-interr.adb<libgnarl/s-interr__sigaction.adb \
1802   s-intman.adb<libgnarl/s-intman__posix.adb \
1803   s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
1804   s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
1805   s-parame.ads<libgnat/s-parame__hpux.ads \
1806   s-osprim.adb<libgnat/s-osprim__posix.adb \
1807   s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
1808   s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
1809   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1810   system.ads<libgnat/system-hpux.ads
1812   EH_MECHANISM=-gcc
1813 endif
1815 # HP/PA HP-UX 11
1816 ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
1817   LIBGNAT_TARGET_PAIRS = \
1818   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1819   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1820   s-intman.adb<libgnarl/s-intman__posix.adb \
1821   s-osinte.adb<libgnarl/s-osinte__posix.adb \
1822   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
1823   s-parame.ads<libgnat/s-parame__hpux.ads \
1824   s-osprim.adb<libgnat/s-osprim__posix.adb \
1825   s-traceb.adb<libgnat/s-traceb__hpux.adb \
1826   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1827   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1828   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1829   system.ads<libgnat/system-hpux.ads
1831   EH_MECHANISM=-gcc
1832   TGT_LIB = /usr/lib/libcl.a
1833   THREADSLIB = -lpthread
1834   GMEM_LIB = gmemlib
1835   soext = .sl
1836   SO_OPTS = -Wl,+h,
1837   GNATLIB_SHARED = gnatlib-shared-dual
1838   LIBRARY_VERSION := $(LIB_VERSION)
1839 endif
1841 # IBM AIX
1842 ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
1843   LIBGNAT_TARGET_PAIRS = \
1844   a-intnam.ads<libgnarl/a-intnam__aix.ads \
1845   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1846   s-intman.adb<libgnarl/s-intman__posix.adb \
1847   s-osinte.adb<libgnarl/s-osinte__aix.adb \
1848   s-osinte.ads<libgnarl/s-osinte__aix.ads \
1849   s-osprim.adb<libgnat/s-osprim__posix.adb \
1850   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1851   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1852   s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1853   $(TRASYM_DWARF_UNIX_PAIRS) \
1854   $(ATOMICS_TARGET_PAIRS) \
1855   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1856   system.ads<libgnat/system-aix.ads
1858   ifneq ($(target_os),)
1859     ifeq ($(findstring ppc64, \
1860             $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
1861                      -print-multi-os-directory)), \
1862           ppc64)
1863       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-aix.adb
1864     else
1865       TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1866     endif
1867   endif
1869   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1871   THREADSLIB = -lpthreads
1872   EH_MECHANISM=-gcc
1874   GMEM_LIB = gmemlib
1875 endif
1877 # LynxOS 178 and LynxOS 178 Elf
1878 ifeq ($(strip $(filter-out lynxos178%,$(target_os))),)
1879   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1881   LIBGNAT_TARGET_PAIRS = \
1882   a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
1883   g-soliop.ads<libgnat/g-soliop__lynxos.ads \
1884   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1885   s-intman.adb<libgnarl/s-intman__lynxos.adb \
1886   s-osinte.adb<libgnarl/s-osinte__lynxos178.adb \
1887   s-osprim.ads<libgnat/s-osprim__lynxos.ads \
1888   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1889   s-taspri.ads<libgnarl/s-taspri__lynxos.ads \
1890   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
1892   ifeq ($(strip $(filter-out powerpc%, $(target_cpu))),)
1893     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-ppc.ads
1894   endif
1895   ifeq ($(strip $(filter-out %86, $(target_cpu))),)
1896     LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
1897     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1898   endif
1900   ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
1901     LIBGNAT_TARGET_PAIRS += \
1902     s-osinte.ads<libgnarl/s-osinte__lynxos178e.ads \
1903     s-osprim.adb<libgnat/s-osprim__posix2008.adb \
1904     s-tracon.adb<hie/s-tracon__ppc-eabi.adb
1905   endif
1907   EH_MECHANISM=-gcc
1908 endif
1910 # RTEMS
1911 ifeq ($(strip $(filter-out rtems%,$(target_os))),)
1912   LIBGNAT_TARGET_PAIRS = \
1913   system.ads<libgnat/system-rtems.ads \
1914   a-intnam.ads<libgnarl/a-intnam__rtems.ads \
1915   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1916   s-intman.adb<libgnarl/s-intman__posix.adb \
1917   s-osinte.adb<libgnarl/s-osinte__rtems.adb \
1918   s-osinte.ads<libgnarl/s-osinte__rtems.ads \
1919   s-osprim.adb<libgnat/s-osprim__rtems.adb \
1920   s-parame.adb<libgnat/s-parame__rtems.adb \
1921   s-taprop.adb<libgnarl/s-taprop__posix.adb \
1922   s-taspri.ads<libgnarl/s-taspri__posix.ads \
1923   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1924   s-stchop.adb<libgnat/s-stchop__rtems.adb \
1925   s-interr.adb<libgnarl/s-interr__hwint.adb
1926   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1927     EH_MECHANISM=-arm
1928   else
1929     EH_MECHANISM=-gcc
1930   endif
1931 endif
1933 # PikeOS
1934 ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
1935   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1936 endif
1938 # *-elf, *-eabi, or *-eabispe
1939 ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
1940   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1941 endif
1943 ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
1944   GNATRTL_SOCKETS_OBJS =
1946   LIBGNAT_TARGET_PAIRS = \
1947         a-intnam.ads<libgnarl/a-intnam__dummy.ads \
1948         s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1949         s-intman.adb<libgnarl/s-intman__dummy.adb \
1950         s-osinte.ads<libgnarl/s-osinte__dummy.ads \
1951         s-osprim.adb<libgnat/s-osprim__unix.adb \
1952         s-taprop.adb<libgnarl/s-taprop__dummy.adb \
1953         s-taspri.ads<libgnarl/s-taspri__dummy.ads \
1954         system.ads<libgnat/system-djgpp.ads \
1955         $(DUMMY_SOCKETS_TARGET_PAIRS)
1957   EH_MECHANISM=-gcc
1958 endif
1960 # Cygwin/Mingw32
1961 ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),)
1962   # Cygwin provides a full Posix environment, and so we use the default
1963   # versions g-socthi rather than the Windows-specific MinGW version.
1964   # Ideally we would use all the default versions for Cygwin and none
1965   # of the MinGW versions, but for historical reasons the Cygwin port
1966   # has always been a CygMing frankenhybrid and it is a long-term project
1967   # to disentangle them.
1968   ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
1969     LIBGNAT_TARGET_PAIRS = \
1970     g-socthi.ads<libgnat/g-socthi.ads \
1971     g-socthi.adb<libgnat/g-socthi.adb
1972   else
1973     LIBGNAT_TARGET_PAIRS = \
1974     g-socthi.ads<libgnat/g-socthi__mingw.ads \
1975     g-socthi.adb<libgnat/g-socthi__mingw.adb
1976   endif
1977   LIBGNAT_TARGET_PAIRS += \
1978   a-dirval.adb<libgnat/a-dirval__mingw.adb \
1979   a-excpol.adb<libgnat/a-excpol__abort.adb \
1980   s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
1981   s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1982   s-taspri.ads<libgnarl/s-taspri__mingw.ads \
1983   s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
1984   s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
1985   g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1986   g-soliop.ads<libgnat/g-soliop__mingw.ads \
1987   $(ATOMICS_TARGET_PAIRS) \
1988   system.ads<libgnat/system-mingw.ads
1990   LIBGNAT_TARGET_PAIRS += \
1991   a-exetim.adb<libgnarl/a-exetim__mingw.adb \
1992   a-exetim.ads<libgnarl/a-exetim__mingw.ads \
1993   a-intnam.ads<libgnarl/a-intnam__mingw.ads \
1994   g-sercom.adb<libgnat/g-sercom__mingw.adb \
1995   $(TRASYM_DWARF_MINGW_PAIRS) \
1996   s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
1997   s-interr.adb<libgnarl/s-interr__sigaction.adb \
1998   s-intman.adb<libgnarl/s-intman__mingw.adb \
1999   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2000   s-osinte.ads<libgnarl/s-osinte__mingw.ads \
2001   s-osprim.adb<libgnat/s-osprim__mingw.adb \
2002   s-taprop.adb<libgnarl/s-taprop__mingw.adb
2004   ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
2005     ifeq ($(strip $(MULTISUBDIR)),/32)
2006       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2007       SO_OPTS= -m32 -Wl,-soname,
2008     else
2009       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2010       SO_OPTS = -m64 -Wl,-soname,
2011     endif
2012   else
2013     ifeq ($(strip $(MULTISUBDIR)),/64)
2014       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2015       SO_OPTS = -m64 -Wl,-soname,
2016     else
2017       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2018       SO_OPTS = -m32 -Wl,-soname,
2019     endif
2020   endif
2022   EXTRA_GNATRTL_NONTASKING_OBJS += \
2023     s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
2024   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
2025   EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
2026   EXTRA_LIBGNAT_SRCS+=mingw32.h
2027   MISCLIB = -lws2_32
2029   # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
2030   # auto-import support for array/record will be done.
2031   GNATLIB_SHARED = gnatlib-shared-win32
2033   EH_MECHANISM=-gcc
2035   TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2037   GMEM_LIB = gmemlib
2038   EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
2039   EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
2040   soext = .dll
2041   LIBRARY_VERSION := $(LIB_VERSION)
2042 endif
2044 # Mips Linux
2045 ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
2046   LIBGNAT_TARGET_PAIRS = \
2047   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2048   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2049   s-intman.adb<libgnarl/s-intman__posix.adb \
2050   s-linux.ads<libgnarl/s-linux__mips.ads \
2051   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2052   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2053   s-osprim.adb<libgnat/s-osprim__posix.adb \
2054   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2055   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2056   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2057   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2058   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2059   g-sercom.adb<libgnat/g-sercom__linux.adb \
2060   system.ads<libgnat/system-linux-mips.ads
2062   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2064   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2065   EH_MECHANISM=-gcc
2066   THREADSLIB = -lpthread
2067   GNATLIB_SHARED = gnatlib-shared-dual
2068   GMEM_LIB = gmemlib
2069   LIBRARY_VERSION := $(LIB_VERSION)
2070 endif
2072 # PowerPC and e500v2 Linux
2073 ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
2074   LIBGNAT_TARGET_PAIRS_COMMON = \
2075   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2076   a-exetim.ads<libgnarl/a-exetim__default.ads \
2077   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2078   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2079   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2080   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2081   s-intman.adb<libgnarl/s-intman__posix.adb \
2082   s-linux.ads<libgnarl/s-linux.ads \
2083   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2084   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2085   g-sercom.adb<libgnat/g-sercom__linux.adb \
2086   $(TRASYM_DWARF_UNIX_PAIRS) \
2087   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2088   $(ATOMICS_TARGET_PAIRS) \
2089   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2090   system.ads<libgnat/system-linux-ppc.ads
2092   LIBGNAT_TARGET_PAIRS = \
2093     $(LIBGNAT_TARGET_PAIRS_COMMON) \
2094     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2095     s-osinte.ads<libgnarl/s-osinte__linux.ads \
2096     s-osprim.adb<libgnat/s-osprim__posix.adb \
2097     s-taprop.adb<libgnarl/s-taprop__linux.adb \
2098     s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2099     s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2100     s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads
2102   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2104   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2105   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2107   EH_MECHANISM=-gcc
2108   THREADSLIB = -lpthread -lrt
2109   GNATLIB_SHARED = gnatlib-shared-dual
2110   MISCLIB = -ldl
2111   GMEM_LIB = gmemlib
2112   LIBRARY_VERSION := $(LIB_VERSION)
2113 endif
2115 # ARM linux, GNU eabi
2116 ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
2117   LIBGNAT_TARGET_PAIRS = \
2118   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2119   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2120   s-intman.adb<libgnarl/s-intman__posix.adb \
2121   s-linux.ads<libgnarl/s-linux.ads \
2122   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2123   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2124   s-osprim.adb<libgnat/s-osprim__posix.adb \
2125   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2126   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2127   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2128   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2129   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2130   $(ATOMICS_TARGET_PAIRS) \
2131   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2132   system.ads<libgnat/system-linux-arm.ads
2134   ifeq ($(strip $(filter-out arm%b,$(target_cpu))),)
2135     EH_MECHANISM=
2136   else
2137     EH_MECHANISM=-arm
2138   endif
2140   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2142   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2143   THREADSLIB = -lpthread
2144   GNATLIB_SHARED = gnatlib-shared-dual
2145   GMEM_LIB = gmemlib
2146   LIBRARY_VERSION := $(LIB_VERSION)
2147 endif
2149 # AArch64 Linux
2150 ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
2151   LIBGNAT_TARGET_PAIRS = \
2152   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2153   a-exetim.ads<libgnarl/a-exetim__default.ads \
2154   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2155   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2156   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2157   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2158   s-intman.adb<libgnarl/s-intman__posix.adb \
2159   s-linux.ads<libgnarl/s-linux.ads \
2160   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2161   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2162   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2163   s-osprim.adb<libgnat/s-osprim__posix.adb \
2164   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2165   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2166   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2167   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2168   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2169   g-sercom.adb<libgnat/g-sercom__linux.adb \
2170   $(ATOMICS_TARGET_PAIRS) \
2171   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2172   system.ads<libgnat/system-linux-arm.ads
2174   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2176   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2177   EH_MECHANISM=-gcc
2178   THREADSLIB=-lpthread -lrt
2179   GNATLIB_SHARED=gnatlib-shared-dual
2180   GMEM_LIB = gmemlib
2181   LIBRARY_VERSION := $(LIB_VERSION)
2182 endif
2184 # Sparc Linux
2185 ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
2186   LIBGNAT_TARGET_PAIRS = \
2187   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2188   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2189   s-intman.adb<libgnarl/s-intman__posix.adb \
2190   s-linux.ads<libgnarl/s-linux__sparc.ads \
2191   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2192   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2193   s-osprim.adb<libgnat/s-osprim__posix.adb \
2194   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2195   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2196   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2197   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2198   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2199   system.ads<libgnat/system-linux-sparc.ads
2201   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2203   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2204   EH_MECHANISM=-gcc
2205   THREADSLIB = -lpthread
2206   GNATLIB_SHARED = gnatlib-shared-dual
2207   GMEM_LIB = gmemlib
2208   LIBRARY_VERSION := $(LIB_VERSION)
2209 endif
2211 # HP/PA Linux
2212 ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
2213   LIBGNAT_TARGET_PAIRS = \
2214   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2215   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2216   s-intman.adb<libgnarl/s-intman__posix.adb \
2217   s-linux.ads<libgnarl/s-linux__hppa.ads \
2218   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2219   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2220   s-osprim.adb<libgnat/s-osprim__posix.adb \
2221   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2222   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2223   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2224   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2225   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2226   system.ads<libgnat/system-linux-hppa.ads
2228   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2230   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2231   EH_MECHANISM=-gcc
2232   THREADSLIB = -lpthread
2233   GNATLIB_SHARED = gnatlib-shared-dual
2234   GMEM_LIB = gmemlib
2235   LIBRARY_VERSION := $(LIB_VERSION)
2236 endif
2238 # M68K Linux
2239 ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
2240   LIBGNAT_TARGET_PAIRS = \
2241   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2242   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2243   s-intman.adb<libgnarl/s-intman__posix.adb \
2244   s-linux.ads<libgnarl/s-linux.ads \
2245   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2246   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2247   s-osprim.adb<libgnat/s-osprim__posix.adb \
2248   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2249   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2250   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2251   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2252   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2253   system.ads<libgnat/system-linux-m68k.ads
2255   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2257   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2258   EH_MECHANISM=-gcc
2259   THREADSLIB = -lpthread
2260   GNATLIB_SHARED = gnatlib-shared-dual
2261   GMEM_LIB = gmemlib
2262   LIBRARY_VERSION := $(LIB_VERSION)
2263 endif
2265 # SH4 Linux
2266 ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
2267   LIBGNAT_TARGET_PAIRS = \
2268   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2269   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2270   s-intman.adb<libgnarl/s-intman__posix.adb \
2271   s-linux.ads<libgnarl/s-linux.ads \
2272   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2273   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2274   s-osprim.adb<libgnat/s-osprim__posix.adb \
2275   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2276   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2277   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2278   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2279   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2280   system.ads<libgnat/system-linux-sh4.ads
2282   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb
2284   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2285   EH_MECHANISM=-gcc
2286   MISCLIB=
2287   THREADSLIB = -lpthread
2288   GNATLIB_SHARED = gnatlib-shared-dual
2289   GMEM_LIB = gmemlib
2290   LIBRARY_VERSION := $(LIB_VERSION)
2291 endif
2293 # IA64 Linux
2294 ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
2295   LIBGNAT_TARGET_PAIRS = \
2296   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2297   a-exetim.ads<libgnarl/a-exetim__default.ads \
2298   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2299   a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
2300   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2301   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2302   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2303   s-intman.adb<libgnarl/s-intman__posix.adb \
2304   s-linux.ads<libgnarl/s-linux.ads \
2305   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2306   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2307   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2308   s-osprim.adb<libgnat/s-osprim__posix.adb \
2309   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2310   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2311   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2312   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2313   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2314   g-sercom.adb<libgnat/g-sercom__linux.adb \
2315   $(TRASYM_DWARF_UNIX_PAIRS) \
2316   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2317   $(ATOMICS_TARGET_PAIRS) \
2318   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2319   system.ads<libgnat/system-linux-ia64.ads
2321   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2323   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2324   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2325   EH_MECHANISM=-gcc
2326   THREADSLIB=-lpthread -lrt
2327   GNATLIB_SHARED=gnatlib-shared-dual
2328   MISCLIB = -ldl
2329   GMEM_LIB = gmemlib
2330   LIBRARY_VERSION := $(LIB_VERSION)
2331 endif
2333 # IA64 HP-UX
2334 ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
2335   LIBGNAT_TARGET_PAIRS = \
2336   a-intnam.ads<libgnarl/a-intnam__hpux.ads \
2337   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2338   s-intman.adb<libgnarl/s-intman__posix.adb \
2339   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2340   s-osinte.ads<libgnarl/s-osinte__hpux.ads \
2341   s-osprim.adb<libgnat/s-osprim__posix.adb \
2342   s-taprop.adb<libgnarl/s-taprop__posix.adb \
2343   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2344   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2345   $(TRASYM_DWARF_UNIX_PAIRS) \
2346   $(ATOMICS_TARGET_PAIRS) \
2347   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2348   system.ads<libgnat/system-hpux-ia64.ads
2350   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2352   MISCLIB=
2353   EH_MECHANISM=-gcc
2354   THREADSLIB=-lpthread
2355   GNATLIB_SHARED=gnatlib-shared-dual
2356   GMEM_LIB = gmemlib
2357   soext = .so
2358   SO_OPTS = -Wl,+h,
2359   LIBRARY_VERSION := $(LIB_VERSION)
2360 endif
2362 # Alpha Linux
2363 ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
2364   LIBGNAT_TARGET_PAIRS = \
2365   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2366   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2367   s-intman.adb<libgnarl/s-intman__posix.adb \
2368   s-linux.ads<libgnarl/s-linux__alpha.ads \
2369   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2370   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2371   s-osprim.adb<libgnat/s-osprim__posix.adb \
2372   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2373   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2374   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2375   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2376   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2377   $(ATOMICS_TARGET_PAIRS) \
2378   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2379   system.ads<libgnat/system-linux-alpha.ads
2381   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2383   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2384   EH_MECHANISM=-gcc
2385   MISCLIB=
2386   THREADSLIB=-lpthread
2387   GNATLIB_SHARED=gnatlib-shared-dual
2388   LIBRARY_VERSION := $(LIB_VERSION)
2389 endif
2391 # x86-64 Linux
2392 ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
2393   LIBGNAT_TARGET_PAIRS = \
2394   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2395   a-exetim.ads<libgnarl/a-exetim__default.ads \
2396   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2397   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2398   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2399   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2400   s-intman.adb<libgnarl/s-intman__posix.adb \
2401   s-linux.ads<libgnarl/s-linux.ads \
2402   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2403   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2404   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2405   s-osprim.adb<libgnat/s-osprim__posix.adb \
2406   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2407   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2408   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2409   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2410   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2411   g-sercom.adb<libgnat/g-sercom__linux.adb \
2412   $(TRASYM_DWARF_UNIX_PAIRS) \
2413   s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2414   $(ATOMICS_TARGET_PAIRS) \
2415   $(X86_64_TARGET_PAIRS) \
2416   system.ads<libgnat/system-linux-x86.ads
2418   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2420   EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2421   EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2422   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2424   EH_MECHANISM=-gcc
2425   THREADSLIB=-lpthread -lrt
2426   MISCLIB = -ldl
2427   GNATLIB_SHARED=gnatlib-shared-dual
2428   GMEM_LIB = gmemlib
2429   LIBRARY_VERSION := $(LIB_VERSION)
2431   GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
2432 endif
2434 ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
2435   LIBGNAT_TARGET_PAIRS = \
2436   a-exetim.adb<libgnarl/a-exetim__posix.adb \
2437   a-exetim.ads<libgnarl/a-exetim__default.ads \
2438   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2439   a-synbar.adb<libgnarl/a-synbar__posix.adb \
2440   a-synbar.ads<libgnarl/a-synbar__posix.ads \
2441   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2442   s-intman.adb<libgnarl/s-intman__posix.adb \
2443   s-linux.ads<libgnarl/s-linux__x32.ads \
2444   s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2445   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2446   s-osinte.adb<libgnarl/s-osinte__x32.adb \
2447   s-osprim.adb<libgnat/s-osprim__x32.adb \
2448   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2449   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2450   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2451   s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2452   s-taspri.ads<libgnarl/s-taspri__posix.ads \
2453   g-sercom.adb<libgnat/g-sercom__linux.adb \
2454   $(ATOMICS_TARGET_PAIRS) \
2455   $(X86_64_TARGET_PAIRS) \
2456   system.ads<libgnat/system-linux-x86.ads
2458   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2460   EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2461   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2462   EH_MECHANISM=-gcc
2463   THREADSLIB=-lpthread -lrt
2464   GNATLIB_SHARED=gnatlib-shared-dual
2465   GMEM_LIB = gmemlib
2466   LIBRARY_VERSION := $(LIB_VERSION)
2467 endif
2469 # RISC-V Linux
2470 ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
2471   LIBGNAT_TARGET_PAIRS = \
2472   a-intnam.ads<libgnarl/a-intnam__linux.ads \
2473   s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2474   s-intman.adb<libgnarl/s-intman__posix.adb \
2475   s-linux.ads<libgnarl/s-linux__riscv.ads \
2476   s-osinte.adb<libgnarl/s-osinte__posix.adb \
2477   s-osinte.ads<libgnarl/s-osinte__linux.ads \
2478   s-osprim.adb<libgnat/s-osprim__posix.adb \
2479   s-taprop.adb<libgnarl/s-taprop__linux.adb \
2480   s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2481   s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2482   s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2483   s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2484   g-sercom.adb<libgnat/g-sercom__linux.adb \
2485   system.ads<libgnat/system-linux-riscv.ads
2487   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2489   EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2490   EH_MECHANISM=-gcc
2491   THREADSLIB = -lpthread
2492   GNATLIB_SHARED = gnatlib-shared-dual
2493   GMEM_LIB = gmemlib
2494   LIBRARY_VERSION := $(LIB_VERSION)
2495 endif
2497 # Darwin (Mac OS X)
2498 ifeq ($(strip $(filter-out darwin%,$(target_os))),)
2499   SO_OPTS = -shared-libgcc
2500   LIBGNAT_TARGET_PAIRS = \
2501     a-intnam.ads<libgnarl/a-intnam__darwin.ads \
2502     s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2503     s-osinte.adb<libgnarl/s-osinte__darwin.adb \
2504     s-osinte.ads<libgnarl/s-osinte__darwin.ads \
2505     s-taprop.adb<libgnarl/s-taprop__posix.adb \
2506     s-taspri.ads<libgnarl/s-taspri__posix.ads \
2507     g-sercom.adb<libgnat/g-sercom__linux.adb \
2508     s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
2510   ifeq ($(strip $(filter-out %86,$(target_cpu))),)
2511     LIBGNAT_TARGET_PAIRS += \
2512       s-intman.adb<libgnarl/s-intman__susv3.adb \
2513       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2514       $(ATOMICS_TARGET_PAIRS) \
2515       system.ads<libgnat/system-darwin-x86.ads
2517     ifeq ($(strip $(MULTISUBDIR)),/x86_64)
2518       SO_OPTS += -m64
2519       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2520     else
2521       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2522     endif
2524     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2525   endif
2527   ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
2528     LIBGNAT_TARGET_PAIRS += \
2529       s-intman.adb<libgnarl/s-intman__susv3.adb \
2530       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2531       a-exetim.ads<libgnarl/a-exetim__default.ads \
2532       a-exetim.adb<libgnarl/a-exetim__darwin.adb \
2533       $(ATOMICS_TARGET_PAIRS) \
2534       system.ads<libgnat/system-darwin-x86.ads
2536     ifeq ($(strip $(MULTISUBDIR)),/i386)
2537       SO_OPTS += -m32
2538       LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2539     else
2540       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2541     endif
2543     EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2544     EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
2545   endif
2547   ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
2548     LIBGNAT_TARGET_PAIRS += \
2549       s-intman.adb<libgnarl/s-intman__posix.adb \
2550       s-osprim.adb<libgnat/s-osprim__posix.adb \
2551       a-numaux.ads<libgnat/a-numaux__darwin.ads \
2552       a-numaux.adb<libgnat/a-numaux__darwin.adb \
2553       $(ATOMICS_TARGET_PAIRS) \
2554       $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2555       system.ads<libgnat/system-darwin-ppc.ads
2557     ifeq ($(strip $(MULTISUBDIR)),/ppc64)
2558         SO_OPTS += -m64
2559     endif
2560   endif
2562   ifeq ($(strip $(filter-out arm,$(target_cpu))),)
2563     LIBGNAT_TARGET_PAIRS += \
2564       s-intman.adb<libgnarl/s-intman__susv3.adb \
2565       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2566       $(ATOMICS_TARGET_PAIRS) \
2567       $(ATOMICS_BUILTINS_TARGET_PAIRS)
2569     LIBGNAT_TARGET_PAIRS += \
2570       system.ads<libgnat/system-darwin-arm.ads
2571   endif
2573   ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
2574     LIBGNAT_TARGET_PAIRS += \
2575       s-intman.adb<libgnarl/s-intman__susv3.adb \
2576       s-osprim.adb<libgnat/s-osprim__darwin.adb \
2577       $(ATOMICS_TARGET_PAIRS) \
2578       $(ATOMICS_BUILTINS_TARGET_PAIRS)
2580     EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
2581     EXTRA_LIBGNAT_SRCS+=sigtramp.h
2582     LIBGNAT_TARGET_PAIRS += \
2583       system.ads<libgnat/system-darwin-arm.ads
2584   endif
2586   TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb
2588   EH_MECHANISM=-gcc
2589   GNATLIB_SHARED = gnatlib-shared-darwin
2590   GMEM_LIB = gmemlib
2591   LIBRARY_VERSION := $(LIB_VERSION)
2592   soext = .dylib
2593   GCC_LINK_FLAGS=-static-libstdc++
2594 endif
2596 ifeq ($(EH_MECHANISM),-gcc)
2597   LIBGNAT_TARGET_PAIRS += \
2598     s-excmac.ads<libgnat/s-excmac__gcc.ads \
2599     s-excmac.adb<libgnat/s-excmac__gcc.adb
2600   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2601   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2602 endif
2604 ifeq ($(EH_MECHANISM),-arm)
2605   LIBGNAT_TARGET_PAIRS += \
2606     s-excmac.ads<libgnat/s-excmac__arm.ads \
2607     s-excmac.adb<libgnat/s-excmac__arm.adb
2608   EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2609   EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2610 endif
2612 # LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
2613 # library.  LIBGNAT_OBJS is the list of object files for libgnat.
2614 # thread.c is special as put into GNATRTL_TASKING_OBJS
2615 LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o                     \
2616   cal.o cio.o cstreams.o ctrl_c.o                                       \
2617   env.o errno.o exit.o expect.o final.o rtfinal.o rtinit.o              \
2618   init.o initialize.o locales.o mkdir.o                                 \
2619   raise.o seh_init.o socket.o sysdep.o                                  \
2620   targext.o terminals.o tracebak.o                                      \
2621   $(EXTRA_LIBGNAT_OBJS)
2623 # NOTE ??? - when the -I option for compiling Ada code is made to work,
2624 #  the library installation will change and there will be a
2625 #  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
2626 #  from ADA_INCLUDE_SRCS.
2628 LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))                      \
2629   adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h           \
2630   tb-gcc.c libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
2632 # memtrack.o is special as not put into libgnat.
2633 GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
2634   memtrack.o
2636 # Run time source files
2637 # Note that libgnat contains a significant number of files. In orde to avoid
2638 # command line length limitations the source regexp has been split for that
2639 # directory.
2640 ADA_INCLUDE_SRCS =\
2641  libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
2642  libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
2643  libgnat/sequenio.ads libgnat/system.ads Makefile.adalib libgnat/memtrack.adb \
2644  libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
2645  libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
2646  libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
2647  libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
2648  libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
2649  libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
2650  libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
2651  libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
2652  libgnarl/[agis]-[a-z]*.ad[sb]
2655 # Files that are in ADA_INCLUDE_SRCS but not in all configurations.
2656 # They will be removed from the run time if not used.
2657 ADA_EXCLUDE_SRCS =\
2658   g-allein.ads g-alleve.adb g-alleve.ads g-altcon.adb g-altcon.ads \
2659   g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
2660   g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
2661   i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
2662   s-bb.ads     s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb \
2663   s-bbexti.ads s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads \
2664   s-bbsle3.ads s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads \
2665   s-bbthre.adb s-bbthre.ads s-bbtiev.adb s-bbtiev.ads s-bbtime.adb \
2666   s-bbtime.ads s-bcprmu.adb s-bcprmu.ads s-btstch.adb s-btstch.ads \
2667   s-gcc.adb    s-gcc.ads    s-gccdiv.adb s-gccdiv.ads \
2668   s-gccshi.adb s-gccshi.ads \
2669   s-init.ads   s-init.adb   s-linux.ads  s-macres.ads \
2670   s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
2671   s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
2672   s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
2673   s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb s-stm32.ads \
2674   s-strcom.adb s-strcom.ads s-thread.ads \
2675   s-vxwext.adb s-vxwext.ads \
2676   s-win32.ads  s-winext.ads
2678 # ADA_EXCLUDE_SRCS without the sources used by the target
2679 ADA_EXCLUDE_FILES=$(filter-out \
2680   $(patsubst %$(objext),%.ads,$(GNATRTL_OBJS)) \
2681   $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
2682   $(ADA_EXCLUDE_SRCS))
2684 setup-rts: force
2685         $(RMDIR) $(RTSDIR)
2686         $(MKDIR) $(RTSDIR)
2687         $(CHMOD) u+w $(RTSDIR)
2688 # Copy target independent sources
2689         $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
2690           $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
2691 # Remove files not used
2692         $(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
2693 # Remove files to be replaced by target dependent sources
2694         $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2695                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
2696         for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
2697           case "$$f" in \
2698             $(RTSDIR)/s-stratt__*) ;; \
2699             *) $(RM) $$f ;; \
2700           esac; \
2701         done
2702 # Copy new target dependent sources
2703         $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2704                   $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
2705                         $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
2707 # Special flags
2709 # force no sibling call optimization on s-traceb.o so the number of stack
2710 # frames to be skipped when computing a call chain is not modified by
2711 # optimization. We don't want inlining, either.
2713 s-traceb.o  : s-traceb.adb s-traceb.ads
2714         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2715           $(NO_INLINE_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) $< \
2716           $(OUTPUT_OPTION)
2718 # compile s-tasdeb.o without optimization and with debug info so that it is
2719 # always possible to set conditional breakpoints on tasks.
2721 s-tasdeb.o  : s-tasdeb.adb s-tasdeb.ads
2722         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2723           $< $(OUTPUT_OPTION)
2725 # force no function reordering on a-except.o because of the exclusion bounds
2726 # mechanism (see the source file for more detailed information).
2727 # force debugging information on a-except.o so that it is always
2728 # possible to set conditional breakpoints on exceptions.
2729 # use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.
2731 a-except.o  : a-except.adb a-except.ads
2732         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2733           $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) -O1 $(ADA_INCLUDES) \
2734           $< $(OUTPUT_OPTION)
2736 # compile s-excdeb.o without optimization and with debug info to let the
2737 # debugger set breakpoints and inspect subprogram parameters on exception
2738 # related events.
2740 s-excdeb.o  : s-excdeb.adb s-excdeb.ads s-except.ads
2741         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
2742           $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
2744 # force debugging information on s-assert.o so that it is always
2745 # possible to set breakpoint on assert failures.
2747 s-assert.o  : s-assert.adb s-assert.ads
2748         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2749           $< $(OUTPUT_OPTION)
2751 # force debugging information on a-tags.o so that the debugger can find
2752 # the description of Ada.Tags.Type_Specific_Data.
2754 a-tags.o  : a-tags.adb a-tags.ads
2755         $(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2756           $< $(OUTPUT_OPTION)
2758 # force no sibling call optimization on s-memory.o to avoid turning the
2759 # tail recursion in Alloc into a loop that confuses branch prediction.
2761 s-memory.o  : s-memory.adb s-memory.ads
2762         $(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
2763           $< $(OUTPUT_OPTION)