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  s-osprim.adb<libgnat/s-osprim__posix.adb \
1740  s-taprop.adb<libgnarl/s-taprop__posix.adb \
1741  s-taspri.ads<libgnarl/s-taspri__posix.ads \
1742  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1743  $(ATOMICS_TARGET_PAIRS) \
1744  $(X86_64_TARGET_PAIRS) \
1745  system.ads<libgnat/system-dragonfly-x86_64.ads
1746
1747  GNATLIB_SHARED = gnatlib-shared-dual
1748
1749  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
1750
1751  EH_MECHANISM=-gcc
1752  THREADSLIB= -lpthread
1753  GMEM_LIB = gmemlib
1754  LIBRARY_VERSION := $(LIB_VERSION)
1755  MISCLIB = -lutil
1756endif
1757
1758# S390 Linux
1759ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
1760  LIBGNAT_TARGET_PAIRS = \
1761  a-intnam.ads<libgnarl/a-intnam__linux.ads \
1762  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1763  s-intman.adb<libgnarl/s-intman__posix.adb \
1764  s-linux.ads<libgnarl/s-linux.ads \
1765  s-osinte.adb<libgnarl/s-osinte__posix.adb \
1766  s-osinte.ads<libgnarl/s-osinte__linux.ads \
1767  s-osprim.adb<libgnat/s-osprim__posix.adb \
1768  s-taprop.adb<libgnarl/s-taprop__linux.adb \
1769  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
1770  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
1771  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
1772  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1773  system.ads<libgnat/system-linux-s390.ads
1774
1775  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1776
1777  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
1778  EH_MECHANISM=-gcc
1779  THREADSLIB = -lpthread
1780  GNATLIB_SHARED = gnatlib-shared-dual
1781  LIBRARY_VERSION := $(LIB_VERSION)
1782endif
1783
1784# HP/PA HP-UX 10
1785ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
1786  LIBGNAT_TARGET_PAIRS = \
1787  a-excpol.adb<libgnat/a-excpol__abort.adb \
1788  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1789  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1790  s-interr.adb<libgnarl/s-interr__sigaction.adb \
1791  s-intman.adb<libgnarl/s-intman__posix.adb \
1792  s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
1793  s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
1794  s-parame.ads<libgnat/s-parame__hpux.ads \
1795  s-osprim.adb<libgnat/s-osprim__posix.adb \
1796  s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
1797  s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
1798  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1799  system.ads<libgnat/system-hpux.ads
1800
1801  EH_MECHANISM=-gcc
1802endif
1803
1804# HP/PA HP-UX 11
1805ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
1806  LIBGNAT_TARGET_PAIRS = \
1807  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
1808  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1809  s-intman.adb<libgnarl/s-intman__posix.adb \
1810  s-osinte.adb<libgnarl/s-osinte__posix.adb \
1811  s-osinte.ads<libgnarl/s-osinte__hpux.ads \
1812  s-parame.ads<libgnat/s-parame__hpux.ads \
1813  s-osprim.adb<libgnat/s-osprim__posix.adb \
1814  s-traceb.adb<libgnat/s-traceb__hpux.adb \
1815  s-taprop.adb<libgnarl/s-taprop__posix.adb \
1816  s-taspri.ads<libgnarl/s-taspri__posix.ads \
1817  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
1818  system.ads<libgnat/system-hpux.ads
1819
1820  EH_MECHANISM=-gcc
1821  TGT_LIB = /usr/lib/libcl.a
1822  THREADSLIB = -lpthread
1823  GMEM_LIB = gmemlib
1824  soext = .sl
1825  SO_OPTS = -Wl,+h,
1826  GNATLIB_SHARED = gnatlib-shared-dual
1827  LIBRARY_VERSION := $(LIB_VERSION)
1828endif
1829
1830# IBM AIX
1831ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
1832  LIBGNAT_TARGET_PAIRS = \
1833  a-intnam.ads<libgnarl/a-intnam__aix.ads \
1834  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1835  s-intman.adb<libgnarl/s-intman__posix.adb \
1836  s-osinte.adb<libgnarl/s-osinte__aix.adb \
1837  s-osinte.ads<libgnarl/s-osinte__aix.ads \
1838  s-osprim.adb<libgnat/s-osprim__posix.adb \
1839  s-taprop.adb<libgnarl/s-taprop__posix.adb \
1840  s-taspri.ads<libgnarl/s-taspri__posix.ads \
1841  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
1842  $(TRASYM_DWARF_UNIX_PAIRS) \
1843  $(ATOMICS_TARGET_PAIRS) \
1844  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
1845  system.ads<libgnat/system-aix.ads
1846
1847  ifneq ($(target_os),)
1848    ifeq ($(findstring ppc64, \
1849	    $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
1850		     -print-multi-os-directory)), \
1851	  ppc64)
1852      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-aix.adb
1853    else
1854      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1855    endif
1856  endif
1857
1858  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
1859
1860  THREADSLIB = -lpthreads
1861  EH_MECHANISM=-gcc
1862
1863  GMEM_LIB = gmemlib
1864endif
1865
1866# LynxOS 178 and LynxOS 178 Elf
1867ifeq ($(strip $(filter-out lynxos178%,$(target_os))),)
1868  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
1869
1870  LIBGNAT_TARGET_PAIRS = \
1871  a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
1872  g-soliop.ads<libgnat/g-soliop__lynxos.ads \
1873  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1874  s-intman.adb<libgnarl/s-intman__lynxos.adb \
1875  s-osinte.adb<libgnarl/s-osinte__lynxos178.adb \
1876  s-osprim.ads<libgnat/s-osprim__lynxos.ads \
1877  s-taprop.adb<libgnarl/s-taprop__posix.adb \
1878  s-taspri.ads<libgnarl/s-taspri__lynxos.ads \
1879  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
1880
1881  ifeq ($(strip $(filter-out powerpc%, $(target_cpu))),)
1882    LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-ppc.ads
1883  endif
1884  ifeq ($(strip $(filter-out %86, $(target_cpu))),)
1885    LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
1886    LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1887  endif
1888
1889  ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
1890    LIBGNAT_TARGET_PAIRS += \
1891    s-osinte.ads<libgnarl/s-osinte__lynxos178e.ads \
1892    s-osprim.adb<libgnat/s-osprim__posix2008.adb \
1893    s-tracon.adb<hie/s-tracon__ppc-eabi.adb
1894  endif
1895
1896  EH_MECHANISM=-gcc
1897endif
1898
1899# RTEMS
1900ifeq ($(strip $(filter-out rtems%,$(target_os))),)
1901  LIBGNAT_TARGET_PAIRS = \
1902  system.ads<libgnat/system-rtems.ads \
1903  a-intnam.ads<libgnarl/a-intnam__rtems.ads \
1904  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
1905  s-intman.adb<libgnarl/s-intman__posix.adb \
1906  s-osinte.adb<libgnarl/s-osinte__rtems.adb \
1907  s-osinte.ads<libgnarl/s-osinte__rtems.ads \
1908  s-osprim.adb<libgnat/s-osprim__rtems.adb \
1909  s-parame.adb<libgnat/s-parame__rtems.adb \
1910  s-taprop.adb<libgnarl/s-taprop__posix.adb \
1911  s-taspri.ads<libgnarl/s-taspri__posix.ads \
1912  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
1913  s-stchop.adb<libgnat/s-stchop__rtems.adb \
1914  s-interr.adb<libgnarl/s-interr__hwint.adb
1915  ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
1916    EH_MECHANISM=-arm
1917  else
1918    EH_MECHANISM=-gcc
1919  endif
1920endif
1921
1922# PikeOS
1923ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
1924  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1925endif
1926
1927# *-elf, *-eabi, or *-eabispe
1928ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
1929  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
1930endif
1931
1932ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
1933  GNATRTL_SOCKETS_OBJS =
1934
1935  LIBGNAT_TARGET_PAIRS = \
1936	a-intnam.ads<libgnarl/a-intnam__dummy.ads \
1937	s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1938	s-intman.adb<libgnarl/s-intman__dummy.adb \
1939	s-osinte.ads<libgnarl/s-osinte__dummy.ads \
1940	s-osprim.adb<libgnat/s-osprim__unix.adb \
1941	s-taprop.adb<libgnarl/s-taprop__dummy.adb \
1942	s-taspri.ads<libgnarl/s-taspri__dummy.ads \
1943	system.ads<libgnat/system-djgpp.ads \
1944	$(DUMMY_SOCKETS_TARGET_PAIRS)
1945
1946  EH_MECHANISM=-gcc
1947endif
1948
1949# Cygwin/Mingw32
1950ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),)
1951  # Cygwin provides a full Posix environment, and so we use the default
1952  # versions g-socthi rather than the Windows-specific MinGW version.
1953  # Ideally we would use all the default versions for Cygwin and none
1954  # of the MinGW versions, but for historical reasons the Cygwin port
1955  # has always been a CygMing frankenhybrid and it is a long-term project
1956  # to disentangle them.
1957  ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
1958    LIBGNAT_TARGET_PAIRS = \
1959    g-socthi.ads<libgnat/g-socthi.ads \
1960    g-socthi.adb<libgnat/g-socthi.adb
1961  else
1962    LIBGNAT_TARGET_PAIRS = \
1963    g-socthi.ads<libgnat/g-socthi__mingw.ads \
1964    g-socthi.adb<libgnat/g-socthi__mingw.adb
1965  endif
1966  LIBGNAT_TARGET_PAIRS += \
1967  a-dirval.adb<libgnat/a-dirval__mingw.adb \
1968  a-excpol.adb<libgnat/a-excpol__abort.adb \
1969  s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
1970  s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
1971  s-taspri.ads<libgnarl/s-taspri__mingw.ads \
1972  s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
1973  s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
1974  g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
1975  g-soliop.ads<libgnat/g-soliop__mingw.ads \
1976  $(ATOMICS_TARGET_PAIRS) \
1977  system.ads<libgnat/system-mingw.ads
1978
1979  LIBGNAT_TARGET_PAIRS += \
1980  a-exetim.adb<libgnarl/a-exetim__mingw.adb \
1981  a-exetim.ads<libgnarl/a-exetim__mingw.ads \
1982  a-intnam.ads<libgnarl/a-intnam__mingw.ads \
1983  g-sercom.adb<libgnat/g-sercom__mingw.adb \
1984  $(TRASYM_DWARF_MINGW_PAIRS) \
1985  s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
1986  s-interr.adb<libgnarl/s-interr__sigaction.adb \
1987  s-intman.adb<libgnarl/s-intman__mingw.adb \
1988  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
1989  s-osinte.ads<libgnarl/s-osinte__mingw.ads \
1990  s-osprim.adb<libgnat/s-osprim__mingw.adb \
1991  s-taprop.adb<libgnarl/s-taprop__mingw.adb
1992
1993  ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
1994    ifeq ($(strip $(MULTISUBDIR)),/32)
1995      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
1996      SO_OPTS= -m32 -Wl,-soname,
1997    else
1998      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
1999      SO_OPTS = -m64 -Wl,-soname,
2000    endif
2001  else
2002    ifeq ($(strip $(MULTISUBDIR)),/64)
2003      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2004      SO_OPTS = -m64 -Wl,-soname,
2005    else
2006      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2007      SO_OPTS = -m32 -Wl,-soname,
2008    endif
2009  endif
2010
2011  EXTRA_GNATRTL_NONTASKING_OBJS += \
2012    s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
2013  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
2014  EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
2015  EXTRA_LIBGNAT_SRCS+=mingw32.h
2016  MISCLIB = -lws2_32
2017
2018  # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
2019  # auto-import support for array/record will be done.
2020  GNATLIB_SHARED = gnatlib-shared-win32
2021
2022  EH_MECHANISM=-gcc
2023
2024  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
2025
2026  GMEM_LIB = gmemlib
2027  EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
2028  EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
2029  soext = .dll
2030  LIBRARY_VERSION := $(LIB_VERSION)
2031endif
2032
2033# Mips Linux
2034ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
2035  LIBGNAT_TARGET_PAIRS = \
2036  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2037  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2038  s-intman.adb<libgnarl/s-intman__posix.adb \
2039  s-linux.ads<libgnarl/s-linux__mips.ads \
2040  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2041  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2042  s-osprim.adb<libgnat/s-osprim__posix.adb \
2043  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2044  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2045  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2046  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2047  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2048  g-sercom.adb<libgnat/g-sercom__linux.adb \
2049  system.ads<libgnat/system-linux-mips.ads
2050
2051  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2052
2053  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2054  EH_MECHANISM=-gcc
2055  THREADSLIB = -lpthread
2056  GNATLIB_SHARED = gnatlib-shared-dual
2057  GMEM_LIB = gmemlib
2058  LIBRARY_VERSION := $(LIB_VERSION)
2059endif
2060
2061# PowerPC and e500v2 Linux
2062ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
2063  LIBGNAT_TARGET_PAIRS_COMMON = \
2064  a-exetim.adb<libgnarl/a-exetim__posix.adb \
2065  a-exetim.ads<libgnarl/a-exetim__default.ads \
2066  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2067  a-synbar.adb<libgnarl/a-synbar__posix.adb \
2068  a-synbar.ads<libgnarl/a-synbar__posix.ads \
2069  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2070  s-intman.adb<libgnarl/s-intman__posix.adb \
2071  s-linux.ads<libgnarl/s-linux.ads \
2072  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2073  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2074  g-sercom.adb<libgnat/g-sercom__linux.adb \
2075  $(TRASYM_DWARF_UNIX_PAIRS) \
2076  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2077  $(ATOMICS_TARGET_PAIRS) \
2078  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2079  system.ads<libgnat/system-linux-ppc.ads
2080
2081  LIBGNAT_TARGET_PAIRS = \
2082    $(LIBGNAT_TARGET_PAIRS_COMMON) \
2083    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2084    s-osinte.ads<libgnarl/s-osinte__linux.ads \
2085    s-osprim.adb<libgnat/s-osprim__posix.adb \
2086    s-taprop.adb<libgnarl/s-taprop__linux.adb \
2087    s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2088    s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2089    s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads
2090
2091  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2092
2093  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2094  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2095
2096  EH_MECHANISM=-gcc
2097  THREADSLIB = -lpthread -lrt
2098  GNATLIB_SHARED = gnatlib-shared-dual
2099  MISCLIB = -ldl
2100  GMEM_LIB = gmemlib
2101  LIBRARY_VERSION := $(LIB_VERSION)
2102endif
2103
2104# ARM linux, GNU eabi
2105ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
2106  LIBGNAT_TARGET_PAIRS = \
2107  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2108  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2109  s-intman.adb<libgnarl/s-intman__posix.adb \
2110  s-linux.ads<libgnarl/s-linux.ads \
2111  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2112  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2113  s-osprim.adb<libgnat/s-osprim__posix.adb \
2114  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2115  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2116  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2117  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2118  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2119  $(ATOMICS_TARGET_PAIRS) \
2120  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2121  system.ads<libgnat/system-linux-arm.ads
2122
2123  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2124
2125  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2126  EH_MECHANISM=-arm
2127  THREADSLIB = -lpthread
2128  GNATLIB_SHARED = gnatlib-shared-dual
2129  GMEM_LIB = gmemlib
2130  LIBRARY_VERSION := $(LIB_VERSION)
2131endif
2132
2133# AArch64 Linux
2134ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
2135  LIBGNAT_TARGET_PAIRS = \
2136  a-exetim.adb<libgnarl/a-exetim__posix.adb \
2137  a-exetim.ads<libgnarl/a-exetim__default.ads \
2138  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2139  a-synbar.adb<libgnarl/a-synbar__posix.adb \
2140  a-synbar.ads<libgnarl/a-synbar__posix.ads \
2141  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2142  s-intman.adb<libgnarl/s-intman__posix.adb \
2143  s-linux.ads<libgnarl/s-linux.ads \
2144  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2145  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2146  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2147  s-osprim.adb<libgnat/s-osprim__posix.adb \
2148  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2149  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2150  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2151  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2152  s-taspri.ads<libgnarl/s-taspri__posix.ads \
2153  g-sercom.adb<libgnat/g-sercom__linux.adb \
2154  $(ATOMICS_TARGET_PAIRS) \
2155  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2156  system.ads<libgnat/system-linux-arm.ads
2157
2158  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2159
2160  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2161  EH_MECHANISM=-gcc
2162  THREADSLIB=-lpthread -lrt
2163  GNATLIB_SHARED=gnatlib-shared-dual
2164  GMEM_LIB = gmemlib
2165  LIBRARY_VERSION := $(LIB_VERSION)
2166endif
2167
2168# Sparc Linux
2169ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
2170  LIBGNAT_TARGET_PAIRS = \
2171  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2172  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2173  s-intman.adb<libgnarl/s-intman__posix.adb \
2174  s-linux.ads<libgnarl/s-linux__sparc.ads \
2175  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2176  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2177  s-osprim.adb<libgnat/s-osprim__posix.adb \
2178  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2179  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2180  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2181  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2182  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2183  system.ads<libgnat/system-linux-sparc.ads
2184
2185  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2186
2187  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2188  EH_MECHANISM=-gcc
2189  THREADSLIB = -lpthread
2190  GNATLIB_SHARED = gnatlib-shared-dual
2191  GMEM_LIB = gmemlib
2192  LIBRARY_VERSION := $(LIB_VERSION)
2193endif
2194
2195# HP/PA Linux
2196ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
2197  LIBGNAT_TARGET_PAIRS = \
2198  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2199  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2200  s-intman.adb<libgnarl/s-intman__posix.adb \
2201  s-linux.ads<libgnarl/s-linux__hppa.ads \
2202  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2203  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2204  s-osprim.adb<libgnat/s-osprim__posix.adb \
2205  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2206  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2207  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2208  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2209  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2210  system.ads<libgnat/system-linux-hppa.ads
2211
2212  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2213
2214  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2215  EH_MECHANISM=-gcc
2216  THREADSLIB = -lpthread
2217  GNATLIB_SHARED = gnatlib-shared-dual
2218  GMEM_LIB = gmemlib
2219  LIBRARY_VERSION := $(LIB_VERSION)
2220endif
2221
2222# M68K Linux
2223ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
2224  LIBGNAT_TARGET_PAIRS = \
2225  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2226  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2227  s-intman.adb<libgnarl/s-intman__posix.adb \
2228  s-linux.ads<libgnarl/s-linux.ads \
2229  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2230  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2231  s-osprim.adb<libgnat/s-osprim__posix.adb \
2232  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2233  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2234  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2235  s-taspri.ads<libgnarl/s-taspri__posix.ads \
2236  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2237  system.ads<libgnat/system-linux-m68k.ads
2238
2239  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2240
2241  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2242  EH_MECHANISM=-gcc
2243  THREADSLIB = -lpthread
2244  GNATLIB_SHARED = gnatlib-shared-dual
2245  GMEM_LIB = gmemlib
2246  LIBRARY_VERSION := $(LIB_VERSION)
2247endif
2248
2249# SH4 Linux
2250ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
2251  LIBGNAT_TARGET_PAIRS = \
2252  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2253  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2254  s-intman.adb<libgnarl/s-intman__posix.adb \
2255  s-linux.ads<libgnarl/s-linux.ads \
2256  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2257  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2258  s-osprim.adb<libgnat/s-osprim__posix.adb \
2259  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2260  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2261  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2262  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2263  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2264  system.ads<libgnat/system-linux-sh4.ads
2265
2266  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb
2267
2268  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2269  EH_MECHANISM=-gcc
2270  MISCLIB=
2271  THREADSLIB = -lpthread
2272  GNATLIB_SHARED = gnatlib-shared-dual
2273  GMEM_LIB = gmemlib
2274  LIBRARY_VERSION := $(LIB_VERSION)
2275endif
2276
2277# IA64 Linux
2278ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
2279  LIBGNAT_TARGET_PAIRS = \
2280  a-exetim.adb<libgnarl/a-exetim__posix.adb \
2281  a-exetim.ads<libgnarl/a-exetim__default.ads \
2282  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2283  a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
2284  a-synbar.adb<libgnarl/a-synbar__posix.adb \
2285  a-synbar.ads<libgnarl/a-synbar__posix.ads \
2286  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2287  s-intman.adb<libgnarl/s-intman__posix.adb \
2288  s-linux.ads<libgnarl/s-linux.ads \
2289  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2290  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2291  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2292  s-osprim.adb<libgnat/s-osprim__posix.adb \
2293  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2294  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2295  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2296  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2297  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2298  g-sercom.adb<libgnat/g-sercom__linux.adb \
2299  $(TRASYM_DWARF_UNIX_PAIRS) \
2300  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2301  $(ATOMICS_TARGET_PAIRS) \
2302  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2303  system.ads<libgnat/system-linux-ia64.ads
2304
2305  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2306
2307  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2308  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2309  EH_MECHANISM=-gcc
2310  THREADSLIB=-lpthread -lrt
2311  GNATLIB_SHARED=gnatlib-shared-dual
2312  MISCLIB = -ldl
2313  GMEM_LIB = gmemlib
2314  LIBRARY_VERSION := $(LIB_VERSION)
2315endif
2316
2317# IA64 HP-UX
2318ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
2319  LIBGNAT_TARGET_PAIRS = \
2320  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
2321  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2322  s-intman.adb<libgnarl/s-intman__posix.adb \
2323  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2324  s-osinte.ads<libgnarl/s-osinte__hpux.ads \
2325  s-osprim.adb<libgnat/s-osprim__posix.adb \
2326  s-taprop.adb<libgnarl/s-taprop__posix.adb \
2327  s-taspri.ads<libgnarl/s-taspri__posix.ads \
2328  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2329  $(TRASYM_DWARF_UNIX_PAIRS) \
2330  $(ATOMICS_TARGET_PAIRS) \
2331  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2332  system.ads<libgnat/system-hpux-ia64.ads
2333
2334  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2335
2336  MISCLIB=
2337  EH_MECHANISM=-gcc
2338  THREADSLIB=-lpthread
2339  GNATLIB_SHARED=gnatlib-shared-dual
2340  GMEM_LIB = gmemlib
2341  soext = .so
2342  SO_OPTS = -Wl,+h,
2343  LIBRARY_VERSION := $(LIB_VERSION)
2344endif
2345
2346# Alpha Linux
2347ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
2348  LIBGNAT_TARGET_PAIRS = \
2349  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2350  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2351  s-intman.adb<libgnarl/s-intman__posix.adb \
2352  s-linux.ads<libgnarl/s-linux__alpha.ads \
2353  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2354  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2355  s-osprim.adb<libgnat/s-osprim__posix.adb \
2356  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2357  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2358  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2359  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2360  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2361  $(ATOMICS_TARGET_PAIRS) \
2362  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2363  system.ads<libgnat/system-linux-alpha.ads
2364
2365  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2366
2367  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2368  EH_MECHANISM=-gcc
2369  MISCLIB=
2370  THREADSLIB=-lpthread
2371  GNATLIB_SHARED=gnatlib-shared-dual
2372  LIBRARY_VERSION := $(LIB_VERSION)
2373endif
2374
2375# x86-64 Linux
2376ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
2377  LIBGNAT_TARGET_PAIRS = \
2378  a-exetim.adb<libgnarl/a-exetim__posix.adb \
2379  a-exetim.ads<libgnarl/a-exetim__default.ads \
2380  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2381  a-synbar.adb<libgnarl/a-synbar__posix.adb \
2382  a-synbar.ads<libgnarl/a-synbar__posix.ads \
2383  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2384  s-intman.adb<libgnarl/s-intman__posix.adb \
2385  s-linux.ads<libgnarl/s-linux.ads \
2386  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2387  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2388  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2389  s-osprim.adb<libgnat/s-osprim__posix.adb \
2390  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2391  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2392  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2393  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2394  s-taspri.ads<libgnarl/s-taspri__posix.ads \
2395  g-sercom.adb<libgnat/g-sercom__linux.adb \
2396  $(TRASYM_DWARF_UNIX_PAIRS) \
2397  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
2398  $(ATOMICS_TARGET_PAIRS) \
2399  $(X86_64_TARGET_PAIRS) \
2400  system.ads<libgnat/system-linux-x86.ads
2401
2402  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2403
2404  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
2405  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
2406  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2407
2408  EH_MECHANISM=-gcc
2409  THREADSLIB=-lpthread -lrt
2410  MISCLIB = -ldl
2411  GNATLIB_SHARED=gnatlib-shared-dual
2412  GMEM_LIB = gmemlib
2413  LIBRARY_VERSION := $(LIB_VERSION)
2414
2415  GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
2416endif
2417
2418ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
2419  LIBGNAT_TARGET_PAIRS = \
2420  a-exetim.adb<libgnarl/a-exetim__posix.adb \
2421  a-exetim.ads<libgnarl/a-exetim__default.ads \
2422  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2423  a-synbar.adb<libgnarl/a-synbar__posix.adb \
2424  a-synbar.ads<libgnarl/a-synbar__posix.ads \
2425  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2426  s-intman.adb<libgnarl/s-intman__posix.adb \
2427  s-linux.ads<libgnarl/s-linux__x32.ads \
2428  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
2429  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2430  s-osinte.adb<libgnarl/s-osinte__x32.adb \
2431  s-osprim.adb<libgnat/s-osprim__x32.adb \
2432  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2433  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2434  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2435  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
2436  s-taspri.ads<libgnarl/s-taspri__posix.ads \
2437  g-sercom.adb<libgnat/g-sercom__linux.adb \
2438  $(ATOMICS_TARGET_PAIRS) \
2439  $(X86_64_TARGET_PAIRS) \
2440  system.ads<libgnat/system-linux-x86.ads
2441
2442  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2443
2444  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2445  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
2446  EH_MECHANISM=-gcc
2447  THREADSLIB=-lpthread -lrt
2448  GNATLIB_SHARED=gnatlib-shared-dual
2449  GMEM_LIB = gmemlib
2450  LIBRARY_VERSION := $(LIB_VERSION)
2451endif
2452
2453# RISC-V Linux
2454ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
2455  LIBGNAT_TARGET_PAIRS = \
2456  a-intnam.ads<libgnarl/a-intnam__linux.ads \
2457  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2458  s-intman.adb<libgnarl/s-intman__posix.adb \
2459  s-linux.ads<libgnarl/s-linux__riscv.ads \
2460  s-osinte.adb<libgnarl/s-osinte__posix.adb \
2461  s-osinte.ads<libgnarl/s-osinte__linux.ads \
2462  s-osprim.adb<libgnat/s-osprim__posix.adb \
2463  s-taprop.adb<libgnarl/s-taprop__linux.adb \
2464  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
2465  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
2466  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
2467  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
2468  g-sercom.adb<libgnat/g-sercom__linux.adb \
2469  system.ads<libgnat/system-linux-riscv.ads
2470
2471  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
2472
2473  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
2474  EH_MECHANISM=-gcc
2475  THREADSLIB = -lpthread
2476  GNATLIB_SHARED = gnatlib-shared-dual
2477  GMEM_LIB = gmemlib
2478  LIBRARY_VERSION := $(LIB_VERSION)
2479endif
2480
2481# Darwin (Mac OS X)
2482ifeq ($(strip $(filter-out darwin%,$(target_os))),)
2483  SO_OPTS = -shared-libgcc
2484  LIBGNAT_TARGET_PAIRS = \
2485    a-intnam.ads<libgnarl/a-intnam__darwin.ads \
2486    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
2487    s-osinte.adb<libgnarl/s-osinte__darwin.adb \
2488    s-osinte.ads<libgnarl/s-osinte__darwin.ads \
2489    s-taprop.adb<libgnarl/s-taprop__posix.adb \
2490    s-taspri.ads<libgnarl/s-taspri__posix.ads \
2491    g-sercom.adb<libgnat/g-sercom__linux.adb \
2492    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb
2493
2494  ifeq ($(strip $(filter-out %86,$(target_cpu))),)
2495    LIBGNAT_TARGET_PAIRS += \
2496      s-intman.adb<libgnarl/s-intman__susv3.adb \
2497      s-osprim.adb<libgnat/s-osprim__darwin.adb \
2498      $(ATOMICS_TARGET_PAIRS) \
2499      system.ads<libgnat/system-darwin-x86.ads
2500
2501    ifeq ($(strip $(MULTISUBDIR)),/x86_64)
2502      SO_OPTS += -m64
2503      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2504    else
2505      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2506    endif
2507
2508    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2509  endif
2510
2511  ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
2512    LIBGNAT_TARGET_PAIRS += \
2513      s-intman.adb<libgnarl/s-intman__susv3.adb \
2514      s-osprim.adb<libgnat/s-osprim__darwin.adb \
2515      a-exetim.ads<libgnarl/a-exetim__default.ads \
2516      a-exetim.adb<libgnarl/a-exetim__darwin.adb \
2517      $(ATOMICS_TARGET_PAIRS) \
2518      system.ads<libgnat/system-darwin-x86.ads
2519
2520    ifeq ($(strip $(MULTISUBDIR)),/i386)
2521      SO_OPTS += -m32
2522      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
2523    else
2524      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
2525    endif
2526
2527    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
2528    EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
2529  endif
2530
2531  ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
2532    LIBGNAT_TARGET_PAIRS += \
2533      s-intman.adb<libgnarl/s-intman__posix.adb \
2534      s-osprim.adb<libgnat/s-osprim__posix.adb \
2535      a-numaux.ads<libgnat/a-numaux__darwin.ads \
2536      a-numaux.adb<libgnat/a-numaux__darwin.adb \
2537      $(ATOMICS_TARGET_PAIRS) \
2538      $(ATOMICS_BUILTINS_TARGET_PAIRS) \
2539      system.ads<libgnat/system-darwin-ppc.ads
2540
2541    ifeq ($(strip $(MULTISUBDIR)),/ppc64)
2542        SO_OPTS += -m64
2543    endif
2544  endif
2545
2546  ifeq ($(strip $(filter-out arm,$(target_cpu))),)
2547    LIBGNAT_TARGET_PAIRS += \
2548      s-intman.adb<libgnarl/s-intman__susv3.adb \
2549      s-osprim.adb<libgnat/s-osprim__darwin.adb \
2550      $(ATOMICS_TARGET_PAIRS) \
2551      $(ATOMICS_BUILTINS_TARGET_PAIRS)
2552
2553    LIBGNAT_TARGET_PAIRS += \
2554      system.ads<libgnat/system-darwin-arm.ads
2555  endif
2556
2557  ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
2558    LIBGNAT_TARGET_PAIRS += \
2559      s-intman.adb<libgnarl/s-intman__susv3.adb \
2560      s-osprim.adb<libgnat/s-osprim__darwin.adb \
2561      $(ATOMICS_TARGET_PAIRS) \
2562      $(ATOMICS_BUILTINS_TARGET_PAIRS)
2563
2564    EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
2565    EXTRA_LIBGNAT_SRCS+=sigtramp.h
2566    LIBGNAT_TARGET_PAIRS += \
2567      system.ads<libgnat/system-darwin-arm.ads
2568  endif
2569
2570  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb
2571
2572  EH_MECHANISM=-gcc
2573  GNATLIB_SHARED = gnatlib-shared-darwin
2574  GMEM_LIB = gmemlib
2575  LIBRARY_VERSION := $(LIB_VERSION)
2576  soext = .dylib
2577  GCC_LINK_FLAGS=-static-libstdc++
2578endif
2579
2580ifeq ($(EH_MECHANISM),-gcc)
2581  LIBGNAT_TARGET_PAIRS += \
2582    s-excmac.ads<libgnat/s-excmac__gcc.ads \
2583    s-excmac.adb<libgnat/s-excmac__gcc.adb
2584  EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2585  EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2586endif
2587
2588ifeq ($(EH_MECHANISM),-arm)
2589  LIBGNAT_TARGET_PAIRS += \
2590    s-excmac.ads<libgnat/s-excmac__arm.ads \
2591    s-excmac.adb<libgnat/s-excmac__arm.adb
2592  EXTRA_LIBGNAT_OBJS+=raise-gcc.o
2593  EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
2594endif
2595
2596# LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
2597# library.  LIBGNAT_OBJS is the list of object files for libgnat.
2598# thread.c is special as put into GNATRTL_TASKING_OBJS
2599LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o 			\
2600  cal.o cio.o cstreams.o ctrl_c.o					\
2601  env.o errno.o exit.o expect.o final.o rtfinal.o rtinit.o		\
2602  init.o initialize.o locales.o mkdir.o					\
2603  raise.o seh_init.o socket.o sysdep.o					\
2604  targext.o terminals.o tracebak.o 					\
2605  $(EXTRA_LIBGNAT_OBJS)
2606
2607# NOTE ??? - when the -I option for compiling Ada code is made to work,
2608#  the library installation will change and there will be a
2609#  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
2610#  from ADA_INCLUDE_SRCS.
2611
2612LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
2613  adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
2614  tb-gcc.c libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
2615
2616# memtrack.o is special as not put into libgnat.
2617GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
2618  memtrack.o
2619
2620# Run time source files
2621# Note that libgnat contains a significant number of files. In orde to avoid
2622# command line length limitations the source regexp has been split for that
2623# directory.
2624ADA_INCLUDE_SRCS =\
2625 libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
2626 libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
2627 libgnat/sequenio.ads libgnat/system.ads Makefile.adalib libgnat/memtrack.adb \
2628 libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
2629 libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
2630 libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
2631 libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
2632 libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
2633 libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
2634 libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
2635 libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
2636 libgnarl/[agis]-[a-z]*.ad[sb]
2637
2638
2639# Files that are in ADA_INCLUDE_SRCS but not in all configurations.
2640# They will be removed from the run time if not used.
2641ADA_EXCLUDE_SRCS =\
2642  g-allein.ads g-alleve.adb g-alleve.ads g-altcon.adb g-altcon.ads \
2643  g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
2644  g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
2645  i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
2646  s-bb.ads     s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb \
2647  s-bbexti.ads s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads \
2648  s-bbsle3.ads s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads \
2649  s-bbthre.adb s-bbthre.ads s-bbtiev.adb s-bbtiev.ads s-bbtime.adb \
2650  s-bbtime.ads s-bcprmu.adb s-bcprmu.ads s-btstch.adb s-btstch.ads \
2651  s-gcc.adb    s-gcc.ads    s-gccdiv.adb s-gccdiv.ads \
2652  s-gccshi.adb s-gccshi.ads \
2653  s-init.ads   s-init.adb   s-linux.ads  s-macres.ads \
2654  s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
2655  s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
2656  s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
2657  s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb s-stm32.ads \
2658  s-strcom.adb s-strcom.ads s-thread.ads \
2659  s-vxwext.adb s-vxwext.ads \
2660  s-win32.ads  s-winext.ads
2661
2662# ADA_EXCLUDE_SRCS without the sources used by the target
2663ADA_EXCLUDE_FILES=$(filter-out \
2664  $(patsubst %$(objext),%.ads,$(GNATRTL_OBJS)) \
2665  $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
2666  $(ADA_EXCLUDE_SRCS))
2667
2668setup-rts: force
2669	$(RMDIR) $(RTSDIR)
2670	$(MKDIR) $(RTSDIR)
2671	$(CHMOD) u+w $(RTSDIR)
2672# Copy target independent sources
2673	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
2674	  $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
2675# Remove files not used
2676	$(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
2677# Remove files to be replaced by target dependent sources
2678	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2679	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
2680	for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
2681	  case "$$f" in \
2682	    $(RTSDIR)/s-stratt__*) ;; \
2683	    *) $(RM) $$f ;; \
2684	  esac; \
2685	done
2686# Copy new target dependent sources
2687	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
2688	          $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
2689	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
2690
2691# Special flags
2692
2693# force no sibling call optimization on s-traceb.o so the number of stack
2694# frames to be skipped when computing a call chain is not modified by
2695# optimization. We don't want inlining, either.
2696
2697s-traceb.o  : s-traceb.adb s-traceb.ads
2698	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2699	  $(NO_INLINE_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) $< \
2700	  $(OUTPUT_OPTION)
2701
2702# compile s-tasdeb.o without optimization and with debug info so that it is
2703# always possible to set conditional breakpoints on tasks.
2704
2705s-tasdeb.o  : s-tasdeb.adb s-tasdeb.ads
2706	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
2707	  $< $(OUTPUT_OPTION)
2708
2709# force no function reordering on a-except.o because of the exclusion bounds
2710# mechanism (see the source file for more detailed information).
2711# force debugging information on a-except.o so that it is always
2712# possible to set conditional breakpoints on exceptions.
2713# use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.
2714
2715a-except.o  : a-except.adb a-except.ads
2716	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
2717	  $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) -O1 $(ADA_INCLUDES) \
2718	  $< $(OUTPUT_OPTION)
2719
2720# compile s-excdeb.o without optimization and with debug info to let the
2721# debugger set breakpoints and inspect subprogram parameters on exception
2722# related events.
2723
2724s-excdeb.o  : s-excdeb.adb s-excdeb.ads s-except.ads
2725	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
2726	  $(ADA_INCLUDES) $< $(OUTPUT_OPTION)
2727
2728# force debugging information on s-assert.o so that it is always
2729# possible to set breakpoint on assert failures.
2730
2731s-assert.o  : s-assert.adb s-assert.ads
2732	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2733	  $< $(OUTPUT_OPTION)
2734
2735# force debugging information on a-tags.o so that the debugger can find
2736# the description of Ada.Tags.Type_Specific_Data.
2737
2738a-tags.o  : a-tags.adb a-tags.ads
2739	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
2740	  $< $(OUTPUT_OPTION)
2741
2742# force no sibling call optimization on s-memory.o to avoid turning the
2743# tail recursion in Alloc into a loop that confuses branch prediction.
2744
2745s-memory.o  : s-memory.adb s-memory.ads
2746	$(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
2747	  $< $(OUTPUT_OPTION)
2748