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