# Makefile.rtl for GNU Ada Compiler (GNAT).
#   Copyright (C) 2003-2021, 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-tasini$(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-putaim$(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 that 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-llltio$(objext) \
  a-lllwti$(objext) \
  a-lllzti$(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-nagefl$(objext) \
  a-nallfl$(objext) \
  a-nalofl$(objext) \
  a-nuaufl$(objext) \
  a-nashfl$(objext) \
  a-nuauco$(objext) \
  a-naliop$(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-strsto$(objext) \
  a-ststbo$(objext) \
  a-ststun$(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-sttebu$(objext) \
  a-stbuun$(objext) \
  a-stbubo$(objext) \
  a-stbuut$(objext) \
  a-stbufi$(objext) \
  a-stbufo$(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-tifiau$(objext) \
  a-tifiio$(objext) \
  a-tiflau$(objext) \
  a-tiflio$(objext) \
  a-tigeau$(objext) \
  a-tiinau$(objext) \
  a-tiinio$(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-wtfiau$(objext) \
  a-wtfiio$(objext) \
  a-wtflau$(objext) \
  a-wtflio$(objext) \
  a-wtgeau$(objext) \
  a-wtinau$(objext) \
  a-wtinio$(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-ztfiau$(objext) \
  a-ztfiio$(objext) \
  a-ztflau$(objext) \
  a-ztflio$(objext) \
  a-ztgeau$(objext) \
  a-ztinau$(objext) \
  a-ztinio$(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) \
  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-spogwa$(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) \
  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-aoinar$(objext) \
  s-aomoar$(objext) \
  s-aotase$(objext) \
  s-aridou$(objext) \
  s-arit32$(objext) \
  s-arit64$(objext) \
  s-assert$(objext) \
  s-atacco$(objext) \
  s-atocou$(objext) \
  s-atoope$(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-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-dlmopr$(objext) \
  s-dmotpr$(objext) \
  s-dourea$(objext) \
  s-dsaser$(objext) \
  s-elaall$(objext) \
  s-excdeb$(objext) \
  s-except$(objext) \
  s-exctab$(objext) \
  s-exctra$(objext) \
  s-exnint$(objext) \
  s-exnflt$(objext) \
  s-exnlfl$(objext) \
  s-exnllf$(objext) \
  s-exnlli$(objext) \
  s-expint$(objext) \
  s-explli$(objext) \
  s-expllu$(objext) \
  s-expmod$(objext) \
  s-exponn$(objext) \
  s-exponr$(objext) \
  s-expont$(objext) \
  s-exponu$(objext) \
  s-expuns$(objext) \
  s-fatflt$(objext) \
  s-fatgen$(objext) \
  s-fatlfl$(objext) \
  s-fatllf$(objext) \
  s-ficobl$(objext) \
  s-filatt$(objext) \
  s-fileio$(objext) \
  s-finmas$(objext) \
  s-finroo$(objext) \
  s-flocon$(objext) \
  s-fode32$(objext) \
  s-fode64$(objext) \
  s-fofi32$(objext) \
  s-fofi64$(objext) \
  s-fore_d$(objext) \
  s-fore_f$(objext) \
  s-forrea$(objext) \
  s-gearop$(objext) \
  s-genbig$(objext) \
  s-geveop$(objext) \
  s-gloloc$(objext) \
  s-htable$(objext) \
  s-imageb$(objext) \
  s-imaged$(objext) \
  s-imagef$(objext) \
  s-imagei$(objext) \
  s-imagen$(objext) \
  s-imager$(objext) \
  s-imageu$(objext) \
  s-imagew$(objext) \
  s-imde32$(objext) \
  s-imde64$(objext) \
  s-imen16$(objext) \
  s-imen32$(objext) \
  s-imenu8$(objext) \
  s-imfi32$(objext) \
  s-imfi64$(objext) \
  s-imgbiu$(objext) \
  s-imgboo$(objext) \
  s-imgcha$(objext) \
  s-imgflt$(objext) \
  s-imgint$(objext) \
  s-imglfl$(objext) \
  s-imgllf$(objext) \
  s-imgllb$(objext) \
  s-imglli$(objext) \
  s-imgllu$(objext) \
  s-imgllw$(objext) \
  s-imgrea$(objext) \
  s-imguns$(objext) \
  s-imguti$(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-pehage$(objext) \
  s-pooglo$(objext) \
  s-pooloc$(objext) \
  s-poosiz$(objext) \
  s-powflt$(objext) \
  s-powlfl$(objext) \
  s-powllf$(objext) \
  s-purexc$(objext) \
  s-putima$(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-shabig$(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-statxd$(objext) \
  s-strhas$(objext) \
  s-string$(objext) \
  s-ststop$(objext) \
  s-tasloc$(objext) \
  s-traceb$(objext) \
  s-traent$(objext) \
  s-trasym$(objext) \
  s-unstyp$(objext) \
  s-utf_32$(objext) \
  s-valboo$(objext) \
  s-valcha$(objext) \
  s-vade32$(objext) \
  s-vade64$(objext) \
  s-vaen16$(objext) \
  s-vaen32$(objext) \
  s-vaenu8$(objext) \
  s-vafi32$(objext) \
  s-vafi64$(objext) \
  s-valflt$(objext) \
  s-valint$(objext) \
  s-vallfl$(objext) \
  s-valllf$(objext) \
  s-vallli$(objext) \
  s-valllu$(objext) \
  s-valrea$(objext) \
  s-valued$(objext) \
  s-valuef$(objext) \
  s-valuei$(objext) \
  s-valuen$(objext) \
  s-valuer$(objext) \
  s-valueu$(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-widint$(objext) \
  s-widlli$(objext) \
  s-widllu$(objext) \
  s-widthi$(objext) \
  s-widthu$(objext) \
  s-widuns$(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) g-socpol$(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 \
  g-socpol.adb<libgnat/g-socpol__dummy.adb \
  g-socpol.ads<libgnat/g-socpol__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-nuauco.ads<libgnat/a-nuauco__x86.ads \
  s-atocou.adb<libgnat/s-atocou__x86.adb

X86_64_TARGET_PAIRS = \
  a-nuauco.ads<libgnat/a-nuauco__x86.ads \
  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)

GNATRTL_128BIT_PAIRS = \
  a-decima.ads<libgnat/a-decima__128.ads \
  a-tideio.adb<libgnat/a-tideio__128.adb \
  a-tifiio.adb<libgnat/a-tifiio__128.adb \
  a-tiinio.adb<libgnat/a-tiinio__128.adb \
  a-timoio.adb<libgnat/a-timoio__128.adb \
  a-wtdeio.adb<libgnat/a-wtdeio__128.adb \
  a-wtfiio.adb<libgnat/a-wtfiio__128.adb \
  a-wtinio.adb<libgnat/a-wtinio__128.adb \
  a-wtmoio.adb<libgnat/a-wtmoio__128.adb \
  a-ztdeio.adb<libgnat/a-ztdeio__128.adb \
  a-ztfiio.adb<libgnat/a-ztfiio__128.adb \
  a-ztinio.adb<libgnat/a-ztinio__128.adb \
  a-ztmoio.adb<libgnat/a-ztmoio__128.adb \
  i-cexten.ads<libgnat/i-cexten__128.ads \
  s-scaval.ads<libgnat/s-scaval__128.ads \
  s-scaval.adb<libgnat/s-scaval__128.adb

# Objects needed for 128-bit types
GNATRTL_128BIT_OBJS = \
  s-arit128$(objext) \
  s-casi128$(objext) \
  s-caun128$(objext) \
  s-exnllli$(objext) \
  s-expllli$(objext) \
  s-explllu$(objext) \
  s-fode128$(objext) \
  s-fofi128$(objext) \
  s-imde128$(objext) \
  s-imfi128$(objext) \
  s-imglllb$(objext) \
  s-imgllli$(objext) \
  s-imglllu$(objext) \
  s-imglllw$(objext) \
  s-pack65$(objext)  \
  s-pack66$(objext)  \
  s-pack67$(objext)  \
  s-pack68$(objext)  \
  s-pack69$(objext)  \
  s-pack70$(objext)  \
  s-pack71$(objext)  \
  s-pack72$(objext)  \
  s-pack73$(objext)  \
  s-pack74$(objext)  \
  s-pack75$(objext)  \
  s-pack76$(objext)  \
  s-pack77$(objext)  \
  s-pack78$(objext)  \
  s-pack79$(objext)  \
  s-pack80$(objext)  \
  s-pack81$(objext)  \
  s-pack82$(objext)  \
  s-pack83$(objext)  \
  s-pack84$(objext)  \
  s-pack85$(objext)  \
  s-pack86$(objext)  \
  s-pack87$(objext)  \
  s-pack88$(objext)  \
  s-pack89$(objext)  \
  s-pack90$(objext)  \
  s-pack91$(objext)  \
  s-pack92$(objext)  \
  s-pack93$(objext)  \
  s-pack94$(objext)  \
  s-pack95$(objext)  \
  s-pack96$(objext)  \
  s-pack97$(objext)  \
  s-pack98$(objext)  \
  s-pack99$(objext)  \
  s-pack100$(objext) \
  s-pack101$(objext) \
  s-pack102$(objext) \
  s-pack103$(objext) \
  s-pack104$(objext) \
  s-pack105$(objext) \
  s-pack106$(objext) \
  s-pack107$(objext) \
  s-pack108$(objext) \
  s-pack109$(objext) \
  s-pack110$(objext) \
  s-pack111$(objext) \
  s-pack112$(objext) \
  s-pack113$(objext) \
  s-pack114$(objext) \
  s-pack115$(objext) \
  s-pack116$(objext) \
  s-pack117$(objext) \
  s-pack118$(objext) \
  s-pack119$(objext) \
  s-pack120$(objext) \
  s-pack121$(objext) \
  s-pack122$(objext) \
  s-pack123$(objext) \
  s-pack124$(objext) \
  s-pack125$(objext) \
  s-pack126$(objext) \
  s-pack127$(objext) \
  s-vade128$(objext) \
  s-vafi128$(objext) \
  s-valllli$(objext) \
  s-vallllu$(objext) \
  s-widllli$(objext) \
  s-widlllu$(objext)

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

# 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-naliop.ads<libgnat/a-naliop__nolibm.ads \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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__posix.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-sopowa.adb<libgnat/g-sopowa__posix.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

  ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
    EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  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
    GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
  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-naliop.ads<libgnat/a-naliop__nolibm.ads \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
  g-io.adb<hie/g-io__vxworks-cert.adb \
  s-dorepr.adb<libgnat/s-dorepr__fma.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 \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-vxworks-$(ARCH_STR)-vthread.ads

  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-sopowa.adb<libgnat/g-sopowa__posix.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-naliop.ads<libgnat/a-naliop__nolibm.ads \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
  g-io.adb<hie/g-io__vxworks-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-sopowa.adb<libgnat/g-sopowa__posix.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))),)

  LIBGNAT_TARGET_PAIRS= \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  i-vxwork.ads<libgnat/i-vxwork__x86.ads \
  a-naliop.ads<libgnat/a-naliop__nolibm.ads \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.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__posix.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-sopowa.adb<libgnat/g-sopowa__posix.adb \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
  $(ATOMICS_TARGET_PAIRS)

  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)
     LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
     EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  else
     X86CPU=x86
     LIBGNAT_TARGET_PAIRS += $(X86_TARGET_PAIRS)
  endif

  TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb

  EH_MECHANISM=-gcc

  # 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-vxinco.o i-vxwork.o i-vxwoio.o
    endif
  endif

  EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
  EXTRA_GNATRTL_TASKING_OBJS += 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
    GCC_SPEC_FILES+=vxworks7-cert-rtp-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))),)

  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
  a-naliop.ads<libgnat/a-naliop__nolibm.ads \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.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__posix.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 \
  g-socthi.ads<libgnat/g-socthi__vxworks.ads \
  g-socthi.adb<libgnat/g-socthi__vxworks.adb \
  g-sopowa.adb<libgnat/g-sopowa__posix.adb \
  g-stsifd.adb<libgnat/g-stsifd__sockets.adb

  ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
    ARCH_STR=aarch64
    VX=vxworks7
    EH_MECHANISM=-gcc
    SIGTRAMP_OBJ=sigtramp-vxworks.o
    LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS) \
      a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
      s-dorepr.adb<libgnat/s-dorepr__fma.adb
    EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  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

  LIBGNAT_TARGET_PAIRS += s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads

  SVX=system-$(VX)

  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
  ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
    GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-qnx-aarch64.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.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)

  ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/sparcv8plus)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/sparcv9)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  EH_MECHANISM=-gcc
  MISCLIB = -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)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    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)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

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

  EH_MECHANISM=-gcc
  MISCLIB = -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)
    LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
    EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  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 \
  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 \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)

  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-freebsd.ads

  EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)

  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) \
  $(GNATRTL_128BIT_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)
  EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-dragonfly-x86_64.ads

  GNATLIB_SHARED = gnatlib-shared-dual

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

  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.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

  ifeq ($(strip $(filter-out s390x,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  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-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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  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 \
  a-nuaufl.ads<libgnat/a-nuaufl__wraplf.ads \
  a-nashfl.ads<libgnat/a-nashfl__wraplf.ads \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.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
  endif

  ifeq ($(strip $(filter-out lynxos178e,$(target_os))),)
    LIBGNAT_TARGET_PAIRS += \
    s-parame.ads<libgnat/s-parame__posix2008.ads \
    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-parame.ads<libgnat/s-parame__posix2008.ads \
  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

  ifeq ($(strip $(filter-out aarch64% riscv%,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += a-nallfl.ads<libgnat/a-nallfl__wraplf.ads
  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 \
    g-sopowa.adb<libgnat/g-sopowa__mingw.adb
  endif
  LIBGNAT_TARGET_PAIRS += \
  a-dirval.adb<libgnat/a-dirval__mingw.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) $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      SO_OPTS = -m64 -Wl,-soname,
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS) $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.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

  ifeq ($(strip $(filter-out mips64% mipsisa64%,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifneq ($(strip $(filter /64 /n32,$(MULTISUBDIR))),)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  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 = \
  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-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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 \
  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 \
  $(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

  ifeq ($(strip $(filter-out powerpc64%,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  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 \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  system.ads<libgnat/system-linux-arm.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  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-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
  s-intman.adb<libgnarl/s-intman__posix.adb \
  s-linux.ads<libgnarl/s-linux.ads \
  $(TRASYM_DWARF_UNIX_PAIRS) \
  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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-linux-arm.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_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
  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.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

  ifeq ($(strip $(filter-out sparc64 sparcv9,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  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-nuauco.ads<libgnat/a-nuauco__x86.ads \
  a-synbar.adb<libgnarl/a-synbar__posix.adb \
  a-synbar.ads<libgnarl/a-synbar__posix.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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) \
  $(GNATRTL_128BIT_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_NONTASKING_OBJS += $(GNATRTL_128BIT_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-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-hpux-ia64.ads

  EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
  EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_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) \
  $(GNATRTL_128BIT_PAIRS) \
  system.ads<libgnat/system-linux-alpha.ads

  TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb

  EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
  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) \
  $(GNATRTL_128BIT_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_NONTASKING_OBJS += $(GNATRTL_128BIT_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-parame.ads<libgnat/s-parame__posix2008.ads \
  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 \
  a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
  s-dorepr.adb<libgnat/s-dorepr__fma.adb \
  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

  ifeq ($(strip $(filter-out riscv64,$(target_cpu))),)
    ifneq ($(strip $(MULTISUBDIR)),/lib32)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/lib64)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    endif
  endif

  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)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    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)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    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 += \
      a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
      s-intman.adb<libgnarl/s-intman__posix.adb \
      s-osprim.adb<libgnat/s-osprim__posix.adb \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS) \
      system.ads<libgnat/system-darwin-ppc.ads

    ifeq ($(strip $(filter-out powerpc64,$(target_cpu))),)
      ifneq ($(strip $(MULTISUBDIR)),/ppc)
        LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
        EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      else
        SO_OPTS += -m32
      endif
    else
      ifeq ($(strip $(MULTISUBDIR)),/ppc64)
        SO_OPTS += -m64
        LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
        EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
      endif
    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 += \
      a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
      s-intman.adb<libgnarl/s-intman__susv3.adb \
      s-dorepr.adb<libgnat/s-dorepr__fma.adb \
      s-osprim.adb<libgnat/s-osprim__darwin.adb \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS) \
      $(GNATRTL_128BIT_PAIRS)

    EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    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

# Turn on shared gnatlib for specific vx7r2 targets for RTP runtimes. Once
# all targets are ported the target_cpu selector can be removed.
ifeq ($(strip $(filter-out vxworks7r2 powerpc64 x86_64 rtp rtp-smp, $(target_os) $(target_cpu) $(THREAD_KIND))),)
    GNATLIB_SHARED = gnatlib-shared-dual
    LIBRARY_VERSION := $(LIB_VERSION)
endif

LIBGNAT_TARGET_PAIRS += \
  interfac.ads<libgnat/interfac__2020.ads

# 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		\
  runtime.h $(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/memtrack.adb \
 libgna*/*.gpr \
 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-linux.ads  s-vxwext.adb s-vxwext.ads s-win32.ads  s-winext.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-strcom.adb s-strcom.ads s-thread.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) libgnarl/thread.c, \
	  $(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 \
	  $(RM) $$f ; \
	done
# Copy new target dependent sources
	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	          $(LN_S) $(GNAT_SRC)/$(word 2,$(subst <, ,$(PAIR))) \
	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
# And finally generate libgnat.lst and libgnarl.lst
	@for f in \
	  $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.ads,$(F))) \
	  $(foreach F,$(GNATRTL_TASKING_OBJS),$(subst $(objext),.adb,$(F))); \
	do \
	  if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnarl.lst; fi \
	done
	@echo thread.c >> $(RTSDIR)/libgnarl.lst
	@for f in \
	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.ads,$(F))) \
	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.adb,$(F))); \
	do \
	  if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnat.lst; fi \
	done
# s-oscons.ads is generated later, so hardcode it here
	@echo s-oscons.ads >> $(RTSDIR)/libgnat.lst
	@for f in $(LIBGNAT_SRCS); do \
	  echo $$f >> $(RTSDIR)/libgnat.lst; \
	done

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

# Need to keep functions ordered on g-debpoo.o since labels are used to
# exclude subprograms from traceback computation.

g-debpoo.o: g-debpoo.adb g-debpoo.ads
	$(ADAC) -c $(ALL_ADAFLAGS) $(NO_REORDER_ADAFLAGS) $(ADA_INCLUDES) \
	  $< $(OUTPUT_OPTION)
