OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [ada/] [gcc-interface/] [Makefile.in] - Rev 826

Compare with Previous | Blame | View Log

# Makefile for GNU Ada Compiler (GNAT).
#   Copyright (C) 1994-2010 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
SOME_ADAFLAGS =-gnata
FORCE_DEBUG_ADAFLAGS = -g
GNATLIBFLAGS = -gnatpg -nostdinc
GNATLIBCFLAGS = -g -O2
# 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 = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
        -DIN_RTS -DHAVE_GETIPINFO
ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS)
MOST_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(SOME_ADAFLAGS)
THREAD_KIND = native
THREADSLIB =
GMEM_LIB =
MISCLIB =
SYMDEPS = $(LIBINTL_DEP)
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@

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

# List of extra object files linked in with various programs.
EXTRA_GNATTOOLS_OBJS = ../../prefix.o ../../version.o

# 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 distinguishes between code compiled into GCC itself and other
# programs built during a bootstrap.
# 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.
LOOSE_CFLAGS = `echo $(CFLAGS) $(WARN2_CFLAGS)|sed -e 's/-pedantic//g' -e 's/-Wtraditional//g'`
ALL_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_CFLAGS)

# Likewise.
ALL_CPPFLAGS = $(CPPFLAGS)

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

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

# How to link with both our special library facilities
# and the system's installed libraries.
LIBS = $(LIBINTL) $(LIBIBERTY) $(SYSLIBS)
LIBDEPS = $(LIBINTL_DEP) $(LIBIBERTY)
# Default is no TGT_LIB; one might be passed down or something
TGT_LIB =
TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libiberty/libiberty.a $(SYSLIBS) $(TGT_LIB)

# 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)/config \
        -I$(srcdir)/../include

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

INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada \
        -I$(fsrcdir)/../include -I$(fsrcdir)
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 s-casuti.o \
 alloc.o atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.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 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 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)

# 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

