# Makefile for GNU Ada Compiler (GNAT).
#   Copyright (C) 1994-2012 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/>.

# The makefile built from this file lives in the language subdirectory.
# Its purpose is to provide support for:
#
# 1) recursion where necessary, and only then (building .o's), and
# 2) building and debugging cc1 from the language subdirectory, and
# 3) nothing else.
#
# The parent makefile handles all other chores, with help from the
# language makefile fragment, of course.
#
# The targets for external use are:
# all, TAGS, ???mostlyclean, ???clean.

# This makefile will only work with Gnu make.
# The rules are written assuming a minimum subset of tools are available:
#
# Required:
#      MAKE:    Only Gnu make will work.
#      MV:      Must accept (at least) one, maybe wildcard, source argument,
#               a file or directory destination, and support creation/
#               modification date preservation.  Gnu mv -f works.
#      RM:      Must accept an arbitrary number of space separated file
#               arguments, or one wildcard argument. Gnu rm works.
#      RMDIR:   Must delete a directory and all its contents. Gnu rm -rf works.
#      ECHO:    Must support command line redirection. Any Unix-like
#               shell will typically provide this, otherwise a custom version
#               is trivial to write.
#      AR:      Gnu ar works.
#      MKDIR:   Gnu mkdir works.
#      CHMOD:   Gnu chmod works.
#      true:    Does nothing and returns a normal successful return code.
#      pwd:     Prints the current directory on stdout.
#      cd:      Change directory.
#
# Optional:
#      BISON:   Gnu bison works.
#      FLEX:    Gnu flex works.
#      Other miscellaneous tools for obscure targets.

# Suppress smart makes who think they know how to automake Yacc files
.y.c:

# Variables that exist for you to override.
# See below for how to change them for certain systems.

# Various ways of specifying flags for compilations:
# CFLAGS is for the user to override to, e.g., do a bootstrap with -O2.
# BOOT_CFLAGS is the value of CFLAGS to pass
# to the stage2 and stage3 compilations
CFLAGS = -g
BOOT_CFLAGS = -O $(CFLAGS)
# These exists to be overridden by the t-* files, respectively.
T_CFLAGS =

CC = cc
BISON = bison
BISONFLAGS =
ECHO = echo
LEX = flex
LEXFLAGS =
CHMOD = chmod
LN = ln
LN_S = ln -s
CP = cp -p
MV = mv -f
RM = rm -f
RMDIR = rm -rf
MKDIR = mkdir -p
AR = ar
AR_FLAGS = rc
LS = ls
RANLIB = @RANLIB@
RANLIB_FLAGS = @ranlib_flags@
AWK = @AWK@

COMPILER = $(CC)
COMPILER_FLAGS = $(CFLAGS)

SHELL = @SHELL@
PWD_COMMAND = $${PWDCMD-pwd}
# How to copy preserving the date
INSTALL_DATA_DATE = cp -p
MAKEINFO = makeinfo
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
GNATBIND_FLAGS = -static -x
ADA_CFLAGS =
ADAFLAGS = -W -Wall -gnatpg -gnata
FORCE_DEBUG_ADAFLAGS = -g
NO_SIBLING_ADAFLAGS = -fno-optimize-sibling-calls
NO_REORDER_ADAFLAGS = -fno-toplevel-reorder
GNATLIBFLAGS = -W -Wall -gnatpg -nostdinc
GNATLIBCFLAGS = -g -O2
PICFLAG_FOR_TARGET = @PICFLAG_FOR_TARGET@

# Pretend that _Unwind_GetIPInfo is available for the target by default.  This
# should be autodetected during the configuration of libada and passed down to
# here, but we need something for --disable-libada and hope for the best.
GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) \
	-fexceptions -DIN_RTS -DHAVE_GETIPINFO
ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS)
THREAD_KIND = native
THREADSLIB =
GMEM_LIB =
MISCLIB =
OUTPUT_OPTION = @OUTPUT_OPTION@

objext = .o
exeext =
arext  = .a
soext  = .so
shext  =
hyphen = -

# Define this as & to perform parallel make on a Sequent.
# Note that this has some bugs, and it seems currently necessary
# to compile all the gen* files first by hand to avoid erroneous results.
P =

# This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
# It specifies -B./.
# It also specifies -B$(tooldir)/ to find as and ld for a cross compiler.
GCC_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS)

# Tools to use when building a cross-compiler.
# These are used because `configure' appends `cross-make'
# to the makefile when making a cross-compiler.

# We don't use cross-make.  Instead we use the tools from the build tree,
# if they are available.
# program_transform_name and objdir are set by configure.in.
program_transform_name =
objdir = .

target_alias=@target_alias@
target=@target@
xmake_file = @xmake_file@
tmake_file = @tmake_file@
host_canonical=@host@
target_cpu_default=@target_cpu_default@
#version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < $(srcdir)/version.c`
#mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c`

# Directory where sources are, from where we are.
VPATH = $(srcdir)/ada

fsrcdir := $(shell cd $(srcdir);${PWD_COMMAND})
fsrcpfx := $(shell cd $(srcdir);${PWD_COMMAND})/
fcurdir := $(shell ${PWD_COMMAND})
fcurpfx := $(shell ${PWD_COMMAND})/

# Top build directory, relative to here.
top_builddir = ../..

# Internationalization library.
LIBINTL = @LIBINTL@
LIBINTL_DEP = @LIBINTL_DEP@

# Character encoding conversion library.
LIBICONV = @LIBICONV@
LIBICONV_DEP = @LIBICONV_DEP@

# Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@

# List extra gnattools
EXTRA_GNATTOOLS =

# List of target dependent sources, overridden below as necessary
TARGET_ADA_SRCS =

# Type of tools build we are doing; default is not compiling tools.
TOOLSCASE =

# Multilib handling
MULTISUBDIR =
RTSDIR = rts$(subst /,_,$(MULTISUBDIR))

# Link flags used to build gnat tools.  By default we prefer to statically
# link with libgcc to avoid a dependency on shared libgcc (which is tricky
# to deal with as it may conflict with the libgcc provided by the system).
GCC_LINK_FLAGS=-static-libgcc

# End of variables for you to override.

all: all.indirect

# This tells GNU Make version 3 not to put all variables in the environment.
.NOEXPORT:

# target overrides
ifneq ($(tmake_file),)
include $(tmake_file)
endif

# host overrides
ifneq ($(xmake_file),)
include $(xmake_file)
endif

# Now figure out from those variables how to compile and link.

all.indirect: Makefile ../gnat1$(exeext)

# IN_GCC is meant to distinguish between code compiled into GCC itself, i.e.
# for the host, and the rest.  But we also use it for the tools (link.c) and
# even break the host/target wall by using it for the library (targext.c).
# autoconf inserts -DCROSS_DIRECTORY_STRUCTURE if we are building a cross
# compiler which does not use the native libraries and headers.
INTERNAL_CFLAGS = @CROSS@ -DIN_GCC

# This is the variable actually used when we compile.
ALL_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS)

# Likewise.
ALL_CPPFLAGS = $(CPPFLAGS)

# Used with $(COMPILER).
ALL_COMPILERFLAGS = $(ALL_CFLAGS)

# This is where we get libiberty.a from.
LIBIBERTY = ../../libiberty/libiberty.a

# We need to link against libbacktrace because diagnostic.c in
# libcommon.a uses it.
LIBBACKTRACE = ../../libbacktrace/.libs/libbacktrace.a

# How to link with both our special library facilities
# and the system's installed libraries.
LIBS = $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) $(LIBIBERTY) $(SYSLIBS)
LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY)
# Default is no TGT_LIB; one might be passed down or something
TGT_LIB =
TOOLS_LIBS = targext.o link.o ../../ggc-none.o ../../libcommon-target.a \
  ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \
  ../../../libbacktrace/.libs/libbacktrace.a ../../../libiberty/libiberty.a \
  $(SYSLIBS) $(TGT_LIB)

# Convert the target variable into a space separated list of architecture,
# manufacturer, and operating system and assign each of those to its own
# variable.
host:=$(subst -, ,$(host_canonical))
targ:=$(subst -, ,$(target))
arch:=$(word 1,$(targ))
ifeq ($(words $(targ)),2)
  manu:=
  osys:=$(word 2,$(targ))
else
  manu:=$(word 2,$(targ))
  osys:=$(word 3,$(targ))
endif

