# Makefile.rtl for GNU Ada Compiler (GNAT).
#   Copyright (C) 2003-2017, Free Software Foundation, Inc.

#This file is part of GCC.

#GCC is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 3, or (at your option)
#any later version.

#GCC is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with GCC; see the file COPYING3.  If not see
#<http://www.gnu.org/licenses/>.

# This makefile fragment is included in the ada Makefile.

# Its purpose is to allow the separate maintenance of the list of
# GNATRTL objects and target pairs, which frequently changes.

ifndef ADAC
ADAC=$(CC)
endif

# Objects needed only for tasking
GNATRTL_TASKING_OBJS= \
  a-dispat$(objext) \
  a-dynpri$(objext) \
  a-interr$(objext) \
  a-intnam$(objext) \
  a-reatim$(objext) \
  a-retide$(objext) \
  a-rttiev$(objext) \
  a-synbar$(objext) \
  a-sytaco$(objext) \
  a-tasatt$(objext) \
  a-taside$(objext) \
  a-taster$(objext) \
  g-boubuf$(objext) \
  g-boumai$(objext) \
  g-semaph$(objext) \
  g-signal$(objext) \
  g-tastus$(objext) \
  g-thread$(objext) \
  s-inmaop$(objext) \
  s-interr$(objext) \
  s-intman$(objext) \
  s-mudido$(objext) \
  s-osinte$(objext) \
  s-proinf$(objext) \
  s-solita$(objext) \
  s-stusta$(objext) \
  s-taenca$(objext) \
  s-taprob$(objext) \
  s-taprop$(objext) \
  s-tarest$(objext) \
  s-tasdeb$(objext) \
  s-tasinf$(objext) \
  s-tasini$(objext) \
  s-taskin$(objext) \
  s-taspri$(objext) \
  s-tasque$(objext) \
  s-tasres$(objext) \
  s-tasren$(objext) \
  s-tassta$(objext) \
  s-tasuti$(objext) \
  s-taasde$(objext) \
  s-tadeca$(objext) \
  s-tadert$(objext) \
  s-tataat$(objext) \
  s-tpinop$(objext) \
  s-tpoben$(objext) \
  s-tpobop$(objext) \
  s-tposen$(objext) \
  thread$(objext) \
  $(EXTRA_GNATRTL_TASKING_OBJS)

# Objects the require IEEE Float
GNATRTL_ALTIVEC_OBJS= \
  g-allein$(objext) \
  g-alleve$(objext) \
  g-altcon$(objext) \
  g-altive$(objext) \
  g-alveop$(objext) \
  g-alvety$(objext) \
  g-alvevi$(objext)

