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