# 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
  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) g-sttsne$(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 \
  g-sttsne.ads<g-sttsne-dummy.ads

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

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

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-posix.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 \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.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_SRCS+=vx_stack_info.c
  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

ifeq ($(strip $(filter-out 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-posix.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-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-ppc.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb

  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-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_GNATRTL_TASKING_OBJS=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.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

        EXTRA_GNATRTL_TASKING_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-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
    endif
  endif

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

  EXTRA_LIBGNAT_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

# vxworks 653
ifeq ($(strip $(filter-out powerpc% 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 \
  g-io.ads<g-io-vxworks-ppc-cert.ads \
  s-inmaop.adb<s-inmaop-posix.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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  system.ads<system-vxworks-ppc-vthread.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 \
    g-sttsne.adb<g-sttsne-vxworks.adb \
    g-sttsne.ads<g-sttsne-locking.ads
  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

# vxworks MILS
ifeq ($(strip $(filter-out powerpc% wrs vxworksmils,$(targ))),)
  # target pairs for vthreads runtime
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-vxworks.ads \
  a-numaux.ads<a-numaux-vxworks.ads \
  g-io.adb<g-io-vxworks-ppc-cert.adb \
  g-io.ads<g-io-vxworks-ppc-cert.ads \
  s-inmaop.adb<s-inmaop-posix.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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  system.ads<system-vxworks-ppc.ads \
  $(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_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.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) - ?? vxworksmils 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-numaux.ads<a-numaux-x86.ads \
  a-numaux.adb<a-numaux-x86.adb \
  a-sytaco.ads<1asytaco.ads \
  a-sytaco.adb<1asytaco.adb \
  g-bytswa.adb<g-bytswa-x86.adb \
  g-io.adb<g-io-vxworks-ppc-cert.adb \
  g-io.ads<g-io-vxworks-ppc-cert.ads \
  s-inmaop.adb<s-inmaop-posix.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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  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 \
    g-sttsne.adb<g-sttsne-vxworks.adb \
    g-sttsne.ads<g-sttsne-locking.ads
  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

ifeq ($(strip $(filter-out sparc% 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-posix.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-sparcv9.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  system.ads<system-vxworks-sparcv9.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_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

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-posix.adb \
  s-intman.ads<s-intman-vxworks.ads \
  s-intman.adb<s-intman-vxworks.adb \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.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-vxwork.ads<s-vxwork-x86.ads \
  g-bytswa.adb<g-bytswa-x86.adb \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb

  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-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_GNATRTL_TASKING_OBJS=affinity.o
    else
      ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-interr.adb<s-interr-hwint.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_GNATRTL_TASKING_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_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

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-posix.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 \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.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_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

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-posix.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 \
  g-sttsne.adb<g-sttsne-vxworks.adb \
  g-sttsne.ads<g-sttsne-locking.ads \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.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_SRCS+=vx_stack_info.c
  EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
endif

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

  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

ifeq ($(strip $(filter-out %86 solaris2%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  a-intnam.ads<a-intnam-solaris.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-solaris.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

  ifeq ($(strip $(MULTISUBDIR)),/amd64)
    LIBGNAT_TARGET_PAIRS += \
    system.ads<system-solaris-x86_64.ads
  else
    LIBGNAT_TARGET_PAIRS += \
    g-bytswa.adb<g-bytswa-x86.adb \
    system.ads<system-solaris-x86.ads
  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)
endif

ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  g-bytswa.adb<g-bytswa-x86.adb \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  g-sercom.adb<g-sercom-linux.adb

  ifeq ($(strip $(filter-out marte,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS += \
    a-exetim.adb<a-exetim-linux-marte.adb \
    a-exetim.ads<a-exetim-linux-marte.ads \
    a-extiti.adb<a-extiti-linux-marte.adb \
    a-extiti.ads<a-extiti-linux-marte.ads \
    a-rttiev.adb<a-rttiev-linux-marte.adb \
    a-rttiev.ads<a-rttiev-linux-marte.ads \
    s-osinte.adb<s-osinte-linux-marte.adb \
    s-osinte.ads<s-osinte-linux-marte.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-taprop.adb<s-taprop-linux-marte.adb \
    s-taspri.ads<s-taspri-posix.ads \
    system.ads<system-linux-x86.ads

    EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o a-extiti.o

    EH_MECHANISM=
    THREADSLIB = -lmarte
  else
    LIBGNAT_TARGET_PAIRS += \
    s-linux.ads<s-linux.ads \
    s-osinte.adb<s-osinte-posix.adb

    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 \
      system.ads<system-linux-x86-xenomai.ads

      EH_MECHANISM=-gcc
    else
      LIBGNAT_TARGET_PAIRS += \
      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 \
      system.ads<system-linux-x86.ads

      EH_MECHANISM=-gcc
    endif

    THREADSLIB = -lpthread
    EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
    EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
  endif

  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

ifeq ($(strip $(filter-out %86 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.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

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

ifeq ($(strip $(filter-out %86 freebsd%,$(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 \
  g-bytswa.adb<g-bytswa-x86.adb \
  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 \
  system.ads<system-freebsd-x86.ads

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

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

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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.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

ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
  ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-irix.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-irix.adb \
    s-mastop.adb<s-mastop-irix.adb \
    s-osinte.adb<s-osinte-irix.adb \
    s-osinte.ads<s-osinte-irix.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-proinf.adb<s-proinf-irix-athread.adb \
    s-proinf.ads<s-proinf-irix-athread.ads \
    s-taprop.adb<s-taprop-irix.adb \
    s-tasinf.ads<s-tasinf-irix.ads \
    s-taspri.ads<s-taspri-posix.ads \
    s-tpopsp.adb<s-tpopsp-posix.adb \
    s-traceb.adb<s-traceb-mastop.adb

    ifeq ($(strip $(MULTISUBDIR)),/64)
      LIBGNAT_TARGET_PAIRS += \
      system.ads<system-irix-n64.ads
    else
      ifeq ($(strip $(MULTISUBDIR)),/32)
        LIBGNAT_TARGET_PAIRS += \
        system.ads<system-irix-o32.ads
      else
        LIBGNAT_TARGET_PAIRS += \
        system.ads<system-irix-n32.ads
      endif
    endif

    THREADSLIB = -lpthread
    GNATLIB_SHARED = gnatlib-shared-default

  else
    LIBGNAT_TARGET_PAIRS += \
    s-mastop.adb<s-mastop-irix.adb \
    s-osprim.adb<s-osprim-posix.adb \
    s-traceb.adb<s-traceb-mastop.adb \
    system.ads<system-irix-o32.ads
  endif

  EH_MECHANISM=-gcc
  TOOLS_TARGET_PAIRS = mlib-tgt-specific.adb<mlib-tgt-specific-irix.adb
  TGT_LIB = -lexc
  MISCLIB = -lexc
  LIBRARY_VERSION := $(LIB_VERSION)
  GMEM_LIB = gmemlib
endif

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

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

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

  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)
  else
    LIBGNAT_TARGET_PAIRS = \
    $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
  endif

  THREADSLIB = -lpthreads

  TOOLS_TARGET_PAIRS = \
  mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
  indepsw.adb<indepsw-aix.adb

  GMEM_LIB = gmemlib
endif

ifeq ($(strip $(filter-out lynxos,$(osys))),)
  TOOLS_TARGET_PAIRS = \
  mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
  indepsw.adb<indepsw-gnu.adb

  ifeq ($(strip $(filter-out %86 lynxos,$(arch) $(osys))),)
    LIBGNAT_TARGET_PAIRS = \
    a-numaux.adb<a-numaux-x86.adb \
    a-numaux.ads<a-numaux-x86.ads \
    a-intnam.ads<a-intnam-lynxos.ads \
    g-bytswa.adb<g-bytswa-x86.adb \
    g-sttsne.adb<g-sttsne-locking.adb \
    g-sttsne.ads<g-sttsne-locking.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-posix.adb \
    s-osinte.adb<s-osinte-lynxos.adb \
    s-osinte.ads<s-osinte-lynxos.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-taprop.adb<s-taprop-lynxos.adb \
    s-taspri.ads<s-taspri-lynxos.ads \
    s-tpopsp.adb<s-tpopsp-lynxos.adb \
    g-trasym.ads<g-trasym-unimplemented.ads \
    g-trasym.adb<g-trasym-unimplemented.adb \
    system.ads<system-lynxos-x86.ads


  else
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-lynxos.ads \
    g-sttsne.adb<g-sttsne-locking.adb \
    g-sttsne.ads<g-sttsne-locking.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-posix.adb \
    s-osinte.adb<s-osinte-lynxos.adb \
    s-osinte.ads<s-osinte-lynxos.ads \
    s-osprim.adb<s-osprim-posix.adb \
    s-taprop.adb<s-taprop-lynxos.adb \
    s-taspri.ads<s-taspri-lynxos.ads \
    s-tpopsp.adb<s-tpopsp-lynxos.adb \
    g-trasym.ads<g-trasym-unimplemented.ads \
    g-trasym.adb<g-trasym-unimplemented.adb \
    system.ads<system-lynxos-ppc.ads
  endif
endif

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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb
endif

ifeq ($(strip $(filter-out alpha% dec osf%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-tru64.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-mastop.adb<s-mastop-tru64.adb \
  s-osinte.adb<s-osinte-tru64.adb \
  s-osinte.ads<s-osinte-tru64.ads \
  s-osprim.adb<s-osprim-unix.adb \
  s-taprop.adb<s-taprop-tru64.adb \
  s-tasinf.ads<s-tasinf-tru64.ads \
  s-taspri.ads<s-taspri-tru64.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-traceb.adb<s-traceb-mastop.adb \
  system.ads<system-tru64.ads

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

  EH_MECHANISM=-gcc
  GMEM_LIB=gmemlib
  THREADSLIB = -lpthread -lmach -lexc -lrt
  GNATLIB_SHARED = gnatlib-shared-default
  LIBRARY_VERSION := $(LIB_VERSION)
endif

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

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

.SUFFIXES: .sym

.o.sym:
        @ gnu:[bin]vmssymvec $<
endif

ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(targ))),)
  ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
    LIBGNAT_TARGET_PAIRS_AUX1 = \
      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-osinte.adb<s-osinte-vms-ia64.adb \
      s-osinte.ads<s-osinte-vms-ia64.ads \
      s-vaflop.adb<s-vaflop-vms-ia64.adb \
      g-trasym.ads<g-trasym-unimplemented.ads \
      g-trasym.adb<g-trasym-unimplemented.adb \
      system.ads<system-vms-ia64.ads

    LIBGNAT_TARGET_PAIRS_AUX2 = \
      s-parame.ads<s-parame-vms-ia64.ads
  else
    ifeq ($(strip $(filter-out alpha64 dec vms% openvms% alphavms%,$(targ))),)
      LIBGNAT_TARGET_PAIRS_AUX1 = \
        g-enblsp.adb<g-enblsp-vms-alpha.adb \
        g-trasym.adb<g-trasym-vms-alpha.adb \
        s-traent.adb<s-traent-vms.adb \
        s-traent.ads<s-traent-vms.ads \
        s-asthan.adb<s-asthan-vms-alpha.adb \
        s-osinte.adb<s-osinte-vms.adb \
        s-osinte.ads<s-osinte-vms.ads \
        s-vaflop.adb<s-vaflop-vms-alpha.adb \
        system.ads<system-vms_64.ads

      ifeq ($(strip $(filter-out express EXPRESS,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS_AUX2 = \
          s-parame.ads<s-parame-vms-restrict.ads
      else
        LIBGNAT_TARGET_PAIRS_AUX2 = \
          s-parame.ads<s-parame-vms-alpha.ads
      endif
    endif
  endif

  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 \
    g-sttsne.adb<g-sttsne-locking.adb \
    g-sttsne.ads<g-sttsne-locking.ads \
    i-c.ads<i-c-vms_64.ads \
    i-cstrin.ads<i-cstrin-vms_64.ads \
    i-cstrin.adb<i-cstrin-vms_64.adb \
    i-cpoint.ads<i-cpoint-vms_64.ads \
    i-cpoint.adb<i-cpoint-vms_64.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-osprim.adb<s-osprim-vms.adb \
    s-osprim.ads<s-osprim-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-posix-foreign.adb \
    s-tpopde.adb<s-tpopde-vms.adb \
    s-tpopde.ads<s-tpopde-vms.ads \
    $(LIBGNAT_TARGET_PAIRS_AUX1) \
    $(LIBGNAT_TARGET_PAIRS_AUX2)

  ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
    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
    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

adamsg.o: adamsg.msg
        -$(DECC) --cc=message adamsg.msg -o adamsg.o

  EXTRA_GNATMAKE_OBJS = mlib-tgt-vms_common.o

  GMEM_LIB = gmemlib
  EH_MECHANISM=-gcc
  GNATLIB_SHARED=gnatlib-shared-vms
  ifeq ($(strip $(filter-out alpha64 dec vms% openvms% alphavms%,$(targ))),)
    EXTRA_LIBGNAT_SRCS=vmshandler.asm
    EXTRA_LIBGNAT_OBJS=vmshandler.o
  endif
  EXTRA_LIBGNAT_SRCS+=adamsg.msg
  EXTRA_LIBGNAT_OBJS+=adamsg.o
  EXTRA_GNATRTL_TASKING_OBJS=s-tpopde.o
  EXTRA_GNATTOOLS = \
     ../../gnatlbr$(exeext)  \
     ../../gnatsym$(exeext)  \
     ../../vms_help$(exeext) \
     ../../gnat.hlp
  # 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

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

ifeq ($(strip $(filter-out cygwin32% mingw32% pe,$(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-dirval.adb<a-dirval-mingw.adb \
  a-excpol.adb<a-excpol-abort.adb \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  s-gloloc.adb<s-gloloc-mingw.adb \
  s-inmaop.adb<s-inmaop-dummy.adb \
  s-memory.adb<s-memory-mingw.adb \
  s-taspri.ads<s-taspri-mingw.ads \
  s-tasinf.adb<s-tasinf-mingw.adb \
  s-tasinf.ads<s-tasinf-mingw.ads \
  g-bytswa.adb<g-bytswa-x86.adb \
  g-socthi.ads<g-socthi-mingw.ads \
  g-socthi.adb<g-socthi-mingw.adb \
  g-stsifd.adb<g-stsifd-sockets.adb \
  g-soliop.ads<g-soliop-mingw.ads

  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

    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-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 += \
          system.ads<system-mingw.ads
      else
        LIBGNAT_TARGET_PAIRS += \
          system.ads<system-mingw-x86_64.ads
      endif
    else
      ifeq ($(strip $(MULTISUBDIR)),/64)
        LIBGNAT_TARGET_PAIRS += \
          system.ads<system-mingw-x86_64.ads
      else
        LIBGNAT_TARGET_PAIRS += \
          system.ads<system-mingw.ads
      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
  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

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

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

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

ifeq ($(strip $(filter-out powerpc% 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 \
  g-sercom.adb<g-sercom-linux.adb

  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

  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 \
    system.ads<system-linux-ppc-xenomai.ads
  else
    LIBGNAT_TARGET_PAIRS += \
    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 \
    system.ads<system-linux-ppc.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=-gcc
  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out arm% linux-gnueabi,$(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-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

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-posix-foreign.adb

  LIBGNAT_TARGET_PAIRS_32 = \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  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

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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.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

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

ifeq ($(strip $(filter-out %ia64 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.ads \
  a-numaux.ads<a-numaux-libc-x86.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-linux.ads<s-linux.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 \
  g-sercom.adb<g-sercom-linux.adb \
  system.ads<system-linux-ia64.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
  MISCLIB=
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

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-noaltstack.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  system.ads<system-hpux-ia64.ads

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

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

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 \
  g-trasym.ads<g-trasym-unimplemented.ads \
  g-trasym.adb<g-trasym-unimplemented.adb \
  system.ads<system-linux-alpha.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
  MISCLIB=
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-intnam.ads<a-intnam-linux.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-linux.ads<s-linux.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.ads \
  g-sercom.adb<g-sercom-linux.adb \
  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
  EH_MECHANISM=-gcc
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out darwin%,$(osys))),)
  ifeq ($(strip $(filter-out %86,$(arch))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-darwin.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-susv3.adb \
    s-osinte.adb<s-osinte-darwin.adb \
    s-osinte.ads<s-osinte-darwin.ads \
    s-osprim.adb<s-osprim-darwin.adb \
    s-taprop.adb<s-taprop-posix.adb \
    s-taspri.ads<s-taspri-posix.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    g-trasym.ads<g-trasym-unimplemented.ads \
    g-trasym.adb<g-trasym-unimplemented.adb \
    a-numaux.ads<a-numaux-x86.ads \
    a-numaux.adb<a-numaux-x86.adb
    ifeq ($(strip $(MULTISUBDIR)),/x86_64)
      LIBGNAT_TARGET_PAIRS += \
      system.ads<system-darwin-x86_64.ads
    else
      LIBGNAT_TARGET_PAIRS += \
      system.ads<system-darwin-x86.ads
    endif
  endif

  ifeq ($(strip $(filter-out %x86_64,$(arch))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-darwin.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-susv3.adb \
    s-osinte.adb<s-osinte-darwin.adb \
    s-osinte.ads<s-osinte-darwin.ads \
    s-osprim.adb<s-osprim-darwin.adb \
    s-taprop.adb<s-taprop-posix.adb \
    s-taspri.ads<s-taspri-posix.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    a-numaux.ads<a-numaux-x86.ads \
    a-numaux.adb<a-numaux-x86.adb \
    g-trasym.ads<g-trasym-unimplemented.ads \
    g-trasym.adb<g-trasym-unimplemented.adb \
    system.ads<system-darwin-x86_64.ads
  endif

  ifeq ($(strip $(filter-out powerpc%,$(arch))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-darwin.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-posix.adb \
    s-osinte.adb<s-osinte-darwin.adb \
    s-osinte.ads<s-osinte-darwin.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 \
    a-numaux.ads<a-numaux-darwin.ads \
    a-numaux.adb<a-numaux-darwin.adb \
    g-trasym.ads<g-trasym-unimplemented.ads \
    g-trasym.adb<g-trasym-unimplemented.adb \
    system.ads<system-darwin-ppc.ads
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb

  EH_MECHANISM=-gcc
  GNATLIB_SHARED = gnatlib-shared-darwin
  SO_OPTS = -Wl,-flat_namespace -shared-libgcc
  RANLIB = ranlib -c
  GMEM_LIB = gmemlib
  LIBRARY_VERSION := $(LIB_VERSION)
  soext = .dylib
  GCC_LINK_FLAGS=
endif

ifneq ($(EH_MECHANISM),)
  LIBGNAT_TARGET_PAIRS += a-exexpr.adb<a-exexpr$(EH_MECHANISM).adb
  EXTRA_LIBGNAT_SRCS+=raise$(EH_MECHANISM).c
  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

# The runtime library for gnat comprises two directories.  One contains the
# Ada source files that the compiler (gnat1) needs -- these files are listed
# by ADA_INCLUDE_SRCS -- and the other contains the object files and their
# corresponding .ali files for the parts written in Ada, libgnat.a for
# the parts of the runtime written in C, and libgthreads.a for the pthreads
# emulation library.  LIBGNAT_OBJS lists the objects that go into libgnat.a,
# while GNATRTL_OBJS lists the object files compiled from Ada sources that
# go into the directory.  The pthreads emulation is built in the threads
# subdirectory and copied.
LIBGNAT_SRCS = adadecode.c adadecode.h adaint.c adaint.h        \
  argv.c cio.c cstreams.c errno.c exit.c cal.c ctrl_c.c env.c env.h     \
  arit64.c raise.h raise.c sysdep.c aux-io.c init.c initialize.c        \
  seh_init.c final.c tracebak.c tb-alvms.c tb-alvxw.c tb-gcc.c          \
  expect.c mkdir.c socket.c gsocket.h targext.c $(EXTRA_LIBGNAT_SRCS)

LIBGNAT_OBJS = adadecode.o adaint.o argv.o cio.o cstreams.o ctrl_c.o    \
  errno.o exit.o env.o raise.o sysdep.o aux-io.o init.o initialize.o    \
  seh_init.o cal.o arit64.o final.o tracebak.o expect.o mkdir.o         \
  socket.o targext.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.

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

include $(fsrcdir)/ada/Makefile.rtl

GNATRTL_LINEARALGEBRA_OBJS = a-nlcoar.o a-nllcar.o a-nllrar.o a-nlrear.o \
  a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o

GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
  $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o

# Default run time 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

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

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

# 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

common-tools:
        $(GNATMAKE) -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): 
        $(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): 
        $(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): 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:  link.o targext.o
        $(GNATMAKE) $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
        $(GNATMAKE) -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:  link.o targext.o
        $(GNATMAKE) -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) $(LDFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) \
                    $(TOOLS_LIBS)

../../gnatlink$(exeext): $(P) b_gnatl.o link.o targext.o $(GNATLINK_OBJS)
        $(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -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
        -$(INSTALL_DATA) $(RTSDIR)/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
        -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)

# NOTE: The $(foreach ...) commands assume ";" is the valid separator between
#       successive target commands. Although the Gnu make documentation
#       implies this is true on all systems, I suspect it may not be, So care
#       has been taken to allow a sed script to look for ";)" and substitue
#       for ";" the appropriate character in the range of lines below
#       beginning with "GNULLI Begin" and ending with "GNULLI End"

# GNULLI Begin ###########################################################

../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 to be replaced by target dependent sources
        $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
                        $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR))))
        $(RM) $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb
# Copy new target dependent sources
        $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
                  $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
                        $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
# Copy generated target dependent sources
        $(RM) $(RTSDIR)/s-oscons.ads
        (cd $(RTSDIR); $(LN_S) ../s-oscons.ads s-oscons.ads)
        $(RM) ../stamp-gnatlib-$(RTSDIR)
        touch ../stamp-gnatlib1-$(RTSDIR)

# GNULLI End #############################################################

# 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)
        $(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)
        $(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)
        $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnala$(arext) \
           $(addprefix $(RTSDIR)/,$(GNATRTL_LINEARALGEBRA_OBJS))
        $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnala$(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) $(TARGET_LIBGCC2_CFLAGS)" \
             GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
             MULTISUBDIR="$(MULTISUBDIR)" \
             THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
        $(RM) $(RTSDIR)/libgna*$(soext)
        cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
                $(TARGET_LIBGCC2_CFLAGS) \
                -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
                $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
                $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
                $(MISCLIB) -lm
        cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \
                $(TARGET_LIBGCC2_CFLAGS) \
                -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) $(TARGET_LIBGCC2_CFLAGS)" \
             GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
             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) $(TARGET_LIBGCC2_CFLAGS)" \
             GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
             MULTISUBDIR="$(MULTISUBDIR)" \
             THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
        $(RM) $(RTSDIR)/libgna*$(soext)
        cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
                -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
                $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
                $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
        cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
                -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) $(TARGET_LIBGCC2_CFLAGS)" \
             GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) -fno-common" \
             MULTISUBDIR="$(MULTISUBDIR)" \
             THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
        $(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
        cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
                -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
                $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
                $(SO_OPTS) \
                -Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
                $(MISCLIB) -lm
        cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
                -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)" \
             TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
             $(GNATLIB_SHARED)

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

gnatlib-zcx:
        $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" ../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)" \
             MULTISUBDIR="$(MULTISUBDIR)" \
             THREAD_KIND="$(THREAD_KIND)" \
             TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib

# .s files for cross-building
gnat-cross: force
        make $(GNAT1_ADA_OBJS) CC="gcc -B../stage1/" CFLAGS="-S -gnatp"

# 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.c : $(GNATLINK_OBJS)
        $(GNATBIND) -C $(ADA_INCLUDES) -o b_gnatl.c gnatlink.ali
b_gnatl.o : b_gnatl.c

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

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

# 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. However we can do that only when building the runtime
# (not the compiler) because the -fno-optimize-sibling-calls option exists
# only in GCC 3 and above.

ifneq (,$(findstring xgcc,$(CC)))
NO_SIBLING_ADAFLAGS=-fno-optimize-sibling-calls
else
NO_SIBLING_ADAFLAGS=
endif

s-traceb.o  : s-traceb.adb
        $(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 no function reordering on a-except.o because of the exclusion bounds
# mechanism (see the source file for more detailed information). However we
# can do that only when building the runtime (not the compiler) because the
# -fno-toplevel-reorder option exists only in GCC 4.2 and above.

ifneq (,$(findstring xgcc,$(CC)))
NO_REORDER_ADAFLAGS=-fno-toplevel-reorder
else
NO_REORDER_ADAFLAGS=
endif

# 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-except.o without optimization and with debug info to let the
# debugger set breakpoints and inspect subprogram parameters on exception
# related events.

s-except.o  : s-except.adb 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 a-except.ads
        $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O2 $(ADA_INCLUDES) \
              $< $(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
gmem.o    : gmem.c
link.o    : link.c
mkdir.o   : mkdir.c
socket.o  : socket.c gsocket.h
sysdep.o  : sysdep.c
raise-gcc.o : raise-gcc.c raise.h
raise.o   : raise.c raise.h
vx_stack_info.o : vx_stack_info.c

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)

targext.o : targext.c
        $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ADA_CFLAGS) \
                $(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \
                $< $(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)

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

# Gnatlbr, Vms_help, and Gnat.hlp are only used on VMS

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

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

../../gnat.hlp: ../../vms_help$(exeext)
        ../../vms_help$(exeext) $(fsrcdir)/ada/gnat.help_in \
                                $(fsrcdir)/ada/vms_data.ads ../../gnat.hlp

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.