# Specify the directories to be searched for header files.
# Both . and srcdir are used, in that order,
# so that tm.h and config.h will be found in the compilation
# subdirectory rather than in the source directory.
INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(srcdir)/../include $(GMPINC)

ADA_INCLUDES = -I- -I. -I$(srcdir)/ada

# Likewise, but valid for subdirectories of the current dir.
# FIXME: for VxWorks, we cannot add $(fsrcdir) because the regs.h file in
# that directory conflicts with a system header file.
ifneq ($(findstring vxworks,$(osys)),)
  INCLUDES_FOR_SUBDIR = -iquote . -iquote .. -iquote ../.. \
			-iquote $(fsrcdir)/ada \
			-I$(fsrcdir)/../include $(GMPINC)
else
  INCLUDES_FOR_SUBDIR = -iquote . -iquote .. -iquote ../.. \
			-iquote $(fsrcdir)/ada -iquote $(fsrcdir) \
			-I$(fsrcdir)/../include $(GMPINC)
endif

ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada

# Avoid a lot of time thinking about remaking Makefile.in and *.def.
.SUFFIXES: .in .def

# Say how to compile Ada programs.
.SUFFIXES: .ada .adb .ads .asm

# Always use -I$(srcdir)/config when compiling.
.asm.o:
	$(CC) -c -x assembler $< $(OUTPUT_OPTION)

.c.o:
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) \
	  $(INCLUDES) $< $(OUTPUT_OPTION)

.adb.o:
	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)

.ads.o:
	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(OUTPUT_OPTION)

# how to regenerate this file
Makefile: ../config.status $(srcdir)/ada/gcc-interface/Makefile.in $(srcdir)/ada/Makefile.in $(srcdir)/version.c
	cd ..; \
	LANGUAGES="$(CONFIG_LANGUAGES)" \
	CONFIG_HEADERS= \
	CONFIG_FILES="ada/gcc-interface/Makefile ada/Makefile" $(SHELL) config.status

# This tells GNU make version 3 not to export all the variables
# defined in this file into the environment.
.NOEXPORT:

# Lists of files for various purposes.

GNATLINK_OBJS = gnatlink.o \
 a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
 gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
 osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
 sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \
 types.o validsw.o widechar.o

GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
 atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
 erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
 gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
 make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \
 mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \
 output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \
 prj-conf.o prj-pp.o prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o \
 prj-proc.o prj-strt.o prj-tree.o prj-util.o restrict.o rident.o s-exctab.o \
 s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
 s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
 sinput-p.o snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
 switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o uintp.o \
 uname.o urealp.o usage.o widechar.o \
 $(EXTRA_GNATMAKE_OBJS)

# Make arch match the current multilib so that the RTS selection code
# picks up the right files. For a given target this must be coherent
# with MULTILIB_DIRNAMES defined in gcc/config/target/t-*.

ifeq ($(strip $(filter-out %x86_64, $(arch))),)
  ifeq ($(strip $(MULTISUBDIR)),/32)
    arch:=i686
  else
    ifeq ($(strip $(MULTISUBDIR)),/x32)
      arch:=x32
    endif
  endif
endif

# ???: handle more multilib targets

# 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<a-intnam-dummy.ads \
s-inmaop.adb<s-inmaop-dummy.adb \
s-intman.adb<s-intman-dummy.adb \
s-osinte.ads<s-osinte-dummy.ads \
s-osprim.adb<s-osprim-posix.adb \
s-taprop.adb<s-taprop-dummy.adb \
s-taspri.ads<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=

# 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

# default value for gnatmake's target dependent file
MLIB_TGT = mlib-tgt

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

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

DUMMY_SOCKETS_TARGET_PAIRS = \
  g-socket.adb<g-socket-dummy.adb \
  g-socket.ads<g-socket-dummy.ads \
  g-socthi.adb<g-socthi-dummy.adb \
  g-socthi.ads<g-socthi-dummy.ads \
  g-sothco.adb<g-sothco-dummy.adb \
  g-sothco.ads<g-sothco-dummy.ads

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

ATOMICS_TARGET_PAIRS = \
  a-stunau.adb<a-stunau-shared.adb \
  a-suteio.adb<a-suteio-shared.adb \
  a-strunb.ads<a-strunb-shared.ads \
  a-strunb.adb<a-strunb-shared.adb \
  a-stwiun.adb<a-stwiun-shared.adb \
  a-stwiun.ads<a-stwiun-shared.ads \
  a-swunau.adb<a-swunau-shared.adb \
  a-swuwti.adb<a-swuwti-shared.adb \
  a-stzunb.adb<a-stzunb-shared.adb \
  a-stzunb.ads<a-stzunb-shared.ads \
  a-szunau.adb<a-szunau-shared.adb \
  a-szuzti.adb<a-szuzti-shared.adb

ATOMICS_BUILTINS_TARGET_PAIRS = \
  s-atocou.adb<s-atocou-builtin.adb

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

X86_TARGET_PAIRS = \
  a-numaux.ads<a-numaux-x86.ads \
  a-numaux.adb<a-numaux-x86.adb \
  s-atocou.adb<s-atocou-x86.adb

X86_64_TARGET_PAIRS = \
  a-numaux.ads<a-numaux-x86.ads \
  a-numaux.adb<a-numaux-x86.adb \
  s-atocou.adb<s-atocou-builtin.adb

LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))

# Additionnal object files from C source to be added to libgnat.
EXTRA_LIBGNAT_OBJS=
# Additionnal C source file to be added to libgnat without corresponding object
# file (included files).
EXTRA_LIBGNAT_SRCS=

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

# m68k VxWorks
ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-m68k.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  system.ads<system-vxworks-m68k.ads

  TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-tratas.adb<s-tratas-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif
endif

