# 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-costso$(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__hwint.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

# 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__hwint.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__hwint.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__hwint.adb \
  s-intman.adb<libgnarl/s-intman__rtems.adb \
  s-intman.ads<libgnarl/s-intman__rtems.ads \
  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__rtems.adb \
  s-taspri.ads<libgnarl/s-taspri__posix.ads \
  s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
  s-interr.adb<libgnarl/s-interr__hwint.adb

  EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o

  ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
    EH_MECHANISM=-arm
  else
    EH_MECHANISM=-gcc
  endif

  ifeq ($(strip $(filter-out aarch64%,$(target_cpu))),)
    LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
    EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
  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)