# Objects needed for non-tasking.
GNATRTL_NONTASKING_OBJS= \
  a-assert$(objext) \
  a-btgbso$(objext) \
  a-calari$(objext) \
  a-calcon$(objext) \
  a-caldel$(objext) \
  a-calend$(objext) \
  a-calfor$(objext) \
  a-catizo$(objext) \
  a-cbdlli$(objext) \
  a-cbhama$(objext) \
  a-cbhase$(objext) \
  a-cbmutr$(objext) \
  a-cborma$(objext) \
  a-cborse$(objext) \
  a-cbprqu$(objext) \
  a-cbsyqu$(objext) \
  a-cdlili$(objext) \
  a-cfdlli$(objext) \
  a-cfhama$(objext) \
  a-cfhase$(objext) \
  a-cfinve$(objext) \
  a-cforma$(objext) \
  a-cforse$(objext) \
  a-cgaaso$(objext) \
  a-cgarso$(objext) \
  a-cgcaso$(objext) \
  a-chacon$(objext) \
  a-chahan$(objext) \
  a-charac$(objext) \
  a-chlat1$(objext) \
  a-chlat9$(objext) \
  a-chtgbk$(objext) \
  a-chtgbo$(objext) \
  a-chtgke$(objext) \
  a-chtgop$(objext) \
  a-chzla1$(objext) \
  a-chzla9$(objext) \
  a-cidlli$(objext) \
  a-cihama$(objext) \
  a-cihase$(objext) \
  a-cimutr$(objext) \
  a-ciorma$(objext) \
  a-ciormu$(objext) \
  a-ciorse$(objext) \
  a-clrefi$(objext) \
  a-coboho$(objext) \
  a-cobove$(objext) \
  a-cofove$(objext) \
  a-cofuba$(objext) \
  a-cofuma$(objext) \
  a-cofuse$(objext) \
  a-cofuve$(objext) \
  a-cogeso$(objext) \
  a-cohama$(objext) \
  a-cohase$(objext) \
  a-cohata$(objext) \
  a-coinho$(objext) \
  a-coinve$(objext) \
  a-colien$(objext) \
  a-colire$(objext) \
  a-comlin$(objext) \
  a-comutr$(objext) \
  a-conhel$(objext) \
  a-contai$(objext) \
  a-convec$(objext) \
  a-coorma$(objext) \
  a-coormu$(objext) \
  a-coorse$(objext) \
  a-coprnu$(objext) \
  a-coteio$(objext) \
  a-crbltr$(objext) \
  a-crbtgk$(objext) \
  a-crbtgo$(objext) \
  a-crdlli$(objext) \
  a-csquin$(objext) \
  a-cuprqu$(objext) \
  a-cusyqu$(objext) \
  a-cwila1$(objext) \
  a-cwila9$(objext) \
  a-decima$(objext) \
  a-dhfina$(objext) \
  a-diocst$(objext) \
  a-direct$(objext) \
  a-direio$(objext) \
  a-dirval$(objext) \
  a-einuoc$(objext) \
  a-elchha$(objext) \
  a-envvar$(objext) \
  a-except$(objext) \
  a-exctra$(objext) \
  a-finali$(objext) \
  a-flteio$(objext) \
  a-fwteio$(objext) \
  a-fzteio$(objext) \
  a-inteio$(objext) \
  a-ioexce$(objext) \
  a-iteint$(objext) \
  a-iwteio$(objext) \
  a-izteio$(objext) \
  a-lcteio$(objext) \
  a-lfteio$(objext) \
  a-lfwtio$(objext) \
  a-lfztio$(objext) \
  a-liteio$(objext) \
  a-liwtio$(objext) \
  a-liztio$(objext) \
  a-llctio$(objext) \
  a-llftio$(objext) \
  a-llfwti$(objext) \
  a-llfzti$(objext) \
  a-llitio$(objext) \
  a-lliwti$(objext) \
  a-llizti$(objext) \
  a-locale$(objext) \
  a-nbnbin$(objext) \
  a-nbnbre$(objext) \
  a-ncelfu$(objext) \
  a-ngcefu$(objext) \
  a-ngcoar$(objext) \
  a-ngcoty$(objext) \
  a-ngelfu$(objext) \
  a-ngrear$(objext) \
  a-nlcefu$(objext) \
  a-nlcoar$(objext) \
  a-nlcoty$(objext) \
  a-nlelfu$(objext) \
  a-nllcar$(objext) \
  a-nllcef$(objext) \
  a-nllcty$(objext) \
  a-nllefu$(objext) \
  a-nllrar$(objext) \
  a-nlrear$(objext) \
  a-nscefu$(objext) \
  a-nscoty$(objext) \
  a-nselfu$(objext) \
  a-nubinu$(objext) \
  a-nucoar$(objext) \
  a-nucoty$(objext) \
  a-nudira$(objext) \
  a-nuelfu$(objext) \
  a-nuflra$(objext) \
  a-numaux$(objext) \
  a-numeri$(objext) \
  a-nurear$(objext) \
  a-rbtgbk$(objext) \
  a-rbtgbo$(objext) \
  a-rbtgso$(objext) \
  a-sbecin$(objext) \
  a-sbhcin$(objext) \
  a-sblcin$(objext) \
  a-scteio$(objext) \
  a-secain$(objext) \
  a-sequio$(objext) \
  a-sfecin$(objext) \
  a-sfhcin$(objext) \
  a-sflcin$(objext) \
  a-sfteio$(objext) \
  a-sfwtio$(objext) \
  a-sfztio$(objext) \
  a-shcain$(objext) \
  a-siocst$(objext) \
  a-siteio$(objext) \
  a-siwtio$(objext) \
  a-siztio$(objext) \
  a-slcain$(objext) \
  a-ssicst$(objext) \
  a-ssitio$(objext) \
  a-ssiwti$(objext) \
  a-ssizti$(objext) \
  a-stboha$(objext) \
  a-stfiha$(objext) \
  a-stmaco$(objext) \
  a-storio$(objext) \
  a-strbou$(objext) \
  a-stream$(objext) \
  a-strfix$(objext) \
  a-strhas$(objext) \
  a-string$(objext) \
  a-strmap$(objext) \
  a-strsea$(objext) \
  a-strsup$(objext) \
  a-strunb$(objext) \
  a-ststio$(objext) \
  a-stunau$(objext) \
  a-stunha$(objext) \
  a-stuten$(objext) \
  a-stwibo$(objext) \
  a-stwifi$(objext) \
  a-stwiha$(objext) \
  a-stwima$(objext) \
  a-stwise$(objext) \
  a-stwisu$(objext) \
  a-stwiun$(objext) \
  a-stzbou$(objext) \
  a-stzfix$(objext) \
  a-stzhas$(objext) \
  a-stzmap$(objext) \
  a-stzsea$(objext) \
  a-stzsup$(objext) \
  a-stzunb$(objext) \
  a-suecin$(objext) \
  a-suenco$(objext) \
  a-suenst$(objext) \
  a-suewst$(objext) \
  a-suezst$(objext) \
  a-suhcin$(objext) \
  a-sulcin$(objext) \
  a-suteio$(objext) \
  a-swbwha$(objext) \
  a-swfwha$(objext) \
  a-swmwco$(objext) \
  a-swunau$(objext) \
  a-swuwha$(objext) \
  a-swuwti$(objext) \
  a-szbzha$(objext) \
  a-szfzha$(objext) \
  a-szmzco$(objext) \
  a-szunau$(objext) \
  a-szuzha$(objext) \
  a-szuzti$(objext) \
  a-tags$(objext) \
  a-teioed$(objext) \
  a-textio$(objext) \
  a-tgdico$(objext) \
  a-tiboio$(objext) \
  a-ticoau$(objext) \
  a-ticoio$(objext) \
  a-tideau$(objext) \
  a-tideio$(objext) \
  a-tienau$(objext) \
  a-tienio$(objext) \
  a-tifiio$(objext) \
  a-tiflau$(objext) \
  a-tiflio$(objext) \
  a-tigeau$(objext) \
  a-tiinau$(objext) \
  a-tiinio$(objext) \
  a-timoau$(objext) \
  a-timoio$(objext) \
  a-tiocst$(objext) \
  a-tirsfi$(objext) \
  a-titest$(objext) \
  a-tiunio$(objext) \
  a-unccon$(objext) \
  a-uncdea$(objext) \
  a-undesu$(objext) \
  a-wichha$(objext) \
  a-wichun$(objext) \
  a-widcha$(objext) \
  a-witeio$(objext) \
  a-wrstfi$(objext) \
  a-wtcoau$(objext) \
  a-wtcoio$(objext) \
  a-wtcstr$(objext) \
  a-wtdeau$(objext) \
  a-wtdeio$(objext) \
  a-wtedit$(objext) \
  a-wtenau$(objext) \
  a-wtenio$(objext) \
  a-wtfiio$(objext) \
  a-wtflau$(objext) \
  a-wtflio$(objext) \
  a-wtgeau$(objext) \
  a-wtinau$(objext) \
  a-wtinio$(objext) \
  a-wtmoau$(objext) \
  a-wtmoio$(objext) \
  a-wttest$(objext) \
  a-wwboio$(objext) \
  a-wwunio$(objext) \
  a-zchara$(objext) \
  a-zchhan$(objext) \
  a-zchuni$(objext) \
  a-zrstfi$(objext) \
  a-ztcoau$(objext) \
  a-ztcoio$(objext) \
  a-ztcstr$(objext) \
  a-ztdeau$(objext) \
  a-ztdeio$(objext) \
  a-ztedit$(objext) \
  a-ztenau$(objext) \
  a-ztenio$(objext) \
  a-ztexio$(objext) \
  a-ztfiio$(objext) \
  a-ztflau$(objext) \
  a-ztflio$(objext) \
  a-ztgeau$(objext) \
  a-ztinau$(objext) \
  a-ztinio$(objext) \
  a-ztmoau$(objext) \
  a-ztmoio$(objext) \
  a-zttest$(objext) \
  a-zzboio$(objext) \
  a-zzunio$(objext) \
  ada$(objext) \
  calendar$(objext) \
  directio$(objext) \
  g-arrspl$(objext) \
  g-awk$(objext) \
  g-binenv$(objext) \
  g-brapre$(objext) \
  g-bubsor$(objext) \
  g-busora$(objext) \
  g-busorg$(objext) \
  g-byorma$(objext) \
  g-bytswa$(objext) \
  g-calend$(objext) \
  g-casuti$(objext) \
  g-catiio$(objext) \
  g-cgi$(objext)    \
  g-cgicoo$(objext) \
  g-cgideb$(objext) \
  g-comlin$(objext) \
  g-comver$(objext) \
  g-crc32$(objext) \
  g-ctrl_c$(objext) \
  g-curexc$(objext) \
  g-debpoo$(objext) \
  g-debuti$(objext) \
  g-decstr$(objext) \
  g-deutst$(objext) \
  g-diopit$(objext) \
  g-dirope$(objext) \
  g-dynhta$(objext) \
  g-dyntab$(objext) \
  g-encstr$(objext) \
  g-enutst$(objext) \
  g-excact$(objext) \
  g-except$(objext) \
  g-exctra$(objext) \
  s-exctra$(objext) \
  g-expect$(objext) \
  g-exptty$(objext) \
  g-flocon$(objext) \
  g-forstr$(objext) \
  g-graphs$(objext) \
  g-heasor$(objext) \
  g-hesora$(objext) \
  g-hesorg$(objext) \
  g-htable$(objext) \
  g-io$(objext) \
  g-io_aux$(objext) \
  g-lists$(objext) \
  g-locfil$(objext) \
  g-mbdira$(objext) \
  g-mbflra$(objext) \
  g-md5$(objext) \
  g-memdum$(objext) \
  g-moreex$(objext) \
  g-os_lib$(objext) \
  g-pehage$(objext) \
  g-rannum$(objext) \
  g-regexp$(objext) \
  g-regpat$(objext) \
  g-rewdat$(objext) \
  g-sechas$(objext) \
  g-sehamd$(objext) \
  g-sehash$(objext) \
  g-sercom$(objext) \
  g-sestin$(objext) \
  g-sets$(objext) \
  g-sha1$(objext) \
  g-sha224$(objext) \
  g-sha256$(objext) \
  g-sha384$(objext) \
  g-sha512$(objext) \
  g-shsh32$(objext) \
  g-shsh64$(objext) \
  g-shshco$(objext) \
  g-souinf$(objext) \
  g-spchge$(objext) \
  g-speche$(objext) \
  g-spipat$(objext) \
  g-spitbo$(objext) \
  g-sptabo$(objext) \
  g-sptain$(objext) \
  g-sptavs$(objext) \
  g-strhas$(objext) \
  g-string$(objext) \
  g-strspl$(objext) \
  g-table$(objext) \
  g-tasloc$(objext) \
  g-timsta$(objext) \
  g-traceb$(objext) \
  g-trasym$(objext) \
  s-trasym$(objext) \
  g-tty$(objext) \
  g-u3spch$(objext) \
  g-utf_32$(objext) \
  g-wispch$(objext) \
  g-wistsp$(objext) \
  g-zspche$(objext) \
  g-zstspl$(objext) \
  gnat$(objext) \
  i-c$(objext) \
  i-cexten$(objext) \
  i-cobol$(objext) \
  i-cpoint$(objext) \
  i-cstrea$(objext) \
  i-cstrin$(objext) \
  i-fortra$(objext) \
  i-pacdec$(objext) \
  interfac$(objext) \
  ioexcept$(objext) \
  machcode$(objext) \
  s-addima$(objext) \
  s-addope$(objext) \
  s-aotase$(objext) \
  s-arit64$(objext) \
  s-assert$(objext) \
  s-atacco$(objext) \
  s-atocou$(objext) \
  s-atoope$(objext) \
  s-atopar$(objext) \
  s-atopex$(objext) \
  s-atopri$(objext) \
  s-auxdec$(objext) \
  s-bignum$(objext) \
  s-bitfie$(objext) \
  s-bitops$(objext) \
  s-bituti$(objext) \
  s-boarop$(objext) \
  s-boustr$(objext) \
  s-bytswa$(objext) \
  s-carsi8$(objext) \
  s-carun8$(objext) \
  s-casi16$(objext) \
  s-casi32$(objext) \
  s-casi64$(objext) \
  s-casuti$(objext) \
  s-caun16$(objext) \
  s-caun32$(objext) \
  s-caun64$(objext) \
  s-chepoo$(objext) \
  s-commun$(objext) \
  s-conca2$(objext) \
  s-conca3$(objext) \
  s-conca4$(objext) \
  s-conca5$(objext) \
  s-conca6$(objext) \
  s-conca7$(objext) \
  s-conca8$(objext) \
  s-conca9$(objext) \
  s-crc32$(objext)  \
  s-crtl$(objext)   \
  s-dfmkio$(objext) \
  s-dfmopr$(objext) \
  s-dgmgop$(objext) \
  s-dlmopr$(objext) \
  s-diflio$(objext) \
  s-diflmk$(objext) \
  s-digemk$(objext) \
  s-diinio$(objext) \
  s-dilomk$(objext) \
  s-dim$(objext)    \
  s-dimkio$(objext) \
  s-dimmks$(objext) \
  s-direio$(objext) \
  s-dlmkio$(objext) \
  s-dmotpr$(objext) \
  s-dsaser$(objext) \
  s-elaall$(objext) \
  s-excdeb$(objext) \
  s-except$(objext) \
  s-exctab$(objext) \
  s-exnint$(objext) \
  s-exnllf$(objext) \
  s-exnlli$(objext) \
  s-expint$(objext) \
  s-explli$(objext) \
  s-expllu$(objext) \
  s-expmod$(objext) \
  s-expuns$(objext) \
  s-fatflt$(objext) \
  s-fatgen$(objext) \
  s-fatlfl$(objext) \
  s-fatllf$(objext) \
  s-fatsfl$(objext) \
  s-ficobl$(objext) \
  s-filatt$(objext) \
  s-fileio$(objext) \
  s-finmas$(objext) \
  s-finroo$(objext) \
  s-flocon$(objext) \
  s-fore$(objext)   \
  s-gearop$(objext) \
  s-genbig$(objext) \
  s-geveop$(objext) \
  s-gloloc$(objext) \
  s-htable$(objext) \
  s-imenne$(objext) \
  s-imgbiu$(objext) \
  s-imgboo$(objext) \
  s-imgcha$(objext) \
  s-imgdec$(objext) \
  s-imgenu$(objext) \
  s-imgint$(objext) \
  s-imgllb$(objext) \
  s-imglld$(objext) \
  s-imglli$(objext) \
  s-imgllu$(objext) \
  s-imgllw$(objext) \
  s-imgrea$(objext) \
  s-imguns$(objext) \
  s-imgwch$(objext) \
  s-imgwiu$(objext) \
  s-io$(objext)     \
  s-llflex$(objext) \
  s-maccod$(objext) \
  s-mantis$(objext) \
  s-mastop$(objext) \
  s-memcop$(objext) \
  s-memory$(objext) \
  s-multip$(objext) \
  s-os_lib$(objext) \
  s-oscons$(objext) \
  s-osprim$(objext) \
  s-pack03$(objext) \
  s-pack05$(objext) \
  s-pack06$(objext) \
  s-pack07$(objext) \
  s-pack09$(objext) \
  s-pack10$(objext) \
  s-pack11$(objext) \
  s-pack12$(objext) \
  s-pack13$(objext) \
  s-pack14$(objext) \
  s-pack15$(objext) \
  s-pack17$(objext) \
  s-pack18$(objext) \
  s-pack19$(objext) \
  s-pack20$(objext) \
  s-pack21$(objext) \
  s-pack22$(objext) \
  s-pack23$(objext) \
  s-pack24$(objext) \
  s-pack25$(objext) \
  s-pack26$(objext) \
  s-pack27$(objext) \
  s-pack28$(objext) \
  s-pack29$(objext) \
  s-pack30$(objext) \
  s-pack31$(objext) \
  s-pack33$(objext) \
  s-pack34$(objext) \
  s-pack35$(objext) \
  s-pack36$(objext) \
  s-pack37$(objext) \
  s-pack38$(objext) \
  s-pack39$(objext) \
  s-pack40$(objext) \
  s-pack41$(objext) \
  s-pack42$(objext) \
  s-pack43$(objext) \
  s-pack44$(objext) \
  s-pack45$(objext) \
  s-pack46$(objext) \
  s-pack47$(objext) \
  s-pack48$(objext) \
  s-pack49$(objext) \
  s-pack50$(objext) \
  s-pack51$(objext) \
  s-pack52$(objext) \
  s-pack53$(objext) \
  s-pack54$(objext) \
  s-pack55$(objext) \
  s-pack56$(objext) \
  s-pack57$(objext) \
  s-pack58$(objext) \
  s-pack59$(objext) \
  s-pack60$(objext) \
  s-pack61$(objext) \
  s-pack62$(objext) \
  s-pack63$(objext) \
  s-parame$(objext) \
  s-parint$(objext) \
  s-pooglo$(objext) \
  s-pooloc$(objext) \
  s-poosiz$(objext) \
  s-powtab$(objext) \
  s-purexc$(objext) \
  s-rannum$(objext) \
  s-ransee$(objext) \
  s-regexp$(objext) \
  s-regpat$(objext) \
  s-resfil$(objext) \
  s-restri$(objext) \
  s-rident$(objext) \
  s-rpc$(objext)    \
  s-scaval$(objext) \
  s-secsta$(objext) \
  s-sequio$(objext) \
  s-shasto$(objext) \
  s-soflin$(objext) \
  s-soliin$(objext) \
  s-spsufi$(objext) \
  s-stache$(objext) \
  s-stalib$(objext) \
  s-stausa$(objext) \
  s-stoele$(objext) \
  s-stopoo$(objext) \
  s-stposu$(objext) \
  s-stratt$(objext) \
  s-strhas$(objext) \
  s-string$(objext) \
  s-ststop$(objext) \
  s-tasloc$(objext) \
  s-traceb$(objext) \
  s-traent$(objext) \
  s-unstyp$(objext) \
  s-utf_32$(objext) \
  s-valboo$(objext) \
  s-valcha$(objext) \
  s-valdec$(objext) \
  s-valenu$(objext) \
  s-valint$(objext) \
  s-vallld$(objext) \
  s-vallli$(objext) \
  s-valllu$(objext) \
  s-valrea$(objext) \
  s-valuns$(objext) \
  s-valuti$(objext) \
  s-valwch$(objext) \
  s-veboop$(objext) \
  s-vector$(objext) \
  s-vercon$(objext) \
  s-wchcnv$(objext) \
  s-wchcon$(objext) \
  s-wchjis$(objext) \
  s-wchstw$(objext) \
  s-wchwts$(objext) \
  s-widboo$(objext) \
  s-widcha$(objext) \
  s-widenu$(objext) \
  s-widlli$(objext) \
  s-widllu$(objext) \
  s-widwch$(objext) \
  s-wwdcha$(objext) \
  s-wwdenu$(objext) \
  s-wwdwch$(objext) \
  sequenio$(objext) \
  system$(objext) \
  text_io$(objext) \
  unchconv$(objext) \
  unchdeal$(objext) \
  $(GNATRTL_ALTIVEC_OBJS) \
  $(GNATRTL_SOCKETS_OBJS) \
  $(EXTRA_GNATRTL_NONTASKING_OBJS)

# LIBGNAT_TARGET_PAIRS is a list of pairs of filenames.
# The members of each pair must be separated by a '<' and no whitespace.
# Each pair must be separated by some amount of whitespace from the following
# pair.

# Non-tasking case:

LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<libgnarl/a-intnam__dummy.ads \
s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
s-intman.adb<libgnarl/s-intman__dummy.adb \
s-osinte.ads<libgnarl/s-osinte__dummy.ads \
s-osprim.adb<libgnat/s-osprim__posix.adb \
s-taprop.adb<libgnarl/s-taprop__dummy.adb \
s-taspri.ads<libgnarl/s-taspri__dummy.ads

# When using the GCC exception handling mechanism, we need to use an
# alternate body for a-exexpr.adb (a-exexpr-gcc.adb)

EH_MECHANISM=

# Compilation options for the GCC-SJLJ RTS. This may be augmented for
# target specific contexts, e.g. to add -fno-omit-frame-pointer for backtrace
# computations.
GNATLIBCFLAGS_FOR_GCCSJLJ=-fsjlj

# Default shared object option. Note that we rely on the fact that the "soname"
# option will always be present and last in this flag, so that we can have
# $(SO_OPTS)libgnat-x.xx

SO_OPTS = -Wl,-soname,

# Default gnatlib-shared target.
# By default, equivalent to gnatlib.
# Set to gnatlib-shared-default, gnatlib-shared-dual, or a platform specific
# target when supported.
GNATLIB_SHARED = gnatlib

# By default, build socket support units. On platforms that do not support
# sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
# to LIBGNAT_TARGET_PAIRS.

GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
  g-soliop$(objext) g-sothco$(objext)

DUMMY_SOCKETS_TARGET_PAIRS = \
  g-socket.adb<libgnat/g-socket__dummy.adb \
  g-socket.ads<libgnat/g-socket__dummy.ads \
  g-socthi.adb<libgnat/g-socthi__dummy.adb \
  g-socthi.ads<libgnat/g-socthi__dummy.ads \
  g-sothco.adb<libgnat/g-sothco__dummy.adb \
  g-sothco.ads<libgnat/g-sothco__dummy.ads

# On platforms where atomic increment/decrement operations are supported,
# special version of Ada.Strings.Unbounded package can be used.

ATOMICS_TARGET_PAIRS = \
  a-coinho.adb<libgnat/a-coinho__shared.adb \
  a-coinho.ads<libgnat/a-coinho__shared.ads \
  a-stunau.adb<libgnat/a-stunau__shared.adb \
  a-suteio.adb<libgnat/a-suteio__shared.adb \
  a-strunb.ads<libgnat/a-strunb__shared.ads \
  a-strunb.adb<libgnat/a-strunb__shared.adb \
  a-stwiun.adb<libgnat/a-stwiun__shared.adb \
  a-stwiun.ads<libgnat/a-stwiun__shared.ads \
  a-swunau.adb<libgnat/a-swunau__shared.adb \
  a-swuwti.adb<libgnat/a-swuwti__shared.adb \
  a-stzunb.adb<libgnat/a-stzunb__shared.adb \
  a-stzunb.ads<libgnat/a-stzunb__shared.ads \
  a-szunau.adb<libgnat/a-szunau__shared.adb \
  a-szuzti.adb<libgnat/a-szuzti__shared.adb

ATOMICS_BUILTINS_TARGET_PAIRS = \
  s-atocou.adb<libgnat/s-atocou__builtin.adb

# Special version of units for x86 and x86-64 platforms.

X86_TARGET_PAIRS = \
  a-numaux.ads<libgnat/a-numaux__x86.ads \
  a-numaux.adb<libgnat/a-numaux__x86.adb \
  s-atocou.adb<libgnat/s-atocou__x86.adb

X86_64_TARGET_PAIRS = \
  a-numaux.ads<libgnat/a-numaux__x86.ads \
  a-numaux.adb<libgnat/a-numaux__x86.adb \
  s-atocou.adb<libgnat/s-atocou__builtin.adb

# Implementation of symbolic traceback based on dwarf
TRASYM_DWARF_UNIX_PAIRS = \
  s-trasym.adb<libgnat/s-trasym__dwarf.adb \
  s-mmosin.ads<libgnat/s-mmosin__unix.ads \
  s-mmosin.adb<libgnat/s-mmosin__unix.adb \
  s-mmauni.ads<libgnat/s-mmauni__long.ads

TRASYM_DWARF_MINGW_PAIRS = \
  s-trasym.adb<libgnat/s-trasym__dwarf.adb \
  s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
  s-mmosin.adb<libgnat/s-mmosin__mingw.adb

TRASYM_DWARF_COMMON_OBJS = s-objrea$(objext) s-dwalin$(objext) s-mmap$(objext) \
  s-mmosin$(objext)

TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)

TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)

# Shared library version
LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(GNAT_SRC)/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))

# Additional object files from C source to be added to libgnat.
EXTRA_LIBGNAT_OBJS=

# Additional C source files to be added to libgnat without corresponding
# object file (#included files). This should include at least the GNAT
# specific header files required to rebuild the runtime library from sources.
EXTRA_LIBGNAT_SRCS=

# Additional object files from Ada sources to be added in libgnat
EXTRA_GNATRTL_NONTASKING_OBJS=

# Additional object files from Ada sources to be added in libgnarl
EXTRA_GNATRTL_TASKING_OBJS=

# Subsets of extra libgnat sources that always go together
VX_SIGTRAMP_EXTRA_SRCS=sigtramp.h sigtramp-vxworks-target.inc

# Additional object files that should go in the same directory as libgnat,
# aside the library itself. Typically useful for crtbegin/crtend kind of files.
EXTRA_ADALIB_OBJS=

# GCC spec files to be installed in $(libsubdir), so --specs=<spec-filename>
# finds them at runtime.
GCC_SPEC_FILES=

# $(filter-out PATTERN...,TEXT) removes all PATTERN words from TEXT.
# $(strip STRING) removes leading and trailing spaces from STRING.
# If what's left is null then it's a match.

# PowerPC and e500v2 VxWorks
ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworksspe vxworks7% vxworks7spe,$(target_cpu) $(target_vendor) $(target_os))),)

  ifeq ($(strip $(filter-out e500%, $(target_alias))),)
     ARCH_STR=e500
     # gcc config translates the target e500v2-wrs-vxworks to
     # powerpc-wrs-vxworksspe. Let's keep the original alias here when
     # generating s-oscons.ads.
     target=$(target_alias)
  else
     ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
        ARCH_STR=ppc64
     else
        ARCH_STR=ppc
     endif
  endif

  VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
  SVX=system-$(VX)

  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  a-numaux.ads<libgnat/a-numaux__vxworks.ads \
  s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
  s-intman.ads<libgnarl/s-intman__vxworks.ads \
  s-intman.adb<libgnarl/s-intman__vxworks.adb \
  s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
  s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
  s-osprim.adb<libgnat/s-osprim__vxworks.adb \
  s-parame.ads<libgnat/s-parame__vxworks.ads \
  s-parame.adb<libgnat/s-parame__vxworks.adb \
  s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
  s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
  s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
  s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
  g-socthi.ads<libgnat/g-socthi__vxworks.ads \
  g-socthi.adb<libgnat/g-socthi__vxworks.adb \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  # VxWorks 5 and 6 both use the same target triplet making them
  # indistinguishable in the context of this make file. Package
  # System.Stack_Checking.Operations is not needed on VxWorks 6 as it leads to
  # an undefined symbol when building a dynamic shared library. To alleviate
  # this problem and distinguish this case, we use the THREAD_KIND and include
  # the package only in default mode.

  ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
      s-stchop.ads<libgnat/s-stchop__limit.ads \
      s-stchop.adb<libgnat/s-stchop__vxworks.adb
    EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
  endif

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
    s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
    system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp.ads

    EH_MECHANISM=-gcc
  else
    ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-mudido.adb<libgnarl/s-mudido__affinity.adb \
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
      s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
      system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads

      EH_MECHANISM=-gcc
      EXTRA_LIBGNAT_OBJS+=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<libgnarl/s-interr__vxworks.adb \
        s-mudido.adb<libgnarl/s-mudido__affinity.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
        s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
        s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
        system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads

        EH_MECHANISM=-gcc
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<libgnarl/s-interr__vxworks.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb

        ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
          EH_MECHANISM=-gcc
          LIBGNAT_TARGET_PAIRS += \
          s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
          s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
          system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
        else
          LIBGNAT_TARGET_PAIRS += \
          system.ads<libgnat/system-vxworks-ppc.ads
        endif
      endif
      EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
    endif
  endif

  EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
  EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)

  EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o

  ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
    ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
      GCC_SPEC_FILES+=vxworks7-ppc64-rtp-base-link.spec
    else
      GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
    endif
  else
    GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
    GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
    GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
  endif
endif

# PowerPC and e500v2 VxWorks 653
ifeq ($(strip $(filter-out powerpc% wrs vxworksae vxworksaespe,$(target_cpu) $(target_vendor) $(target_os))),)

  ifeq ($(strip $(filter-out e500%, $(target_alias))),)
     ARCH_STR=e500
     # gcc config translates the target e500v2-wrs-vxworks to
     # powerpc-wrs-vxworksspe. Let's keep the original alias here when
     # generating s-oscons.ads.
     target=$(target_alias)
  else
     ARCH_STR=ppc
  endif

  # target pairs for vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  a-numaux.ads<libgnat/a-numaux__vxworks.ads \
  g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
  s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
  s-interr.adb<libgnarl/s-interr__vxworks.adb \
  s-intman.ads<libgnarl/s-intman__vxworks.ads \
  s-intman.adb<libgnarl/s-intman__vxworks.adb \
  s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
  s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
  s-osprim.adb<libgnat/s-osprim__vxworks.adb \
  s-parame.ads<libgnat/s-parame__ae653.ads \
  s-parame.adb<libgnat/s-parame__vxworks.adb \
  s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
  s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
  s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
  s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
  s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
  s-vxwork.ads<libgnarl/s-vxwork__ppc.ads \
  system.ads<libgnat/system-vxworks-$(ARCH_STR)-vthread.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  EH_MECHANISM=-gcc

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
  EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
  EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)

  # Extra pairs for the vthreads runtime
  ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-thread.adb<libgnat/s-thread__ae653.adb \
    s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
    $(DUMMY_SOCKETS_TARGET_PAIRS)

    GNATRTL_SOCKETS_OBJS =
    EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
  else
    LIBGNAT_TARGET_PAIRS += \
    g-socthi.ads<libgnat/g-socthi__vxworks.ads \
    g-socthi.adb<libgnat/g-socthi__vxworks.adb \
    g-stsifd.adb<libgnat/g-stsifd__sockets.adb
  endif

endif

