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