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