# PowerPC and e500v2 VxWorks
ifeq ($(strip $(filter-out e500% powerpc% wrs vxworks,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-vxwork.ads<s-vxwork-ppc.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<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 kernel mode.

  ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
      s-stchop.ads<s-stchop-limit.ads \
      s-stchop.adb<s-stchop-vxworks.adb
  endif

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tratas.adb<s-tratas-default.adb \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif

  ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-vxwext.ads<s-vxwext-rtp.ads \
    s-vxwext.adb<s-vxwext-rtp.adb \
    s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
    system.ads<system-vxworks-ppc-rtp.ads

    EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
  else
    ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-mudido.adb<s-mudido-affinity.adb \
      s-vxwext.ads<s-vxwext-rtp.ads \
      s-vxwext.adb<s-vxwext-rtp-smp.adb \
      s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
      system.ads<system-vxworks-ppc-rtp.ads

      EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
      EXTRA_LIBGNAT_OBJS+=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.adb \
        s-mudido.adb<s-mudido-affinity.adb \
        s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
        s-vxwext.ads<s-vxwext-kernel.ads \
        s-vxwext.adb<s-vxwext-kernel-smp.adb \
        system.ads<system-vxworks-ppc-kernel.ads

        EH_MECHANISM=-gcc
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.adb \
        s-tpopsp.adb<s-tpopsp-vxworks.adb

        ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
          EH_MECHANISM=-gcc
          LIBGNAT_TARGET_PAIRS += \
          s-vxwext.ads<s-vxwext-kernel.ads \
          s-vxwext.adb<s-vxwext-kernel.adb \
          system.ads<system-vxworks-ppc-kernel.ads
        else
          LIBGNAT_TARGET_PAIRS += \
          system.ads<system-vxworks-ppc.ads
        endif
      endif
      EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-vxwexc.o
      EXTRA_LIBGNAT_OBJS+=sigtramp-ppcvxw.o
    endif
  endif

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

# PowerPC and e500v2 VxWorks 653
ifeq ($(strip $(filter-out powerpc% e500v2 wrs vxworksae,$(targ))),)
  # target pairs for vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-elchha.adb<a-elchha-vxworks-ppc-full.adb \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  g-io.adb<g-io-vxworks-ppc-cert.adb \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-ae653.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwext.adb<s-vxwext-noints.adb \
  s-vxwext.ads<s-vxwext-vthreads.ads \
  s-vxwork.ads<s-vxwork-ppc.ads \
  system.ads<system-vxworks-ppc-vthread.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

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

  EXTRA_LIBGNAT_OBJS+=sigtramp-ppcvxw.o

  # Extra pairs for the vthreads runtime
  ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-thread.adb<s-thread-ae653.adb \
    $(DUMMY_SOCKETS_TARGET_PAIRS)

    GNATRTL_SOCKETS_OBJS =
    EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o
  else
    LIBGNAT_TARGET_PAIRS += \
    g-socthi.ads<g-socthi-vxworks.ads \
    g-socthi.adb<g-socthi-vxworks.adb \
    g-stsifd.adb<g-stsifd-sockets.adb
  endif

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tratas.adb<s-tratas-default.adb \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif
endif

# PowerPC and e500v2 VxWorks MILS
ifeq ($(strip $(filter-out e500% powerpc% wrs vxworksmils,$(targ))),)
  # target pairs for vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-elchha.adb<a-elchha-vx6-raven-cert.adb \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  g-io.adb<g-io-vxworks-ppc-cert.adb \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-ae653.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-thread.adb<s-thread-ae653.adb \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-ppc.ads \
  system.ads<system-vxworks-ppc-mils.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS) \
  $(DUMMY_SOCKETS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o sigtramp-ppcvxw.o
  GNATRTL_SOCKETS_OBJS =

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tratas.adb<s-tratas-default.adb \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif
endif

# VxWorksae / VxWorks 653 for x86 (vxsim) - ?? VxWorks mils not implemented
ifeq ($(strip $(filter-out %86 wrs vxworksae vxworksmils,$(targ))),)
  # target pairs for kernel + vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-elchha.adb<a-elchha-vxworks-ppc-full.adb \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-sytaco.ads<1asytaco.ads \
  a-sytaco.adb<1asytaco.adb \
  g-io.adb<g-io-vxworks-ppc-cert.adb \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-ae653.ads \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwext.adb<s-vxwext-noints.adb \
  s-vxwext.ads<s-vxwext-vthreads.ads \
  s-vxwork.ads<s-vxwork-x86.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<system-vxworks-x86.ads

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

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

  # Extra pairs for the vthreads runtime
  ifeq ($(strip $(filter-out vthreads,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-thread.adb<s-thread-ae653.adb \
    $(DUMMY_SOCKETS_TARGET_PAIRS)

    GNATRTL_SOCKETS_OBJS =
    EXTRA_GNATRTL_NONTASKING_OBJS += s-thread.o
  else
    LIBGNAT_TARGET_PAIRS += \
    g-socthi.ads<g-socthi-vxworks.ads \
    g-socthi.adb<g-socthi-vxworks.adb \
    g-stsifd.adb<g-stsifd-sockets.adb
  endif

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tratas.adb<s-tratas-default.adb \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif
endif

# Sparc VxWorks
ifeq ($(strip $(filter-out sparc% leon% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out sparc erc32 leon leon3, $(arch))),)
    # 32-bits
    LIBGNAT_TARGET_PAIRS += \
    s-vxwork.ads<s-vxwork-sparc.ads \
    system.ads<system-vxworks-sparc-kernel.ads
  else
    # 64-bits
    LIBGNAT_TARGET_PAIRS += \
    s-vxwork.ads<s-vxwork-sparcv9.ads \
    system.ads<system-vxworks-sparcv9.ads
  endif

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

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

# x86 VxWorks
ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  i-vxwork.ads<i-vxwork-x86.ads \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-vxwork.ads<s-vxwork-x86.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out yes,$(TRACE))),)
    LIBGNAT_TARGET_PAIRS += \
    s-traces.adb<s-traces-default.adb \
    s-trafor.adb<s-trafor-default.adb \
    s-trafor.ads<s-trafor-default.ads \
    s-tratas.adb<s-tratas-default.adb \
    s-tfsetr.adb<s-tfsetr-vxworks.adb
  endif

  ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-vxwext.ads<s-vxwext-rtp.ads \
    s-vxwext.adb<s-vxwext-rtp.adb \
    s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
    system.ads<system-vxworks-x86-rtp.ads

    EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
  else
    ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-mudido.adb<s-mudido-affinity.adb \
      s-vxwext.ads<s-vxwext-rtp.ads \
      s-vxwext.adb<s-vxwext-rtp-smp.adb \
      s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
      system.ads<system-vxworks-x86-rtp.ads

      EXTRA_GNATRTL_NONTASKING_OBJS=s-vxwexc.o
      EXTRA_LIBGNAT_OBJS+=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.adb \
        s-mudido.adb<s-mudido-affinity.adb \
        s-tpopsp.adb<s-tpopsp-vxworks-tls.adb \
        s-vxwext.ads<s-vxwext-kernel.ads \
        s-vxwext.adb<s-vxwext-kernel-smp.adb \
        system.ads<system-vxworks-x86-kernel.ads
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.adb \
        s-tpopsp.adb<s-tpopsp-vxworks.adb

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

      EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o s-vxwexc.o
    endif
  endif
  EXTRA_GNATRTL_TASKING_OBJS += s-vxwork.o s-vxwext.o

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

# ARM VxWorks
ifeq ($(strip $(filter-out arm% coff wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-arm.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  system.ads<system-vxworks-arm.ads

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

# MIPS VxWorks
ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  s-inmaop.adb<s-inmaop-vxworks.adb \
  s-interr.adb<s-interr-hwint.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  s-osinte.adb<s-osinte-vxworks.adb \
  s-osinte.ads<s-osinte-vxworks.ads \
  s-osprim.adb<s-osprim-vxworks.adb \
  s-parame.ads<s-parame-vxworks.ads \
  s-parame.adb<s-parame-vxworks.adb \
  s-stchop.ads<s-stchop-limit.ads \
  s-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tasinf.ads<s-tasinf-vxworks.ads \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-mips.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  system.ads<system-vxworks-mips.ads

  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
  indepsw.adb<indepsw-gnu.adb

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

  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

ifeq ($(strip $(filter-out arm% linux-androideabi,$(arch) $(osys)-$(word 4,$(targ)))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-android.adb \
  s-osinte.ads<s-osinte-android.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-linux-armel.ads \
  $(DUMMY_SOCKETS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# Sparc Solaris
ifeq ($(strip $(filter-out sparc% sun solaris%,$(targ))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-solaris.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-solaris.adb \
  s-mudido.adb<s-mudido-affinity.adb \
  s-osinte.adb<s-osinte-solaris.adb \
  s-osinte.ads<s-osinte-solaris.ads \
  s-osprim.adb<s-osprim-solaris.adb \
  s-taprop.adb<s-taprop-solaris.adb \
  s-tasinf.adb<s-tasinf-solaris.adb \
  s-tasinf.ads<s-tasinf-solaris.ads \
  s-taspri.ads<s-taspri-solaris.ads \
  s-tpopsp.adb<s-tpopsp-solaris.adb \
  g-soliop.ads<g-soliop-solaris.ads

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-solaris-sparc.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-solaris-sparcv9.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  ifeq ($(strip $(filter-out sparc sun solaris%,$(targ))),)
    ifeq ($(strip $(MULTISUBDIR)),/sparcv9)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/sparcv8plus)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    endif
  endif

  TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb

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

  ifeq ($(strip $(filter-out pthread PTHREAD,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-solaris.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-posix.adb \
    s-osinte.adb<s-osinte-posix.adb \
    s-osinte.ads<s-osinte-solaris-posix.ads \
    s-osprim.adb<s-osprim-solaris.adb \
    s-taprop.adb<s-taprop-posix.adb \
    s-taspri.ads<s-taspri-posix.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    g-soliop.ads<g-soliop-solaris.ads \
    system.ads<system-solaris-sparc.ads

    THREADSLIB = -lposix4 -lpthread
  endif

  ifeq ($(strip $(filter-out m64,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS = $(LIBGNAT_TARGET_PAIRS_64)
  endif
endif

# x86 and x86-64 solaris
ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-solaris.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-solaris.adb \
  s-mudido.adb<s-mudido-affinity.adb \
  s-osinte.adb<s-osinte-solaris.adb \
  s-osinte.ads<s-osinte-solaris.ads \
  s-osprim.adb<s-osprim-solaris.adb \
  s-taprop.adb<s-taprop-solaris.adb \
  s-tasinf.adb<s-tasinf-solaris.adb \
  s-tasinf.ads<s-tasinf-solaris.ads \
  s-taspri.ads<s-taspri-solaris.ads \
  s-tpopsp.adb<s-tpopsp-solaris.adb \
  g-soliop.ads<g-soliop-solaris.ads \
  $(ATOMICS_TARGET_PAIRS)

  LIBGNAT_TARGET_PAIRS_32 = \
  $(X86_TARGET_PAIRS) \
  system.ads<system-solaris-x86.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  $(X86_64_TARGET_PAIRS) \
  system.ads<system-solaris-x86_64.ads

  ifeq ($(strip $(filter-out %86 solaris2%,$(arch) $(osys))),)
    ifeq ($(strip $(MULTISUBDIR)),/amd64)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    endif
  else
    ifeq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    endif
  endif

  TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb

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

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

# x86 Linux
ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  a-synbar.adb<a-synbar-posix.adb \
  a-synbar.ads<a-synbar-posix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-tpopsp.adb<s-tpopsp-tls.adb \
  g-sercom.adb<g-sercom-linux.adb \
  a-exetim.adb<a-exetim-posix.adb \
  a-exetim.ads<a-exetim-default.ads \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  $(ATOMICS_TARGET_PAIRS)

  LIBGNAT_TARGET_PAIRS_32 = \
  $(X86_TARGET_PAIRS) \
  system.ads<system-linux-x86.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  $(X86_64_TARGET_PAIRS) \
  system.ads<system-linux-x86_64.ads

  ifeq ($(strip $(MULTISUBDIR)),/64)
    LIBGNAT_TARGET_PAIRS += $(LIBGNAT_TARGET_PAIRS_64)
  else
    LIBGNAT_TARGET_PAIRS += $(LIBGNAT_TARGET_PAIRS_32)
  endif

  ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-osinte.ads<s-osinte-linux-xenomai.ads \
    s-osprim.adb<s-osprim-linux-xenomai.adb \
    s-taprop.adb<s-taprop-linux-xenomai.adb \
    s-taspri.ads<s-taspri-linux-xenomai.ads
  else
    LIBGNAT_TARGET_PAIRS += \
    s-mudido.adb<s-mudido-affinity.adb \
    s-osinte.ads<s-osinte-linux.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-taprop.adb<s-taprop-linux.adb \
    s-tasinf.ads<s-tasinf-linux.ads \
    s-tasinf.adb<s-tasinf-linux.adb \
    s-taspri.ads<s-taspri-posix.ads
  endif

  EH_MECHANISM=-gcc
  THREADSLIB = -lpthread -lrt
  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# x86 kfreebsd
ifeq ($(strip $(filter-out %86 kfreebsd%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-freebsd.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<system-freebsd-x86.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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)
  MISCLIB = -lutil
endif

ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-freebsd.ads \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-freebsd-x86_64.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# x86 FreeBSD
ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-freebsd.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-freebsd.adb \
  s-osinte.ads<s-osinte-freebsd.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_TARGET_PAIRS) \
  system.ads<system-freebsd-x86.ads

  TOOLS_TARGET_PAIRS = \
  mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
  GNATLIB_SHARED = gnatlib-shared-dual

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

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

# x86-64 FreeBSD
ifeq ($(strip $(filter-out %86_64 freebsd%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-freebsd.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-freebsd.adb \
  s-osinte.ads<s-osinte-freebsd.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<system-freebsd-x86_64.ads

  TOOLS_TARGET_PAIRS = \
  mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
  GNATLIB_SHARED = gnatlib-shared-dual

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

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

# S390 Linux
ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-linux-s390.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-linux-s390x.ads

  ifeq ($(strip $(filter-out s390x,$(arch))),)
    ifeq ($(strip $(MULTISUBDIR)),/32)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    endif
  else
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-excpol.adb<a-excpol-abort.adb \
  a-intnam.ads<a-intnam-hpux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-interr.adb<s-interr-sigaction.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-hpux-dce.adb \
  s-osinte.ads<s-osinte-hpux-dce.ads \
  s-parame.ads<s-parame-hpux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-hpux-dce.adb \
  s-taspri.ads<s-taspri-hpux-dce.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb \
  system.ads<system-hpux.ads

  EH_MECHANISM=-gcc
endif

# HP/PA HP-UX 11
ifeq ($(strip $(filter-out hppa% hp hpux11%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-hpux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-hpux.ads \
  s-parame.ads<s-parame-hpux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-traceb.adb<s-traceb-hpux.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-hpux.ads

  TOOLS_TARGET_PAIRS = mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb
  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%,$(manu) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-aix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-aix.adb \
  s-osinte.ads<s-osinte-aix.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-aix.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-aix64.ads

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

  THREADSLIB = -lpthreads
  EH_MECHANISM=-gcc
  TOOLS_TARGET_PAIRS += \
  mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb

  GMEM_LIB = gmemlib
endif

# RTEMS
ifeq ($(strip $(filter-out rtems%,$(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  system.ads<system-rtems.ads \
  a-intnam.ads<a-intnam-rtems.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-rtems.adb \
  s-osinte.ads<s-osinte-rtems.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-parame.adb<s-parame-rtems.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-rtems.adb \
  s-stchop.adb<s-stchop-rtems.adb \
  s-interr.adb<s-interr-hwint.adb
endif

# OpenVMS (host)
ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(host))),)

soext  = .exe
hyphen = _
LN = cp -p
LN_S = cp -p

endif

# OpenVMS (target)
ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
    a-caldel.adb<a-caldel-vms.adb \
    a-calend.adb<a-calend-vms.adb \
    a-calend.ads<a-calend-vms.ads \
    a-dirval.adb<a-dirval-vms.adb \
    a-excpol.adb<a-excpol-abort.adb \
    a-intnam.ads<a-intnam-vms.ads \
    a-numaux.ads<a-numaux-vms.ads \
    g-expect.adb<g-expect-vms.adb \
    g-socthi.ads<g-socthi-vms.ads \
    g-socthi.adb<g-socthi-vms.adb \
    g-stsifd.adb<g-stsifd-sockets.adb \
    i-cstrea.adb<i-cstrea-vms.adb \
    memtrack.adb<memtrack-vms_64.adb \
    s-auxdec.ads<s-auxdec-vms_64.ads \
    s-inmaop.adb<s-inmaop-vms.adb \
    s-interr.adb<s-interr-vms.adb \
    s-intman.adb<s-intman-vms.adb \
    s-intman.ads<s-intman-vms.ads \
    s-memory.adb<s-memory-vms_64.adb \
    s-memory.ads<s-memory-vms_64.ads \
    s-ransee.adb<s-ransee-vms.adb \
    s-osprim.adb<s-osprim-vms.adb \
    s-osprim.ads<s-osprim-vms.ads \
    s-osinte.adb<s-osinte-vms.adb \
    s-osinte.ads<s-osinte-vms.ads \
    s-taprop.adb<s-taprop-vms.adb \
    s-tasdeb.adb<s-tasdeb-vms.adb \
    s-taspri.ads<s-taspri-vms.ads \
    s-tpopsp.adb<s-tpopsp-vms.adb \
    s-tpopde.adb<s-tpopde-vms.adb \
    s-tpopde.ads<s-tpopde-vms.ads

  ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
    LIBGNAT_TARGET_PAIRS += \
      g-enblsp.adb<g-enblsp-vms-ia64.adb \
      g-trasym.adb<g-trasym-vms-ia64.adb \
      s-asthan.adb<s-asthan-vms-ia64.adb \
      s-auxdec.adb<s-auxdec-vms-ia64.adb \
      s-vaflop.adb<s-vaflop-vms-ia64.adb \
      system.ads<system-vms-ia64.ads \
      s-parame.ads<s-parame-vms-ia64.ads \
      $(ATOMICS_TARGET_PAIRS) \
      $(ATOMICS_BUILTINS_TARGET_PAIRS)

    EXTRA_LIBGNAT_SRCS+=tb-ivms.c
    override GNATRTL_ALTIVEC_OBJS=

    TOOLS_TARGET_PAIRS= \
      mlib-tgt-specific.adb<mlib-tgt-specific-vms-ia64.adb \
      symbols.adb<symbols-vms.adb \
      symbols-processing.adb<symbols-processing-vms-ia64.adb
  else
    ifeq ($(strip $(filter-out alpha64 dec vms% openvms% alphavms%,$(targ))),)
      LIBGNAT_TARGET_PAIRS += \
        g-enblsp.adb<g-enblsp-vms-alpha.adb \
        g-trasym.adb<g-trasym-vms-alpha.adb \
        s-asthan.adb<s-asthan-vms-alpha.adb \
        s-auxdec.adb<s-auxdec-vms-alpha.adb \
        s-traent.adb<s-traent-vms.adb \
        s-traent.ads<s-traent-vms.ads \
        s-vaflop.adb<s-vaflop-vms-alpha.adb \
        system.ads<system-vms_64.ads \
	s-parame.ads<s-parame-vms-alpha.ads \
        $(ATOMICS_TARGET_PAIRS) \
        $(ATOMICS_BUILTINS_TARGET_PAIRS)

    EXTRA_LIBGNAT_SRCS+=tb-alvms.c

    TOOLS_TARGET_PAIRS= \
      mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
      symbols.adb<symbols-vms.adb \
      symbols-processing.adb<symbols-processing-vms-alpha.adb
    endif
  endif

  EXTRA_GNATMAKE_OBJS = mlib-tgt-vms_common.o

  GMEM_LIB = gmemlib
  EH_MECHANISM=-gcc
  GNATLIB_SHARED=gnatlib-shared-vms
  EXTRA_GNATRTL_NONTASKING_OBJS+=s-po32gl.o
  EXTRA_GNATRTL_TASKING_OBJS=s-tpopde.o
  EXTRA_GNATTOOLS = \
     ../../gnatsym$(exeext)
  # This command transforms (YYYYMMDD) into YY,MMDD
  GSMATCH_VERSION := $(shell grep "^ *Gnat_Static_Version_String" $(fsrcpfx)ada/gnatvsn.ads | sed -e 's/.*(\(.*\)).*/\1/' -e 's/\(..\)\(..\)\(....\).*/\2,\3/')
  TOOLS_LIBS_LO := --for-linker=sys\\$$\$$library:trace.exe
  LIBRARY_VERSION := $(subst .,_,$(LIB_VERSION))
endif

# *-elf
ifeq ($(strip $(filter-out avr none powerpc% eabispe leon% erc32% unknown elf,$(targ))),)
  TOOLS_TARGET_PAIRS=\
  mlib-tgt-specific.adb<mlib-tgt-specific-xi.adb \
  indepsw.adb<indepsw-gnu.adb
endif

# Cygwin/Mingw32
ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(osys))),)
  # Cygwin provides a full Posix environment, and so we use the default
  # versions of s-memory and g-socthi rather than the Windows-specific
  # MinGW versions.  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%,$(osys))),)
    LIBGNAT_TARGET_PAIRS = \
    s-memory.adb<s-memory.adb \
    g-socthi.ads<g-socthi.ads \
    g-socthi.adb<g-socthi.adb
  else
    LIBGNAT_TARGET_PAIRS = \
    s-memory.adb<s-memory-mingw.adb \
    g-socthi.ads<g-socthi-mingw.ads \
    g-socthi.adb<g-socthi-mingw.adb
  endif
  LIBGNAT_TARGET_PAIRS += \
  a-dirval.adb<a-dirval-mingw.adb \
  a-excpol.adb<a-excpol-abort.adb \
  s-gloloc.adb<s-gloloc-mingw.adb \
  s-inmaop.adb<s-inmaop-dummy.adb \
  s-taspri.ads<s-taspri-mingw.ads \
  s-tasinf.adb<s-tasinf-mingw.adb \
  s-tasinf.ads<s-tasinf-mingw.ads \
  g-stsifd.adb<g-stsifd-sockets.adb \
  g-soliop.ads<g-soliop-mingw.ads \
  $(ATOMICS_TARGET_PAIRS)

  ifeq ($(strip $(filter-out rtx_w32 rtx_rtss,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    s-intman.adb<s-intman-dummy.adb \
    s-osinte.ads<s-osinte-rtx.ads \
    s-osprim.adb<s-osprim-rtx.adb \
    s-taprop.adb<s-taprop-rtx.adb \
    $(X86_TARGET_PAIRS)

    EXTRA_GNATRTL_NONTASKING_OBJS = s-win32.o

    ifeq ($(strip $(filter-out rtx_w32,$(THREAD_KIND))),)
       LIBGNAT_TARGET_PAIRS += system.ads<system-rtx.ads

       EH_MECHANISM=-gcc
    else
       LIBGNAT_TARGET_PAIRS += \
       system.ads<system-rtx-rtss.ads \
       s-parame.adb<s-parame-vxworks.adb

       EH_MECHANISM=
    endif

  else
    LIBGNAT_TARGET_PAIRS += \
    a-exetim.adb<a-exetim-mingw.adb \
    a-exetim.ads<a-exetim-mingw.ads \
    a-intnam.ads<a-intnam-mingw.ads \
    g-sercom.adb<g-sercom-mingw.adb \
    s-interr.adb<s-interr-sigaction.adb \
    s-intman.adb<s-intman-mingw.adb \
    s-mudido.adb<s-mudido-affinity.adb \
    s-osinte.ads<s-osinte-mingw.ads \
    s-osprim.adb<s-osprim-mingw.adb \
    s-taprop.adb<s-taprop-mingw.adb

    ifeq ($(strip $(filter-out x86_64%,$(arch))),)
      ifeq ($(strip $(MULTISUBDIR)),/32)
	LIBGNAT_TARGET_PAIRS += \
	  $(X86_TARGET_PAIRS) \
	  system.ads<system-mingw.ads
	SO_OPTS= -m32 -Wl,-soname,
      else
	LIBGNAT_TARGET_PAIRS += \
	  $(X86_64_TARGET_PAIRS) \
	  system.ads<system-mingw-x86_64.ads
	SO_OPTS = -m64 -Wl,-soname,
      endif
    else
      ifeq ($(strip $(MULTISUBDIR)),/64)
	LIBGNAT_TARGET_PAIRS += \
	  $(X86_64_TARGET_PAIRS) \
	  system.ads<system-mingw-x86_64.ads
	SO_OPTS = -m64 -Wl,-soname,
      else
	LIBGNAT_TARGET_PAIRS += \
	  $(X86_TARGET_PAIRS) \
	  system.ads<system-mingw.ads
	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_TASKING_OBJS = a-exetim.o

    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
  endif

  TOOLS_TARGET_PAIRS= \
  mlib-tgt-specific.adb<mlib-tgt-specific-mingw.adb \
  indepsw.adb<indepsw-mingw.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%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-linux-mips.ads

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

# Mips/el Linux
ifeq ($(strip $(filter-out mipsel linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux-mipsel.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  g-sercom.adb<g-sercom-linux.adb

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-linux-mipsel.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-linux-mips64el.ads

  ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64)
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
  else
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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

# Mips64/el Linux
ifeq ($(strip $(filter-out mips64el linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux-mipsel.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  g-sercom.adb<g-sercom-linux.adb

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-linux-mipsel.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-linux-mips64el.ads

  ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64)
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
  else
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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% e500% linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-exetim.adb<a-exetim-posix.adb \
  a-exetim.ads<a-exetim-default.ads \
  a-intnam.ads<a-intnam-linux.ads \
  a-synbar.adb<a-synbar-posix.adb \
  a-synbar.ads<a-synbar-posix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-tpopsp.adb<s-tpopsp-tls.adb \
  g-sercom.adb<g-sercom-linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON)

    LIBGNAT_TARGET_PAIRS += \
    s-osinte.ads<s-osinte-linux-xenomai.ads \
    s-osprim.adb<s-osprim-linux-xenomai.adb \
    s-taprop.adb<s-taprop-linux-xenomai.adb \
    s-taspri.ads<s-taspri-linux-xenomai.ads \
    system.ads<system-linux-ppc.ads
  else
    LIBGNAT_TARGET_PAIRS_32 = \
    system.ads<system-linux-ppc.ads

    LIBGNAT_TARGET_PAIRS_64 = \
    system.ads<system-linux-ppc64.ads

    ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64)
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
    else
      LIBGNAT_TARGET_PAIRS = \
      $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
    endif

    LIBGNAT_TARGET_PAIRS += \
    s-mudido.adb<s-mudido-affinity.adb \
    s-osinte.ads<s-osinte-linux.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-taprop.adb<s-taprop-linux.adb \
    s-tasinf.ads<s-tasinf-linux.ads \
    s-tasinf.adb<s-tasinf-linux.adb \
    s-taspri.ads<s-taspri-posix-noaltstack.ads
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

ifeq ($(strip $(filter-out arm%-linux,$(arch)-$(osys)) $(if $(findstring eabi,$(word 4,$(targ))),,$(word 4,$(targ)))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb

  ifeq ($(strip $(filter-out arm%b,$(arch))),)
    LIBGNAT_TARGET_PAIRS += \
    system.ads<system-linux-armeb.ads
  else
    LIBGNAT_TARGET_PAIRS += \
    system.ads<system-linux-armel.ads
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# Sparc Linux
ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS_COMMON = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux-sparc.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-tls.adb

  LIBGNAT_TARGET_PAIRS_32 = \
  system.ads<system-linux-sparc.ads

  LIBGNAT_TARGET_PAIRS_64 = \
  system.ads<system-linux-sparcv9.ads

  ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64)
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
  else
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux-hppa.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-linux-hppa.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-linux-sh4.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<a-exetim-posix.adb \
  a-exetim.ads<a-exetim-default.ads \
  a-intnam.ads<a-intnam-linux.ads \
  a-numaux.ads<a-numaux-libc-x86.ads \
  a-synbar.adb<a-synbar-posix.adb \
  a-synbar.ads<a-synbar-posix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-mudido.adb<s-mudido-affinity.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-tpopsp.adb<s-tpopsp-tls.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  g-sercom.adb<g-sercom-linux.adb \
  system.ads<system-linux-ia64.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# IA64 HP-UX
ifeq ($(strip $(filter-out ia64% hp hpux%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-hpux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-hpux.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-hpux-ia64.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS = \
  mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb

  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%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux-alpha.ads \
  s-osinte.ads<s-osinte-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-taspri.ads<s-taspri-posix-noaltstack.ads \
  system.ads<system-linux-alpha.ads \
  $(ATOMICS_TARGET_PAIRS) \
  $(ATOMICS_BUILTINS_TARGET_PAIRS)

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    indepsw.adb<indepsw-gnu.adb

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

# x86-64 Linux
ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<a-exetim-posix.adb \
  a-exetim.ads<a-exetim-default.ads \
  a-intnam.ads<a-intnam-linux.ads \
  a-synbar.adb<a-synbar-posix.adb \
  a-synbar.ads<a-synbar-posix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-mudido.adb<s-mudido-affinity.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-tpopsp.adb<s-tpopsp-tls.adb \
  s-taspri.ads<s-taspri-posix.ads \
  g-sercom.adb<g-sercom-linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<system-linux-x86_64.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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

ifeq ($(strip $(filter-out %x32 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-exetim.adb<a-exetim-posix.adb \
  a-exetim.ads<a-exetim-default.ads \
  a-intnam.ads<a-intnam-linux.ads \
  a-synbar.adb<a-synbar-posix.adb \
  a-synbar.ads<a-synbar-posix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.ads \
  s-mudido.adb<s-mudido-affinity.adb \
  s-osinte.ads<s-osinte-linux.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tasinf.ads<s-tasinf-linux.ads \
  s-tasinf.adb<s-tasinf-linux.adb \
  s-tpopsp.adb<s-tpopsp-tls.adb \
  s-taspri.ads<s-taspri-posix.ads \
  g-sercom.adb<g-sercom-linux.adb \
  $(ATOMICS_TARGET_PAIRS) \
  $(X86_64_TARGET_PAIRS) \
  system.ads<system-linux-x86.ads

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
    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

# Darwin (Mac OS X)
ifeq ($(strip $(filter-out darwin%,$(osys))),)
  SO_OPTS = -shared-libgcc
  LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-darwin.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-osinte.adb<s-osinte-darwin.adb \
    s-osinte.ads<s-osinte-darwin.ads \
    s-taprop.adb<s-taprop-posix.adb \
    s-taspri.ads<s-taspri-posix.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb

  ifeq ($(strip $(filter-out %86,$(arch))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<s-intman-susv3.adb \
      s-osprim.adb<s-osprim-darwin.adb \
      $(ATOMICS_TARGET_PAIRS)

    ifeq ($(strip $(MULTISUBDIR)),/x86_64)
      LIBGNAT_TARGET_PAIRS += \
        $(X86_64_TARGET_PAIRS) \
        system.ads<system-darwin-x86_64.ads
      SO_OPTS += -m64
    else
      LIBGNAT_TARGET_PAIRS += \
        $(X86_TARGET_PAIRS) \
        system.ads<system-darwin-x86.ads
    endif

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

  ifeq ($(strip $(filter-out %x86_64,$(arch))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<s-intman-susv3.adb \
      s-osprim.adb<s-osprim-darwin.adb \
      $(ATOMICS_TARGET_PAIRS)

    ifeq ($(strip $(MULTISUBDIR)),/i386)
      LIBGNAT_TARGET_PAIRS += \
        $(X86_TARGET_PAIRS) \
        system.ads<system-darwin-x86.ads
      SO_OPTS += -m32
    else
      LIBGNAT_TARGET_PAIRS += \
        $(X86_64_TARGET_PAIRS) \
        system.ads<system-darwin-x86_64.ads
    endif

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

  ifeq ($(strip $(filter-out powerpc%,$(arch))),)
    LIBGNAT_TARGET_PAIRS += \
      s-intman.adb<s-intman-posix.adb \
      s-osprim.adb<s-osprim-posix.adb \
      a-numaux.ads<a-numaux-darwin.ads \
      a-numaux.adb<a-numaux-darwin.adb

    ifeq ($(strip $(MULTISUBDIR)),/ppc64)
      LIBGNAT_TARGET_PAIRS += \
        system.ads<system-darwin-ppc64.ads
        SO_OPTS += -m64
    else
      LIBGNAT_TARGET_PAIRS += \
      system.ads<system-darwin-ppc.ads
    endif
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
    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=
endif

# ARM Nucleus
ifeq ($(strip $(filter-out arm nucleus%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  system.ads<system-nucleus-arm.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  a-intnam.ads<a-intnam-nucleus.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-osinte.ads<s-osinte-nucleus.ads \
  s-osinte.adb<s-osinte-nucleus.adb \
  s-osprim.adb<s-osprim-nucleus.adb \
  s-parame.adb<s-parame-vxworks.adb \
  s-taprop.adb<s-taprop-posix.adb \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb \
  $(DUMMY_SOCKETS_TARGET_PAIRS)

  LIBRARY_VERSION := $(LIB_VERSION)
  GNATRTL_SOCKETS_OBJS =
endif

ifneq ($(EH_MECHANISM),)
  LIBGNAT_TARGET_PAIRS += a-exexpr.adb<a-exexpr$(EH_MECHANISM).adb
  EXTRA_LIBGNAT_OBJS+=raise$(EH_MECHANISM).o
endif

# Use the Ada 2005 version of Ada.Exceptions by default, unless specified
# explicitly already. The base files (a-except.ad?) are used only for building
# the compiler and other basic tools.
# These base versions lack Ada 2005 additions which would cause bootstrap
# problems if included in the compiler and other basic tools.

ifeq ($(filter a-except%,$(LIBGNAT_TARGET_PAIRS)),)
  LIBGNAT_TARGET_PAIRS += \
    a-except.ads<a-except-2005.ads \
    a-except.adb<a-except-2005.adb
endif

# LIBGNAT_SRCS is the list of all C files (including headers) of the runtime
# library.  LIBGNAT_OBJS is the list of object files for libgnat.
# thread.c is special as put into GNATRTL_TASKING_OBJS by Makefile.rtl
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 				\
  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				\
  tb-gcc.c thread.c $(EXTRA_LIBGNAT_SRCS)

# GNATRTL_NONTASKING_OBJS and GNATRTL_TASKING_OBJS can be found in
# the following include file:

include $(fsrcdir)/ada/Makefile.rtl

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

# Run time source files
ADA_INCLUDE_SRCS =\
 ada.ads calendar.ads directio.ads gnat.ads interfac.ads ioexcept.ads \
 machcode.ads text_io.ads unchconv.ads unchdeal.ads \
 sequenio.ads system.ads memtrack.adb \
 a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \
 s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads

# 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 =\
  s-bb.ads \
  s-bbbosu.ads s-bbcaco.ads s-bbcppr.ads s-bbexti.adb s-bbexti.ads \
  s-bbinte.adb s-bbinte.ads s-bbprot.adb s-bbprot.ads s-bbsle3.ads \
  s-bbsuer.ads s-bbsule.ads s-bbthqu.adb s-bbthqu.ads s-bbthre.adb \
  s-bbthre.ads s-bbtiev.adb s-bbtiev.ads s-bbtime.adb s-bbtime.ads \
  s-bcprmu.adb s-bcprmu.ads s-btstch.adb s-btstch.ads \
  s-po32gl.adb s-po32gl.ads \
  s-stache.adb s-stache.ads \
  s-thread.ads \
  s-vxwexc.adb s-vxwexc.ads s-vxwext.adb s-vxwext.ads \
  s-win32.ads  s-winext.ads \
  g-regist.adb g-regist.ads g-sse.ads    g-ssvety.ads \
  i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
  g-allein.ads g-alleve.ads g-altcon.ads g-alveop.adb g-alvety.ads \
  g-alleve.adb g-altcon.adb g-altive.ads g-alveop.ads g-alvevi.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))

LIBGNAT=../$(RTSDIR)/libgnat.a

TOOLS_FLAGS_TO_PASS=		\
	"CC=$(CC)" 		\
	"CFLAGS=$(CFLAGS)"	\
	"LDFLAGS=$(LDFLAGS)"	\
	"ADAFLAGS=$(ADAFLAGS)"	\
	"INCLUDES=$(INCLUDES_FOR_SUBDIR)"\
	"ADA_INCLUDES=$(ADA_INCLUDES) $(ADA_INCLUDES_FOR_SUBDIR)"\
	"libsubdir=$(libsubdir)"	\
	"exeext=$(exeext)"	\
	"fsrcdir=$(fsrcdir)"	\
	"srcdir=$(fsrcdir)"	\
	"TOOLS_LIBS=$(TOOLS_LIBS) $(TGT_LIB)"	\
	"GNATMAKE=$(GNATMAKE)"	\
	"GNATLINK=$(GNATLINK)"	\
	"GNATBIND=$(GNATBIND)"

GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)

# Build directory for the tools. Let's copy the target-dependent
# sources using the same mechanism as for gnatlib. The other sources are
# accessed using the vpath directive below
# Note: dummy target, stamp-tools is mainly handled by gnattools.

../stamp-tools:
	touch ../stamp-tools

# when compiling the tools, the runtime has to be first on the path so that
# it hides the runtime files lying with the rest of the sources
ifeq ($(TOOLSCASE),native)
  vpath %.ads ../$(RTSDIR) ../
  vpath %.adb ../$(RTSDIR) ../
  vpath %.c   ../$(RTSDIR) ../
  vpath %.h   ../$(RTSDIR) ../
endif

# in the cross tools case, everything is compiled with the native
# gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES
ifeq ($(TOOLSCASE),cross)
  vpath %.ads ../
  vpath %.adb ../
  vpath %.c   ../
  vpath %.h   ../
endif

# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap
# reasons: gnatmake should be built with a recent compiler, a recent compiler
# may not generate ALI files compatible with an old gnatmake so it is important
# to be able to build gnatmake without a version of gnatmake around. Once
# everything has been compiled once, gnatmake can be recompiled with itself
# (see target gnattools1-re)
gnattools1: ../stamp-tools ../stamp-gnatlib-$(RTSDIR)
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=native \
	  ../../gnatmake$(exeext) ../../gnatlink$(exeext)

# gnatmake/link can be built with recent gnatmake/link if they are available.
# This is especially convenient for building cross tools or for rebuilding
# the tools when the original bootstrap has already be done.
gnattools1-re: ../stamp-tools
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=cross INCLUDES="" gnatmake-re gnatlink-re

# these tools are built with gnatmake & are common to native and cross
gnattools2: ../stamp-tools
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=native common-tools $(EXTRA_GNATTOOLS)

# those tools are only built for the cross version
gnattools4: ../stamp-tools
ifeq ($(ENABLE_VXADDR2LINE),true)
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=cross top_buildir=../../.. \
	  ../../vxaddr2line$(exeext)
endif

common-tools: ../stamp-tools
	$(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \
	  --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \
	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)

../../gnatsym$(exeext): ../stamp-tools
	$(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)"
	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatsym
	$(GNATLINK) -v gnatsym -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)

../../gnatdll$(exeext): ../stamp-tools
	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
	$(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)

../../vxaddr2line$(exeext): ../stamp-tools targext.o
	$(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
	$(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" targext.o $(CLIB)

gnatmake-re: ../stamp-tools link.o targext.o
	$(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)

# Note the use of the "mv" command in order to allow gnatlink to be linked with
# with the former version of gnatlink itself which cannot override itself.
# gnatlink-re cannot be run at the same time as gnatmake-re, hence the
# dependency
gnatlink-re: ../stamp-tools link.o targext.o gnatmake-re
	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
		    --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)

# Needs to be built with CC=gcc
# Since the RTL should be built with the latest compiler, remove the
#  stamp target in the parent directory whenever gnat1 is rebuilt

# Likewise for the tools
../../gnatmake$(exeext): $(P) b_gnatm.o link.o targext.o $(GNATMAKE_OBJS)
	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)

../../gnatlink$(exeext): $(P) b_gnatl.o link.o targext.o $(GNATLINK_OBJS)
	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)

../stamp-gnatlib-$(RTSDIR):
	@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
	then \
	  $(ECHO) You must first build the GNAT library: make gnatlib; \
	  false; \
	else \
	  true; \
	fi

install-gnatlib: ../stamp-gnatlib-$(RTSDIR)
#	Create the directory before deleting it, in case the directory is
#	a list of directories (as it may be on VMS). This ensures we are
#	deleting the right one.
	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
	$(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
	for file in $(RTSDIR)/*.ali; do \
	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	done
	-cd $(RTSDIR); for file in *$(arext);do \
	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	    $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \
	done
	-$(foreach file, $(EXTRA_ADALIB_FILES), \
	    $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \
	) true
#     Install the shared libraries, if any, using $(INSTALL) instead
#     of $(INSTALL_DATA). The latter may force a mode inappropriate
#     for shared libraries on some targets, e.g. on HP-UX where the x
#     permission is required.
#     Also install the .dSYM directories if they exist (these directories
#     contain the debug information for the shared libraries on darwin)
	for file in gnat gnarl; do \
	   if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
			 $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	   fi; \
	   if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \
	      $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
	      $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
	   fi; \
	   if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \
	      $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \
	        $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	   fi; \
	done
# This copy must be done preserving the date on the original file.
	for file in $(RTSDIR)/*.ad?; do \
	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \
	done
	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads

../stamp-gnatlib2-$(RTSDIR):
	$(RM) $(RTSDIR)/s-*.ali
	$(RM) $(RTSDIR)/s-*$(objext)
	$(RM) $(RTSDIR)/a-*.ali
	$(RM) $(RTSDIR)/a-*$(objext)
	$(RM) $(RTSDIR)/*.ali
	$(RM) $(RTSDIR)/*$(objext)
	$(RM) $(RTSDIR)/*$(arext)
	$(RM) $(RTSDIR)/*$(soext)
	touch ../stamp-gnatlib2-$(RTSDIR)
	$(RM) ../stamp-gnatlib-$(RTSDIR)

../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR)
	$(RMDIR) $(RTSDIR)
	$(MKDIR) $(RTSDIR)
	$(CHMOD) u+w $(RTSDIR)
# Copy target independent sources
	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
	  $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true
# Remove files not used
	$(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES))
# Remove files to be replaced by target dependent sources
	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
	for f in $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb; do \
	  case "$$f" in \
	    $(RTSDIR)/s-stratt-*) ;; \
	    *) $(RM) $$f ;; \
	  esac; \
	done
# Copy new target dependent sources
	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	          $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
	                $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
# Copy tsystem.h
	$(CP) $(srcdir)/tsystem.h $(RTSDIR)
	$(RM) ../stamp-gnatlib-$(RTSDIR)
	touch ../stamp-gnatlib1-$(RTSDIR)

ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(subst -, ,$(host)))),)
OSCONS_CPP=../../$(DECC) -E /comment=as_is -DNATIVE \
             -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c

OSCONS_EXTRACT=../../$(DECC) -DNATIVE \
                 -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c ; \
  ld -o s-oscons-tmplt.exe s-oscons-tmplt.obj; \
  ./s-oscons-tmplt.exe > s-oscons-tmplt.s

else
# GCC_FOR_TARGET has paths relative to the gcc directory, so we need to adjust
# for running it from $(RTSDIR)
OSCONS_CC=`echo "$(GCC_FOR_TARGET)" \
  | sed -e 's^\./xgcc^../../xgcc^' -e 's^-B./^-B../../^'`
OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) -E -C \
  -DTARGET=\"$(target)\" $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS) -S s-oscons-tmplt.i
endif

./bldtools/oscons/xoscons: xoscons.adb xutil.ads xutil.adb
	-$(MKDIR) ./bldtools/oscons
	$(RM) $(addprefix ./bldtools/oscons/,$(notdir $^))
	$(CP) $^ ./bldtools/oscons
	(cd ./bldtools/oscons ; gnatmake -q xoscons)

$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
	$(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
	(cd $(RTSDIR) ; \
	    $(OSCONS_CPP) ; \
	    $(OSCONS_EXTRACT) ; \
	    ../bldtools/oscons/xoscons s-oscons)

# Don't use semicolon separated shell commands that involve list expansions.
# The semicolon triggers a call to DCL on VMS and DCL can't handle command
# line lengths in excess of 256 characters.
# Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
# is guaranteed to overflow the buffer.

gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
# C files
	$(MAKE) -C $(RTSDIR) \
		CC="`echo \"$(GCC_FOR_TARGET)\" \
		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
                CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
		srcdir=$(fsrcdir) \
	        -f ../Makefile $(LIBGNAT_OBJS)
# Ada files
	$(MAKE) -C $(RTSDIR) \
		CC="`echo \"$(GCC_FOR_TARGET)\" \
		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
	        ADA_INCLUDES="" \
                CFLAGS="$(GNATLIBCFLAGS)" \
	        ADAFLAGS="$(GNATLIBFLAGS)" \
	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
		srcdir=$(fsrcdir) \
	        -f ../Makefile $(GNATRTL_OBJS)
	$(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext)
	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \
	   $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext)
	$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \
	   $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS))
	$(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext)
        ifeq ($(GMEM_LIB),gmemlib)
		$(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \
		  $(RTSDIR)/memtrack.o
		$(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext)
        endif
	$(CHMOD) a-wx $(RTSDIR)/*.ali
	touch ../stamp-gnatlib-$(RTSDIR)

# Warning: this target assumes that LIBRARY_VERSION has been set correctly.
gnatlib-shared-default:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) $(RTSDIR)/libgna*$(soext)
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
		$(PICFLAG_FOR_TARGET) \
		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(MISCLIB) -lm
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
		$(PICFLAG_FOR_TARGET) \
		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_TASKING_OBJS) \
		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(THREADSLIB)
	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnat$(soext)
	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnarl$(soext)

gnatlib-shared-dual:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib-shared-default
	$(MV) $(RTSDIR)/libgna*$(soext) .
	$(RM) ../stamp-gnatlib2-$(RTSDIR)
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(MV) libgna*$(soext) $(RTSDIR)

gnatlib-shared-dual-win32:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib-shared-win32
	$(MV) $(RTSDIR)/libgna*$(soext) .
	$(RM) ../stamp-gnatlib2-$(RTSDIR)
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(MV) libgna*$(soext) $(RTSDIR)

# ??? we need to add the option to support auto-import of arrays/records to
# the GNATLIBFLAGS when this will be supported by GNAT. At this point we will
# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on
# Windows.
gnatlib-shared-win32:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) $(RTSDIR)/libgna*$(soext)
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \
		$(PICFLAG_FOR_TARGET) \
		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \
		$(PICFLAG_FOR_TARGET) \
		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_TASKING_OBJS) \
		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)

gnatlib-shared-darwin:
	$(MAKE) $(FLAGS_TO_PASS) \
	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-common" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     gnatlib
	$(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \
		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
		$(SO_OPTS) \
		-Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(MISCLIB)
	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
                | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \
		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_TASKING_OBJS) \
		$(SO_OPTS) \
		-Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnat$(soext)
	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnarl$(soext)
	cd $(RTSDIR); dsymutil libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
	cd $(RTSDIR); dsymutil libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext)

gnatlib-shared-vms:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) $(RTSDIR)/libgna*$(soext)
	cd $(RTSDIR) && \
	../../gnatsym -s SYMVEC_$$$$.opt \
	$(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \
	../../xgcc -g -B../../ -shared -shared-libgcc \
	   -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \
	   sys\$$library:trace.exe \
	   --for-linker=/noinform \
	   --for-linker=SYMVEC_$$$$.opt \
	   --for-linker=gsmatch=equal,$(GSMATCH_VERSION)
	cd $(RTSDIR) && \
	../../gnatsym -s SYMVEC_$$$$.opt \
	$(GNATRTL_TASKING_OBJS) && \
	../../xgcc -g -B../../ -shared -shared-libgcc \
	   -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
	   libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
	   sys\$$library:trace.exe \
	   --for-linker=/noinform \
	   --for-linker=SYMVEC_$$$$.opt \
	   --for-linker=gsmatch=equal,$(GSMATCH_VERSION)

gnatlib-shared:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \
             $(GNATLIB_SHARED)

# When building a SJLJ runtime for VxWorks, in addition to forcing
# ZCX_By_default to False, we need to ensure that extra linker options
# are not passed to prevent the inclusion of useless objects and
# potential troubles from the presence of extra symbols and references
# in some configurations.  The inhibition is performed by commenting
# the pragma instead of deleting the line, as the latter might result
# in getting multiple blank lines, hence a style check error, as a
# result.
gnatlib-sjlj:
	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \
	THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
	sed -e 's/\(pragma Linker.*crtbe.*\)/--  \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads
	$(RM) $(RTSDIR)/s.ads
	$(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads
	$(MAKE) $(FLAGS_TO_PASS) \
	     EH_MECHANISM="" \
	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib

gnatlib-zcx:
	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \
	  THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
	$(MAKE) $(FLAGS_TO_PASS) \
	     EH_MECHANISM="-gcc" \
	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
	     FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
	     MULTISUBDIR="$(MULTISUBDIR)" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib

# Compiling object files from source files.

# Note that dependencies on obstack.h are not written
# because that file is not part of GCC.
# Dependencies on gvarargs.h are not written
# because all that file does, when not compiling with GCC,
# is include the system varargs.h.

b_gnatl.adb : $(GNATLINK_OBJS)
	$(GNATBIND) $(ADA_INCLUDES) -o b_gnatl.adb gnatlink.ali

b_gnatl.o : b_gnatl.adb
	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) -gnatws -gnatyN \
	    $< $(OUTPUT_OPTION)

b_gnatm.adb : $(GNATMAKE_OBJS)
	$(GNATBIND) $(ADA_INCLUDES) -o b_gnatm.adb gnatmake.ali

b_gnatm.o : b_gnatm.adb
	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) -gnatws -gnatyN \
	    $< $(OUTPUT_OPTION)

ADA_INCLUDE_DIR = $(libsubdir)/adainclude
ADA_RTL_OBJ_DIR = $(libsubdir)/adalib

# Special flags

# force no sibling call optimization on s-traceb.o so the number of stack
# frames to be skipped when computing a call chain is not modified by
# optimization.

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

# force debugging information on s-tasdeb.o so that it is always
# possible to set conditional breakpoints on tasks.

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

# force debugging information on s-vaflop.o so that it is always
# possible to call the VAX float debug print routines.
# force at least -O so that the inline assembly works.

s-vaflop.o  : s-vaflop.adb s-vaflop.ads
	$(CC) -c -O $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(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
	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
	      $(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
	$(CC) -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
	$(CC) -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
	$(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
	      $< $(OUTPUT_OPTION)

# need to keep the frame pointer in this file to pop the stack properly on
# some targets.
tracebak.o  : tracebak.c tb-alvms.c tb-alvxw.c tb-gcc.c
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) \
	      $(INCLUDES) -fno-omit-frame-pointer $< $(OUTPUT_OPTION)

adadecode.o : adadecode.c adadecode.h
aux-io.o  : aux-io.c
argv.o    : argv.c
cal.o     : cal.c
deftarg.o : deftarg.c
errno.o   : errno.c
exit.o    : adaint.h exit.c
expect.o  : expect.c
final.o   : final.c
locales.o : locales.c
mkdir.o   : mkdir.c
socket.o  : socket.c gsocket.h
sysdep.o  : sysdep.c
raise.o   : raise.c raise.h
sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h
terminals.o : terminals.c
vx_stack_info.o : vx_stack_info.c

raise-gcc.o : raise-gcc.c raise.h
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
		-iquote $(srcdir) -iquote $(srcdir)/../libgcc \
		$(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

cio.o     : cio.c
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

init.o    : init.c adaint.h raise.h
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

initialize.o : initialize.c raise.h
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

link.o : link.c
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
		$(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \
		$< $(OUTPUT_OPTION)

targext.o : targext.c
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
		-iquote $(srcdir) \
		$(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \
		$< $(OUTPUT_OPTION)

# In GNU Make, ignore whether `stage*' exists.
.PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrap
.PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4

force:
