# 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-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-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-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-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-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-arit64$(objext) \
  s-assert$(objext) \
  s-atacco$(objext) \
  s-atocou$(objext) \
  s-atopri$(objext) \
  s-auxdec$(objext) \
  s-bignum$(objext) \
  s-bitops$(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-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) \
  g-sercom.adb<libgnat/g-sercom__linux.adb \
  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 \
  g-sercom.adb<libgnat/g-sercom__linux.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 \
  g-sercom.adb<libgnat/g-sercom__linux.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 \
  g-sercom.adb<libgnat/g-sercom__linux.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 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 \
  g-sercom.adb<libgnat/g-sercom__linux.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-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 \
  g-sercom.adb<libgnat/g-sercom__linux.adb \
  $(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 \
  g-sercom.adb<libgnat/g-sercom__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_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 \
  g-sercom.adb<libgnat/g-sercom__linux.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

# 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 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

# 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) $(FORCE_DEBUG_ADAFLAGS) \
	  $(NO_INLINE_ADAFLAGS) $(NO_REORDER_ADAFLAGS) -O1 $(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)