# VxWorksae / VxWorks 653 for x86 (vxsim) - ?? VxWorks mils not implemented
ifeq ($(strip $(filter-out %86 wrs vxworksae,$(target_cpu) $(target_vendor) $(target_os))),)
  # target pairs for kernel + vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-elchha.adb<libgnat/a-elchha__vxworks-ppc-full.adb \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  a-numaux.ads<libgnat/a-numaux__vxworks.ads \
  g-io.adb<hie/g-io__vxworks-ppc-cert.adb \
  s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
  s-interr.adb<libgnarl/s-interr__vxworks.adb \
  s-intman.ads<libgnarl/s-intman__vxworks.ads \
  s-intman.adb<libgnarl/s-intman__vxworks.adb \
  s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
  s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
  s-osprim.adb<libgnat/s-osprim__vxworks.adb \
  s-parame.ads<libgnat/s-parame__ae653.ads \
  s-parame.adb<libgnat/s-parame__vxworks.adb \
  s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
  s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
  s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
  s-vxwext.adb<libgnarl/s-vxwext__noints.adb \
  s-vxwext.ads<libgnarl/s-vxwext__vthreads.ads \
  s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
  system.ads<libgnat/system-vxworks-x86-vthread.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  EH_MECHANISM=-gcc

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-thread.o
  EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  GNATRTL_SOCKETS_OBJS =

  # Extra pairs for the vthreads runtime
  ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-thread.adb<libgnat/s-thread__ae653.adb \
    s-osvers.ads<libgnat/s-osvers__vxworks-653.ads \
    $(DUMMY_SOCKETS_TARGET_PAIRS)

    GNATRTL_SOCKETS_OBJS =
    EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o s-osvers.o
  else
    LIBGNAT_TARGET_PAIRS += \
    g-socthi.ads<libgnat/g-socthi__vxworks.ads \
    g-socthi.adb<libgnat/g-socthi__vxworks.adb \
    g-stsifd.adb<libgnat/g-stsifd__sockets.adb
  endif

endif

# x86/x86_64 VxWorks
ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7%,$(target_cpu) $(target_vendor) $(target_os))),)

  EH_MECHANISM=-gcc

  VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
  SVX=system-$(VX)

  ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
     X86CPU=x86_64
     LIBGNAT_TARGET_PAIRS=$(X86_64_TARGET_PAIRS)
  else
     X86CPU=x86
     LIBGNAT_TARGET_PAIRS=$(X86_TARGET_PAIRS)
  endif

  LIBGNAT_TARGET_PAIRS+= \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  i-vxwork.ads<libgnat/i-vxwork__x86.ads \
  s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
  s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
  s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
  s-intman.ads<libgnarl/s-intman__vxworks.ads \
  s-intman.adb<libgnarl/s-intman__vxworks.adb \
  s-osprim.adb<libgnat/s-osprim__vxworks.adb \
  s-parame.ads<libgnat/s-parame__vxworks.ads \
  s-parame.adb<libgnat/s-parame__vxworks.adb \
  s-stchop.ads<libgnat/s-stchop__limit.ads \
  s-stchop.adb<libgnat/s-stchop__vxworks.adb \
  s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
  s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
  s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
  s-vxwork.ads<libgnarl/s-vxwork__x86.ads \
  g-socthi.ads<libgnat/g-socthi__vxworks.ads \
  g-socthi.adb<libgnat/g-socthi__vxworks.adb \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
  $(ATOMICS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  # The CPU setting for VxSim varies with the
  # host (Windows or Linux)
  # target (VxWorks6 or VxWorks7)
  # runtime (rtp or kernel)
  # -------------------------------------------------------------
  #					vx6		vx7
  # Windows (host_os = mingw32)
  #	kernel				SIMNT		SIMNT
  #	rtp				SIMPENTIUM	SIMNT
  # Linux (host_os = linux-gnu)
  #	kernel				SIMLINUX	SIMLINUX
  #	rtp				SIMPENTIUM	SIMLINUX
  # -------------------------------------------------------------
  # It is overridden by VXSIM_CPU only in files init-vxsim.c and
  # sigtramp-vxworks-vxsim.c which contain functions determined at
  # runtime to be called if a program is running on VxSim vs real hardware
  # (due to differences in signal context for unwinding).

  ifneq ($(strip $(filter-out vxworks7, $(target_os))),)
    ifeq ($(strip $(filter-out vxworks rtp rtp-smp,$(target_os) $(THREAD_KIND))),)
      VXSIM_CPU = SIMPENTIUM
    else
      ifeq ($(strip $(filter-out kernel kernel-smp rtp rtp-smp,$(THREAD_KIND))),)
        ifeq ($(strip $(filter-out linux%,$(host_os))),)
          # Linux
          VXSIM_CPU = SIMLINUX
        else
          # Windows
          VXSIM_CPU = SIMNT
        endif
      endif
    endif

    GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
  endif

  ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
    s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
    system.ads<libgnat/$(SVX)-x86-rtp.ads
  else
    ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-mudido.adb<libgnarl/s-mudido__affinity.adb \
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
      s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
      system.ads<libgnat/$(SVX)-$(X86CPU)-rtp-smp.ads

      EXTRA_LIBGNAT_OBJS+=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<libgnarl/s-interr__vxworks.adb \
        s-mudido.adb<libgnarl/s-mudido__affinity.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
        s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
        s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
        system.ads<libgnat/$(SVX)-$(X86CPU)-kernel.ads

        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<libgnarl/s-interr__vxworks.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb

        ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
          LIBGNAT_TARGET_PAIRS += \
          s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
          s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
          system.ads<libgnat/$(SVX)-x86-kernel.ads
        else
          LIBGNAT_TARGET_PAIRS += \
          system.ads<libgnat/system-vxworks-x86.ads
        endif
      endif

      EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
  EXTRA_GNATRTL_TASKING_OBJS += i-vxinco.o s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o

  EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
  EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)

  ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
    GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
  else
    GCC_SPEC_FILES+=vxworks-x86-link.spec
    GCC_SPEC_FILES+=vxworks-cert-x86-link.spec
    GCC_SPEC_FILES+=vxworks-smp-x86-link.spec
  endif
endif

# ARM and Aarch64 VxWorks
ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)

  ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
    ARCH_STR=aarch64
    VX=vxworks7
    EH_MECHANISM=-gcc
    SIGTRAMP_OBJ=sigtramp-vxworks.o
  else
    ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
      ARCH_STR=arm
      ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
        VX=vxworks7
        EH_MECHANISM=-arm
        SIGTRAMP_OBJ=sigtramp-armvxworks.o
      else
        VX=vxworks
        EH_MECHANISM=-gcc
        SIGTRAMP_OBJ=sigtramp-vxworks.o
      endif
    else
      ARCH_STR=coff
    endif
  endif

  SVX=system-$(VX)

  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  a-numaux.ads<libgnat/a-numaux__vxworks.ads \
  s-inmaop.adb<libgnarl/s-inmaop__vxworks.adb \
  s-interr.adb<libgnarl/s-interr__vxworks.adb \
  s-intman.ads<libgnarl/s-intman__vxworks.ads \
  s-intman.adb<libgnarl/s-intman__vxworks.adb \
  s-osinte.adb<libgnarl/s-osinte__vxworks.adb \
  s-osinte.ads<libgnarl/s-osinte__vxworks.ads \
  s-osprim.adb<libgnat/s-osprim__vxworks.adb \
  s-parame.ads<libgnat/s-parame__vxworks.ads \
  s-parame.adb<libgnat/s-parame__vxworks.adb \
  s-stchop.ads<libgnat/s-stchop__limit.ads \
  s-stchop.adb<libgnat/s-stchop__vxworks.adb \
  s-taprop.adb<libgnarl/s-taprop__vxworks.adb \
  s-tasinf.ads<libgnarl/s-tasinf__vxworks.ads \
  s-taspri.ads<libgnarl/s-taspri__vxworks.ads \
  s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads \
  g-socthi.ads<libgnat/g-socthi__vxworks.ads \
  g-socthi.adb<libgnat/g-socthi__vxworks.adb \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
    s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
    s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
    system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads

    EXTRA_LIBGNAT_OBJS+=affinity.o

    EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
    EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
  else
    ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-mudido.adb<libgnarl/s-mudido__affinity.adb \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
      s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
      s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
      system.ads<libgnat/$(SVX)-$(ARCH_STR).ads

      EXTRA_LIBGNAT_OBJS+=affinity.o

      EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
      EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
    else
      LIBGNAT_TARGET_PAIRS += \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
      system.ads<libgnat/$(SVX)-$(ARCH_STR).ads

      ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
        s-vxwext.adb<libgnarl/s-vxwext__kernel.adb

        EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
        EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
      endif
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o \
    s-stchop.o
  EXTRA_GNATRTL_TASKING_OBJS=i-vxinco.o s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o

  ifeq ($(strip $(filter-out arm vxworks7%, $(target_cpu) $(target_os))),)
    GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
  else
    ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
      GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
    endif

    ifneq ($(strip $(filter-out vxworks7%, $(target_os))),)
      GCC_SPEC_FILES+=vxworks-arm-link.spec
      GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
    endif
  endif
endif

# ARM android
ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__android.adb \
  s-linux.ads<libgnarl/s-linux__android.ads \
  s-osinte.adb<libgnarl/s-osinte__android.adb \
  s-osinte.ads<libgnarl/s-osinte__android.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-arm.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EXTRA_LIBGNAT_OBJS+=sigtramp-armdroid.o
  EXTRA_LIBGNAT_SRCS+=sigtramp.h
  EH_MECHANISM=-arm
  THREADSLIB =
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# AARCH64 QNX
ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__qnx.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__qnx.adb \
  s-osinte.adb<libgnarl/s-osinte__qnx.adb \
  s-osinte.ads<libgnarl/s-osinte__qnx.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-qnx.ads<libgnarl/s-qnx.ads \
  s-taprop.adb<libgnarl/s-taprop__qnx.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  g-soliop.ads<libgnat/g-soliop__qnx.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-qnx-aarch64.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
  EXTRA_LIBGNAT_OBJS+=sigtramp-qnx.o
  EXTRA_LIBGNAT_SRCS+=sigtramp.h
  EH_MECHANISM=-gcc

  SO_OPTS= -shared-libgcc -Wl,-soname,
  MISCLIB= -lsocket
  THREADSLIB=
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# Sparc Solaris
ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__solaris.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__solaris.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__solaris.adb \
  s-osinte.ads<libgnarl/s-osinte__solaris.ads \
  s-osprim.adb<libgnat/s-osprim__solaris.adb \
  s-taprop.adb<libgnarl/s-taprop__solaris.adb \
  s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
  s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
  s-taspri.ads<libgnarl/s-taspri__solaris.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
  g-soliop.ads<libgnat/g-soliop__solaris.ads \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-solaris-sparc.ads

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  EH_MECHANISM=-gcc
  THREADSLIB = -lposix4 -lthread
  MISCLIB = -lposix4 -lnsl -lsocket
  SO_OPTS = -Wl,-h,
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# x86 and x86-64 solaris
ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<libgnarl/a-intnam__solaris.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__solaris.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__solaris.adb \
  s-osinte.ads<libgnarl/s-osinte__solaris.ads \
  s-osprim.adb<libgnat/s-osprim__solaris.adb \
  s-taprop.adb<libgnarl/s-taprop__solaris.adb \
  s-tasinf.adb<libgnarl/s-tasinf__solaris.adb \
  s-tasinf.ads<libgnarl/s-tasinf__solaris.ads \
  s-taspri.ads<libgnarl/s-taspri__solaris.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__solaris.adb \
  g-soliop.ads<libgnat/g-soliop__solaris.ads \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  system.ads<libgnat/system-solaris-x86.ads

  ifeq ($(strip $(filter-out %86 solaris2%,$(target_cpu) $(target_os))),)
    ifeq ($(strip $(MULTISUBDIR)),/amd64)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_TARGET_PAIRS)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(X86_64_TARGET_PAIRS)
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  EH_MECHANISM=-gcc
  THREADSLIB = -lposix4 -lthread
  MISCLIB = -lposix4 -lnsl -lsocket
  SO_OPTS = -Wl,-h,
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# x86 Linux
ifeq ($(strip $(filter-out %86 linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-x86.ads

  ifeq ($(strip $(MULTISUBDIR)),/64)
    LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
  else
    LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
  endif

  LIBGNAT_TARGET_PAIRS += \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread -lrt
  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  GNATLIB_SHARED = gnatlib-shared-dual
  MISCLIB = -ldl
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)

  GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
endif

# x86 kfreebsd
ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  MISCLIB = -lutil
endif

# i[3456]86-pc-gnu i.e. GNU Hurd
ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__gnu.adb \
  s-osinte.ads<libgnarl/s-osinte__gnu.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  TOOLS_TARGET_PAIRS =  indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  a-numaux.adb<libgnat/a-numaux__x86.adb \
  a-numaux.ads<libgnat/a-numaux__x86.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__kfreebsd-gnu.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-freebsd.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# aarch64 FreeBSD
ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
  s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  GNATLIB_SHARED = gnatlib-shared-dual

  EH_MECHANISM=-gcc
  THREADSLIB= -lpthread
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  MISCLIB = -lutil
endif

# x86 FreeBSD
ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
  s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  GNATLIB_SHARED = gnatlib-shared-dual

  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  EH_MECHANISM=-gcc
  THREADSLIB= -lpthread
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  MISCLIB = -lutil
endif

# x86-64 FreeBSD
ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__freebsd.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__freebsd.adb \
  s-osinte.ads<libgnarl/s-osinte__freebsd.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  GNATLIB_SHARED = gnatlib-shared-dual

  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  EH_MECHANISM=-gcc
  THREADSLIB= -lpthread
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  MISCLIB = -lutil
endif

# x86-64 DragonFly
ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__dragonfly.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.adb<libgnarl/s-osinte__dragonfly.adb \
  s-osinte.ads<libgnarl/s-osinte__dragonfly.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<libgnat/system-dragonfly-x86_64.ads

  GNATLIB_SHARED = gnatlib-shared-dual

  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o

  EH_MECHANISM=-gcc
  THREADSLIB= -lpthread
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  MISCLIB = -lutil
endif

# S390 Linux
ifeq ($(strip $(filter-out s390% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-s390.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# HP/PA HP-UX 10
ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-excpol.adb<libgnat/a-excpol__abort.adb \
  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-interr.adb<libgnarl/s-interr__sigaction.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__hpux-dce.adb \
  s-osinte.ads<libgnarl/s-osinte__hpux-dce.ads \
  s-parame.ads<libgnat/s-parame__hpux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__hpux-dce.adb \
  s-taspri.ads<libgnarl/s-taspri__hpux-dce.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  system.ads<libgnat/system-hpux.ads

  EH_MECHANISM=-gcc
endif

# HP/PA HP-UX 11
ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__hpux.ads \
  s-parame.ads<libgnat/s-parame__hpux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-traceb.adb<libgnat/s-traceb__hpux.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-hpux.ads

  EH_MECHANISM=-gcc
  TGT_LIB = /usr/lib/libcl.a
  THREADSLIB = -lpthread
  GMEM_LIB = gmemlib
  soext = .sl
  SO_OPTS = -Wl,+h,
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# IBM AIX
ifeq ($(strip $(filter-out ibm aix%,$(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__aix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__aix.adb \
  s-osinte.ads<libgnarl/s-osinte__aix.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-aix.ads

  ifneq ($(target_os),)
    ifeq ($(findstring ppc64, \
	    $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) \
		     -print-multi-os-directory)), \
	  ppc64)
      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-aix.adb
    else
      TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  THREADSLIB = -lpthreads
  EH_MECHANISM=-gcc

  GMEM_LIB = gmemlib
endif

# LynxOS 178 and LynxOS 178 Elf
ifeq ($(strip $(filter-out lynxos178%,$(target_os))),)
  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__lynxos.ads \
  g-soliop.ads<libgnat/g-soliop__lynxos.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__lynxos.adb \
  s-osinte.adb<libgnarl/s-osinte__lynxos178.adb \
  s-osprim.ads<libgnat/s-osprim__lynxos.ads \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__lynxos.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb

  ifeq ($(strip $(filter-out powerpc%, $(target_cpu))),)
    LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-ppc.ads
  endif
  ifeq ($(strip $(filter-out %86, $(target_cpu))),)
    LIBGNAT_TARGET_PAIRS +=  system.ads<libgnat/system-lynxos178-x86.ads
    LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
  endif

  ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
    LIBGNAT_TARGET_PAIRS += \
    s-osinte.ads<libgnarl/s-osinte__lynxos178e.ads \
    s-osprim.adb<libgnat/s-osprim__posix2008.adb \
    s-tracon.adb<hie/s-tracon__ppc-eabi.adb
  endif

  EH_MECHANISM=-gcc
endif

# RTEMS
ifeq ($(strip $(filter-out rtems%,$(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  system.ads<libgnat/system-rtems.ads \
  a-intnam.ads<libgnarl/a-intnam__rtems.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__rtems.adb \
  s-osinte.ads<libgnarl/s-osinte__rtems.ads \
  s-osprim.adb<libgnat/s-osprim__rtems.adb \
  s-parame.adb<libgnat/s-parame__rtems.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-stchop.adb<libgnat/s-stchop__rtems.adb \
  s-interr.adb<libgnarl/s-interr__hwint.adb
  ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
    EH_MECHANISM=-arm
  else
    EH_MECHANISM=-gcc
  endif
endif

# PikeOS
ifeq ($(strip $(filter-out powerpc% %86 sysgo pikeos,$(target_cpu) $(target_vendor) $(target_os)))),)
  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
endif

# *-elf, *-eabi, or *-eabispe
ifeq ($(strip $(filter-out elf eabi eabispe,$(target_os))),)
  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
endif

ifeq ($(strip $(filter-out %djgpp,$(target_os))),)
  GNATRTL_SOCKETS_OBJS =

  LIBGNAT_TARGET_PAIRS = \
	a-intnam.ads<libgnarl/a-intnam__dummy.ads \
	s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
	s-intman.adb<libgnarl/s-intman__dummy.adb \
	s-osinte.ads<libgnarl/s-osinte__dummy.ads \
	s-osprim.adb<libgnat/s-osprim__unix.adb \
	s-taprop.adb<libgnarl/s-taprop__dummy.adb \
	s-taspri.ads<libgnarl/s-taspri__dummy.ads \
	system.ads<libgnat/system-djgpp.ads \
	$(DUMMY_SOCKETS_TARGET_PAIRS)

  EH_MECHANISM=-gcc
endif

# Cygwin/Mingw32
ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),)
  # Cygwin provides a full Posix environment, and so we use the default
  # versions g-socthi rather than the Windows-specific MinGW version.
  # Ideally we would use all the default versions for Cygwin and none
  # of the MinGW versions, but for historical reasons the Cygwin port
  # has always been a CygMing frankenhybrid and it is a long-term project
  # to disentangle them.
  ifeq ($(strip $(filter-out cygwin%,$(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    g-socthi.ads<libgnat/g-socthi.ads \
    g-socthi.adb<libgnat/g-socthi.adb
  else
    LIBGNAT_TARGET_PAIRS = \
    g-socthi.ads<libgnat/g-socthi__mingw.ads \
    g-socthi.adb<libgnat/g-socthi__mingw.adb
  endif
  LIBGNAT_TARGET_PAIRS += \
  a-dirval.adb<libgnat/a-dirval__mingw.adb \
  a-excpol.adb<libgnat/a-excpol__abort.adb \
  s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
  s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
  s-taspri.ads<libgnarl/s-taspri__mingw.ads \
  s-tasinf.adb<libgnarl/s-tasinf__mingw.adb \
  s-tasinf.ads<libgnarl/s-tasinf__mingw.ads \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
  g-soliop.ads<libgnat/g-soliop__mingw.ads \
  $(ATOMICS_TARGET_PAIRS) \
  system.ads<libgnat/system-mingw.ads

  LIBGNAT_TARGET_PAIRS += \
  a-exetim.adb<libgnarl/a-exetim__mingw.adb \
  a-exetim.ads<libgnarl/a-exetim__mingw.ads \
  a-intnam.ads<libgnarl/a-intnam__mingw.ads \
  g-sercom.adb<libgnat/g-sercom__mingw.adb \
  $(TRASYM_DWARF_MINGW_PAIRS) \
  s-tsmona.adb<libgnat/s-tsmona__mingw.adb \
  s-interr.adb<libgnarl/s-interr__sigaction.adb \
  s-intman.adb<libgnarl/s-intman__mingw.adb \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__mingw.ads \
  s-osprim.adb<libgnat/s-osprim__mingw.adb \
  s-taprop.adb<libgnarl/s-taprop__mingw.adb

  ifeq ($(strip $(filter-out x86_64%,$(target_cpu))),)
    ifeq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      SO_OPTS= -m32 -Wl,-soname,
    else
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
      SO_OPTS = -m64 -Wl,-soname,
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
      SO_OPTS = -m64 -Wl,-soname,
    else
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
      SO_OPTS = -m32 -Wl,-soname,
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS += \
    s-win32.o s-winext.o g-regist.o g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_MINGW_OBJS)
  EXTRA_GNATRTL_TASKING_OBJS = a-exetim.o
  EXTRA_LIBGNAT_SRCS+=mingw32.h
  MISCLIB = -lws2_32

  # ??? This will be replaced by gnatlib-shared-dual-win32 when GNAT
  # auto-import support for array/record will be done.
  GNATLIB_SHARED = gnatlib-shared-win32

  EH_MECHANISM=-gcc

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  GMEM_LIB = gmemlib
  EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
  EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
  soext = .dll
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# Mips Linux
ifeq ($(strip $(filter-out mips% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__mips.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-mips.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# PowerPC and e500v2 Linux
ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-ppc.ads

  LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) \
    s-mudido.adb<libgnarl/s-mudido__affinity.adb \
    s-osinte.ads<libgnarl/s-osinte__linux.ads \
    s-osprim.adb<libgnat/s-osprim__posix.adb \
    s-taprop.adb<libgnarl/s-taprop__linux.adb \
    s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
    s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
    s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread -lrt
  GNATLIB_SHARED = gnatlib-shared-dual
  MISCLIB = -ldl
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# ARM linux, GNU eabi
ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-arm.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-arm
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# AArch64 Linux
ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-arm.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread -lrt
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# Sparc Linux
ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__sparc.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  system.ads<libgnat/system-linux-sparc.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# HP/PA Linux
ifeq ($(strip $(filter-out hppa% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__hppa.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-hppa.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# M68K Linux
ifeq ($(strip $(filter-out m68k% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-m68k.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# SH4 Linux
ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-sh4.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-linux.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  MISCLIB=
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# IA64 Linux
ifeq ($(strip $(filter-out %ia64 linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-numaux.ads<libgnat/a-numaux__libc-x86.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-ia64.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread -lrt
  GNATLIB_SHARED=gnatlib-shared-dual
  MISCLIB = -ldl
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# IA64 HP-UX
ifeq ($(strip $(filter-out ia64% hp hpux%,$(target_cpu) $(target_vendor) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__hpux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__hpux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__posix.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-hpux-ia64.ads

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)

  MISCLIB=
  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  soext = .so
  SO_OPTS = -Wl,+h,
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# Alpha Linux
ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__alpha.ads \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-alpha.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  MISCLIB=
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# x86-64 Linux
ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  s-tsmona.adb<libgnat/s-tsmona__linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-x86.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += g-sse.o g-ssvety.o
  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o

  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread -lrt
  MISCLIB = -ldl
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)

  GNATLIBCFLAGS_FOR_GCCSJLJ+=-fno-omit-frame-pointer -momit-leaf-frame-pointer
endif

ifeq ($(strip $(filter-out %x32 linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<libgnarl/a-exetim__posix.adb \
  a-exetim.ads<libgnarl/a-exetim__default.ads \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__x32.ads \
  s-mudido.adb<libgnarl/s-mudido__affinity.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osinte.adb<libgnarl/s-osinte__x32.adb \
  s-osprim.adb<libgnat/s-osprim__x32.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-x86.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread -lrt
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# RISC-V Linux
ifeq ($(strip $(filter-out riscv% linux%,$(target_cpu) $(target_os))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__linux.ads \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux__riscv.ads \
  s-osinte.adb<libgnarl/s-osinte__posix.adb \
  s-osinte.ads<libgnarl/s-osinte__linux.ads \
  s-osprim.adb<libgnat/s-osprim__posix.adb \
  s-taprop.adb<libgnarl/s-taprop__linux.adb \
  s-tasinf.ads<libgnarl/s-tasinf__linux.ads \
  s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
  s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
  system.ads<libgnat/system-linux-riscv.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

# Darwin (Mac OS X)
ifeq ($(strip $(filter-out darwin%,$(target_os))),)
  SO_OPTS = -shared-libgcc
  LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__darwin.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-osinte.adb<libgnarl/s-osinte__darwin.adb \
    s-osinte.ads<libgnarl/s-osinte__darwin.ads \
    s-taprop.adb<libgnarl/s-taprop__posix.adb \
    s-taspri.ads<libgnarl/s-taspri__posix.ads \
    g-sercom.adb<libgnat/g-sercom__linux.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb

  ifeq ($(strip $(filter-out %86,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<libgnarl/s-intman__susv3.adb \
      s-osprim.adb<libgnat/s-osprim__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      system.ads<libgnat/system-darwin-x86.ads

    ifeq ($(strip $(MULTISUBDIR)),/x86_64)
      SO_OPTS += -m64
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
    else
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    endif

    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  endif

  ifeq ($(strip $(filter-out %x86_64,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<libgnarl/s-intman__susv3.adb \
      s-osprim.adb<libgnat/s-osprim__darwin.adb \
      a-exetim.ads<libgnarl/a-exetim__default.ads \
      a-exetim.adb<libgnarl/a-exetim__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      system.ads<libgnat/system-darwin-x86.ads

    ifeq ($(strip $(MULTISUBDIR)),/i386)
      SO_OPTS += -m32
      LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
    else
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
    endif

    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o
  endif

  ifeq ($(strip $(filter-out powerpc%,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<libgnarl/s-intman__posix.adb \
      s-osprim.adb<libgnat/s-osprim__posix.adb \
      a-numaux.ads<libgnat/a-numaux__darwin.ads \
      a-numaux.adb<libgnat/a-numaux__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS) \
      system.ads<libgnat/system-darwin-ppc.ads

    ifeq ($(strip $(MULTISUBDIR)),/ppc64)
        SO_OPTS += -m64
    endif
  endif

  ifeq ($(strip $(filter-out arm,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<libgnarl/s-intman__susv3.adb \
      s-osprim.adb<libgnat/s-osprim__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS)

    LIBGNAT_TARGET_PAIRS += \
      system.ads<libgnat/system-darwin-arm.ads
  endif

  ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<libgnarl/s-intman__susv3.adb \
      s-osprim.adb<libgnat/s-osprim__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS)

    EXTRA_LIBGNAT_OBJS+=sigtramp-ios.o
    EXTRA_LIBGNAT_SRCS+=sigtramp.h
    LIBGNAT_TARGET_PAIRS += \
      system.ads<libgnat/system-darwin-arm.ads
  endif

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-darwin.adb

  EH_MECHANISM=-gcc
  GNATLIB_SHARED = gnatlib-shared-darwin
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  soext = .dylib
  GCC_LINK_FLAGS=-static-libstdc++
endif

ifeq ($(EH_MECHANISM),-gcc)
  LIBGNAT_TARGET_PAIRS += \
    s-excmac.ads<libgnat/s-excmac__gcc.ads \
    s-excmac.adb<libgnat/s-excmac__gcc.adb
  EXTRA_LIBGNAT_OBJS+=raise-gcc.o
  EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
endif

ifeq ($(EH_MECHANISM),-arm)
  LIBGNAT_TARGET_PAIRS += \
    s-excmac.ads<libgnat/s-excmac__arm.ads \
    s-excmac.adb<libgnat/s-excmac__arm.adb
  EXTRA_LIBGNAT_OBJS+=raise-gcc.o
  EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
endif

ifeq ($(strip $(filter-out linux%,$(target_os))),)
  LIBGNAT_TARGET_PAIRS += \
    g-sercom.adb<libgnat/g-sercom__linux.adb
endif

# LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
# library.  LIBGNAT_OBJS is the list of object files for libgnat.
# thread.c is special as put into GNATRTL_TASKING_OBJS
LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o 			\
  cal.o cio.o cstreams.o ctrl_c.o					\
  env.o errno.o exit.o expect.o final.o rtfinal.o rtinit.o		\
  init.o initialize.o locales.o mkdir.o					\
  raise.o seh_init.o socket.o sysdep.o					\
  targext.o terminals.o tracebak.o 					\
  $(EXTRA_LIBGNAT_OBJS)

# NOTE ??? - when the -I option for compiling Ada code is made to work,
#  the library installation will change and there will be a
#  GNAT_RTL_SRCS.  Right now we count on being able to build GNATRTL_OBJS
#  from ADA_INCLUDE_SRCS.

LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))			\
  adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h		\
  tb-gcc.c runtime.h libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)

# memtrack.o is special as not put into libgnat.
GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
  memtrack.o

# Run time source files
# Note that libgnat contains a significant number of files. In orde to avoid
# command line length limitations the source regexp has been split for that
# directory.
ADA_INCLUDE_SRCS =\
 libgnat/ada.ads libgnat/calendar.ads libgnat/directio.ads libgnat/gnat.ads libgnat/interfac.ads libgnat/ioexcept.ads \
 libgnat/machcode.ads libgnat/text_io.ads libgnat/unchconv.ads libgnat/unchdeal.ads \
 libgnat/sequenio.ads libgnat/system.ads Makefile.adalib libgnat/memtrack.adb \
 libgnat/a-[a-o]*.adb libgnat/a-[a-o]*.ads \
 libgnat/a-[p-z]*.adb libgnat/a-[p-z]*.ads \
 libgnat/g-[a-o]*.adb libgnat/g-[a-o]*.ads \
 libgnat/g-[p-z]*.adb libgnat/g-[p-z]*.ads \
 libgnat/s-[a-o]*.adb libgnat/s-[a-o]*.ads \
 libgnat/s-[p-z]*.adb libgnat/s-[p-z]*.ads \
 libgnat/i-[a-o]*.adb libgnat/i-[a-o]*.ads \
 libgnat/i-[p-z]*.adb libgnat/i-[p-z]*.ads \
 libgnarl/[agis]-[a-z]*.ad[sb]


# Files that are in ADA_INCLUDE_SRCS but not in all configurations.
# They will be removed from the run time if not used.
ADA_EXCLUDE_SRCS =\
  g-allein.ads g-alleve.adb g-alleve.ads g-altcon.adb g-altcon.ads \
  g-altive.ads g-alveop.adb g-alveop.ads g-alvety.ads g-alvevi.ads \
  g-intpri.ads g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
  i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
  s-bb.ads     s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb \
  s-bbexti.ads s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads \
  s-bbsle3.ads s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads \
  s-bbthre.adb s-bbthre.ads s-bbtiev.adb s-bbtiev.ads s-bbtime.adb \
  s-bbtime.ads s-bcprmu.adb s-bcprmu.ads s-btstch.adb s-btstch.ads \
  s-gcc.adb    s-gcc.ads    s-gccdiv.adb s-gccdiv.ads \
  s-gccshi.adb s-gccshi.ads \
  s-init.ads   s-init.adb   s-linux.ads  s-macres.ads \
  s-memcom.adb s-memcom.ads s-memmov.adb s-memmov.ads s-memset.adb \
  s-memset.ads s-mufalo.adb s-mufalo.ads s-musplo.adb s-musplo.ads \
  s-sam4.ads   s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \
  s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb s-stm32.ads \
  s-strcom.adb s-strcom.ads s-thread.ads \
  s-vxwext.adb s-vxwext.ads \
  s-win32.ads  s-winext.ads

# ADA_EXCLUDE_SRCS without the sources used by the target
ADA_EXCLUDE_FILES=$(filter-out \
  $(patsubst %$(objext),%.ads,$(GNATRTL_OBJS)) \
  $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
  $(ADA_EXCLUDE_SRCS))

setup-rts: force
	$(RMDIR) $(RTSDIR)
	$(MKDIR) $(RTSDIR)
	$(CHMOD) u+w $(RTSDIR)
# Copy target independent sources
	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
	  $(LN_S) $(GNAT_SRC)/$(f) $(RTSDIR) ;) true
# Remove files not used
	$(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
# Remove files to be replaced by target dependent sources
	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
	for f in $(RTSDIR)/*-*__*.ads $(RTSDIR)/*-*__*.adb; do \
	  case "$$f" in \
	    $(RTSDIR)/s-stratt__*) ;; \
	    *) $(RM) $$f ;; \
	  esac; \
	done
# Copy new target dependent sources
	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	          $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)

# Special flags. It is recommended not to change the compilation flags
# without a careful analysis of the consequences because (part of) the
# runtime implements low-level support that is outside of the semantics
# of the language and therefore needs to be treated differently from the
# other units. For example, the part of the runtime implementing the
# propagation of exceptions cannot itself be compiled with checks that
# may give rise to exceptions, e.g. stack overflow checks.

# Generate target-dependent info into a file named ada_target_properties.
# This information is used by tools for static analysis: they need to know
# the size of standard types for a given run-time library. This metadata
# is meant to be saved at the root of the run-time directory.

ADA_TARGET_PROPERTIES = -gnatet=ada_target_properties

system.o  : system.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< \
	  $(ADA_TARGET_PROPERTIES) \
	  $(OUTPUT_OPTION)

# Force no sibling call optimization on s-traceb.o so the number of stack
# frames to be skipped when computing a call chain is not modified by
# optimization. We don't want inlining, either.

s-traceb.o  : s-traceb.adb s-traceb.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) \
	  $(NO_INLINE_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) $< \
	  $(OUTPUT_OPTION)

# Compile s-tasdeb.o without optimization and with debug info so that it is
# always possible to set conditional breakpoints on tasks.

s-tasdeb.o  : s-tasdeb.adb s-tasdeb.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)

# Force no function reordering on a-except.o because of the exclusion bounds
# mechanism (see the source file for more detailed information).
# force debugging information on a-except.o so that it is always
# possible to set conditional breakpoints on exceptions.
# use -O1 otherwise gdb isn't able to get a full backtrace on mips targets.

a-except.o  : a-except.adb a-except.ads
	$(ADAC) -c $(ALL_ADAFLAGS) -O1 $(FORCE_DEBUG_ADAFLAGS) \
	  $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)

# Compile s-excdeb.o without optimization and with debug info to let the
# debugger set breakpoints and inspect subprogram parameters on exception
# related events.

s-excdeb.o  : s-excdeb.adb s-excdeb.ads s-except.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
	  $(ADA_INCLUDES) $< $(OUTPUT_OPTION)

# Force debugging information on s-assert.o so that it is always
# possible to set breakpoint on assert failures.

s-assert.o  : s-assert.adb s-assert.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)

# Force debugging information on a-tags.o so that the debugger can find
# the description of Ada.Tags.Type_Specific_Data.

a-tags.o  : a-tags.adb a-tags.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)

# Force no sibling call optimization on s-memory.o to avoid turning the
# tail recursion in Alloc into a loop that confuses branch prediction.

s-memory.o  : s-memory.adb s-memory.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(NO_SIBLING_ADAFLAGS) $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)
