# Makefile for GNU Ada Compiler (GNAT).
#   Copyright (C) 1994-2005 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 2, 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 COPYING.  If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330,
#Boston, MA 02111-1307, USA.

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

# Tell GNU make 3.79 not to run this directory in parallel.
# Not all of the required dependencies are present.
.NOTPARALLEL:

# 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
# XCFLAGS is used for most compilations but not when using the GCC just built.
XCFLAGS =
CFLAGS = -g
BOOT_CFLAGS = -O $(CFLAGS)
# These exists to be overridden by the x-* and t-* files, respectively.
X_CFLAGS =
T_CFLAGS =

X_CPPFLAGS =
T_CPPFLAGS =

X_ADA_CFLAGS =
T_ADA_CFLAGS =

X_ADAFLAGS =
T_ADAFLAGS =

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@

SHELL = @SHELL@
PWD_COMMAND = $${PWDCMD-pwd}
# How to copy preserving the date
INSTALL_DATA_DATE = cp -p
MAKEINFO = makeinfo
TEXI2DVI = texi2dvi
GNATBIND = $(STAGE_PREFIX)gnatbind
GNATBIND_FLAGS = -static -x
ADA_CFLAGS =
ADAFLAGS = -W -Wall -gnatpg -gnata
SOME_ADAFLAGS =-gnata
FORCE_DEBUG_ADAFLAGS = -g
GNATLIBFLAGS = -gnatpg -nostdinc
GNATLIBCFLAGS = -g -O2
GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
	-DIN_RTS
ALL_ADA_CFLAGS = $(X_ADA_CFLAGS) $(T_ADA_CFLAGS) $(ADA_CFLAGS)
ALL_ADAFLAGS = $(CFLAGS) $(ALL_ADA_CFLAGS) $(X_ADAFLAGS) $(T_ADAFLAGS) \
	$(ADAFLAGS)
MOST_ADAFLAGS = $(CFLAGS) $(ALL_ADA_CFLAGS) $(X_ADAFLAGS) $(T_ADAFLAGS) \
	$(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 omits XCFLAGS, and specifies -B./.
# It also specifies -B$(tooldir)/ to find as and ld for a cross compiler.
GCC_CFLAGS = $(INTERNAL_CFLAGS) $(X_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@
#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.
srcdir = @srcdir@
VPATH = $(srcdir)

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 extra gnattools
EXTRA_GNATTOOLS =

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

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

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

# tmake_file and xmake_file expand to lists with entries of the form
# $(srcdir)/config/...  but here $(srcdir) is the ada subdirectory so we
# need to adjust the paths.  There can't be spaces in the subst arguments
# or we get spurious spaces in the actual list of files to include.

# target overrides
ifneq ($(tmake_file),)
include $(subst /config,/../config,$(tmake_file))
endif

# host overrides
ifneq ($(xmake_file),)
include $(subst /config,/../config,$(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) $(X_CFLAGS) $(T_CFLAGS) $(LOOSE_CFLAGS) \
	$(XCFLAGS)

# Likewise.
ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)

# 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)
TOOLS_LIBS = $(LIBGNAT) $(EXTRA_GNATTOOLS_OBJS) link.o ../../../libiberty/libiberty.a $(SYSLIBS)

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

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

INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \
	-I$(fsrcdir)/../../include -I$(fsrcdir)/..
ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)

# 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:
	$(CC) -c $(ALL_CFLAGS) $(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)/Makefile.in $(srcdir)/../version.c
	cd ..; \
	LANGUAGES="$(CONFIG_LANGUAGES)" \
	CONFIG_HEADERS= \
	CONFIG_FILES=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 stylesw.o switch.o system.o \
 table.o tree_io.o types.o validsw.o widechar.o

GNATMAKE_OBJS = a-except.o ctrl_c.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-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-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

# 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

# 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, do not distribute prefix.o (in libgccprefix), since it is only
# needed by external GNAT tools such as gnatdist and Glide.
# Override this variable on native platforms when needed.
PREFIX_OBJS =

# To avoid duplicate code, use this variable to set PREFIX_OBJS when needed:
PREFIX_REAL_OBJS = ../prefix.o \
  ../../libiberty/concat.o     \
  ../../libiberty/xmalloc.o    \
  ../../libiberty/xstrdup.o    \
  ../../libiberty/xexit.o

LIB_VERSION = $(strip $(shell grep ' Library_Version :' $(fsrcpfx)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 %86 os2 OS2 os2_emx,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-excpol.adb<a-excpol-abort.adb \
  a-intnam.ads<a-intnam-dummy.ads \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  s-inmaop.adb<s-inmaop-dummy.adb \
  s-interr.adb<s-interr-dummy.adb \
  s-intman.adb<s-intman-dummy.adb \
  s-mastop.adb<s-mastop-x86.adb \
  s-osinte.adb<s-osinte-os2.adb \
  s-osinte.ads<s-osinte-os2.ads \
  s-osprim.adb<s-osprim-os2.adb \
  s-parame.adb<s-parame-os2.adb \
  system.ads<system-os2.ads \
  s-taprop.adb<s-taprop-os2.adb \
  s-taspri.ads<s-taspri-os2.ads

  EXTRA_GNATRTL_NONTASKING_OBJS = \
  i-os2err.o \
  i-os2lib.o \
  i-os2syn.o \
  i-os2thr.o
endif

ifeq ($(strip $(filter-out %86 interix%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-excpol.adb<a-excpol-interix.adb \
  a-intnam.ads<a-intnam-interix.ads \
  a-numaux.adb<a-numaux-x86.adb \
  a-numaux.ads<a-numaux-x86.ads \
  g-soccon.ads<g-soccon-interix.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-mastop.adb<s-mastop-x86.adb \
  s-osinte.adb<s-osinte-fsu.adb \
  s-osinte.ads<s-osinte-interix.ads \
  s-osprim.adb<s-osprim-unix.adb \
  s-taprop.adb<s-taprop-posix.adb \
  system.ads<system-interix.ads \
  s-taspri.ads<s-taspri-posix.ads \
  s-tpopsp.adb<s-tpopsp-posix.adb

  THREADSLIB = -lgthreads -lmalloc
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
endif

# sysv5uw is SCO UnixWare 7
ifeq ($(strip $(filter-out %86 sysv5uw%,$(arch) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-excpol.adb<a-excpol-abort.adb \
  a-intnam.ads<a-intnam-unixware.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-mastop.adb<s-mastop-x86.adb \
  s-osinte.ads<s-osinte-unixware.ads \
  s-osinte.adb<s-osinte-unixware.adb \
  s-osprim.adb<s-osprim-unix.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-unixware.ads \
  g-soccon.ads<g-soccon-unixware.ads \
  g-soliop.ads<g-soliop-unixware.ads

  THREADSLIB = -lthread
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
  SO_OPTS = -Wl,-h,
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out alpha% dec vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-vxwork.ads<s-vxwork-alpha.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-alpha.ads

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

ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-m68k.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-m68k.ads

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

  EXTRA_GNATRTL_NONTASKING_OBJS=i-vxwork.o i-vxwoio.o
  EXTRA_GNATRTL_TASKING_OBJS=s-vxwork.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-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-ppc.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-ppc.ads

  TOOLS_TARGET_PAIRS=mlib-tgt.adb<mlib-tgt-vxworks.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

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

ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-sparcv9.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-sparcv9.ads   \

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

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

ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  a-intnam.ads<a-intnam-vxworks.ads \
  i-vxwork.ads<i-vxwork-x86.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-interr.adb<s-interr-vxworks.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-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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-x86.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-x86.ads

  TOOLS_TARGET_PAIRS=mlib-tgt.adb<mlib-tgt-vxworks.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

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

ifeq ($(strip $(filter-out xscale% coff wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-xscale.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-elf-sparc.ads

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

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

ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  a-sytaco.ads<a-sytaco-vxworks.ads \
  a-sytaco.adb<a-sytaco-vxworks.adb \
  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-vxworks.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-stchop.adb<s-stchop-vxworks.adb \
  s-taprop.adb<s-taprop-vxworks.adb \
  s-taspri.ads<s-taspri-vxworks.ads \
  s-tpopsp.adb<s-tpopsp-vxworks.adb \
  s-vxwork.ads<s-vxwork-mips.ads \
  g-soccon.ads<g-soccon-vxworks.ads \
  g-socthi.ads<g-socthi-vxworks.ads \
  g-socthi.adb<g-socthi-vxworks.adb \
  system.ads<system-vxworks-mips.ads

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

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

ifeq ($(strip $(filter-out sparc sun solaris%,$(targ))),)
  LIBGNAT_TARGET_PAIRS = \
  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-parame.adb<s-parame-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-soccon.ads<g-soccon-solaris.ads \
  g-soliop.ads<g-soliop-solaris.ads \
  system.ads<system-solaris-sparc.ads

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

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

  ifeq ($(strip $(filter-out fsu FSU,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS = \
    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-fsu.adb \
    s-osinte.ads<s-osinte-solaris-fsu.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.adb \
    g-soccon.ads<g-soccon-solaris.ads \
    g-soliop.ads<g-soliop-solaris.ads \
    system.ads<system-solaris-sparc.ads

    THREADSLIB = -lgthreads -lmalloc
  endif

  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-soccon.ads<g-soccon-solaris.ads \
    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 = \
    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-parame.adb<s-parame-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-soccon.ads<g-soccon-solaris.ads \
    g-soliop.ads<g-soliop-solaris.ads \
    system.ads<system-solaris-sparcv9.ads
  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-mastop.adb<s-mastop-x86.adb \
  s-osinte.adb<s-osinte-solaris.adb \
  s-osinte.ads<s-osinte-solaris.ads \
  s-osprim.adb<s-osprim-solaris.adb \
  s-parame.adb<s-parame-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-soccon.ads<g-soccon-solaris.ads \
  g-soliop.ads<g-soliop-solaris.ads \
  system.ads<system-solaris-x86.ads

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

  THREADSLIB = -lposix4 -lthread
  MISCLIB = -lposix4 -lnsl -lsocket
  SO_OPTS = -Wl,-h,
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  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 \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-mastop.adb<s-mastop-x86.adb \
  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-taspri.ads<s-taspri-linux.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-parame.adb<s-parame-linux.adb \
  system.ads<system-linux-x86.ads

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

  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  LIBRARY_VERSION := $(LIB_VERSION)

  ifeq ($(strip $(filter-out fsu FSU,$(THREAD_KIND))),)
    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-mastop.adb<s-mastop-x86.adb \
    s-osinte.adb<s-osinte-fsu.adb \
    s-osinte.ads<s-osinte-linux-fsu.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-linux-x86.ads

    THREADSLIB = -lgthreads -lmalloc
  endif
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-soccon.ads<g-soccon-freebsd.ads \
  s-inmaop.adb<s-inmaop-posix.adb \
  s-intman.adb<s-intman-posix.adb \
  s-mastop.adb<s-mastop-x86.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.adb<mlib-tgt-linux.adb
  GNATLIB_SHARED = gnatlib-shared-dual

  THREADSLIB= -lc_r
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
  ifeq ($(strip $(filter-out s390x,$(arch))),)
    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-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-taspri.ads<s-taspri-linux.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    s-parame.adb<s-parame-linux.adb \
    system.ads<system-linux-s390x.ads
  else
    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-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-taspri.ads<s-taspri-linux.ads \
    s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
    s-parame.adb<s-parame-linux.adb \
    system.ads<system-linux-s390.ads
  endif

  TOOLS_TARGET_PAIRS =  \
    mlib-tgt.adb<mlib-tgt-linux.adb

  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  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 \
    g-soccon.ads<g-soccon-irix.ads \
    system.ads<system-irix-n32.ads

    THREADSLIB = -lpthread
    GNATLIB_SHARED = gnatlib-shared-default

  else
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-irix.ads \
    s-inmaop.adb<s-inmaop-dummy.adb \
    s-interr.adb<s-interr-sigaction.adb \
    s-intman.adb<s-intman-irix-athread.adb \
    s-mastop.adb<s-mastop-irix.adb \
    s-osinte.adb<s-osinte-irix.adb \
    s-osinte.ads<s-osinte-irix-athread.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-athread.adb \
    s-tasinf.adb<s-tasinf-irix-athread.adb \
    s-tasinf.ads<s-tasinf-irix-athread.ads \
    s-taspri.ads<s-taspri-posix.ads \
    s-traceb.adb<s-traceb-mastop.adb \
    g-soccon.ads<g-soccon-irix.ads \
    system.ads<system-irix-o32.ads
  endif

  TOOLS_TARGET_PAIRS = mlib-tgt.adb<mlib-tgt-irix.adb
  TGT_LIB = -lexc
  MISCLIB = -lexc
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  LIBRARY_VERSION := $(LIB_VERSION)
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 \
  g-soccon.ads<g-soccon-hpux.ads \
  system.ads<system-hpux.ads

  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
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 \
  g-soccon.ads<g-soccon-hpux.ads \
  system.ads<system-hpux.ads

  TOOLS_TARGET_PAIRS = mlib-tgt.adb<mlib-tgt-hpux.adb
  TGT_LIB = /usr/lib/libcl.a
  THREADSLIB = -lpthread
  GMEM_LIB = gmemlib
  soext = .sl
  SO_OPTS = -Wl,+h,
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  GNATLIB_SHARED = gnatlib-shared-dual
  LIBRARY_VERSION := $(LIB_VERSION)

  ifeq ($(strip $(filter-out dce DCE,$(THREAD_KIND))),)
    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 \
    g-soccon.ads<g-soccon-hpux.ads \
    system.ads<system-hpux.ads

    TGT_LIB =
    THREADSLIB = -lcma
  endif
endif

ifeq ($(strip $(filter-out ibm aix%,$(manu) $(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  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 \
  g-soccon.ads<g-soccon-aix.ads \
  system.ads<system-aix.ads

  THREADSLIB = -lpthreads
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)

  ifeq ($(strip $(filter-out fsu FSU,$(THREAD_KIND))),)
    LIBGNAT_TARGET_PAIRS = \
    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-fsu.adb \
    s-osinte.ads<s-osinte-aix-fsu.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 \
    g-soccon.ads<g-soccon-aix.ads \
    system.ads<system-aix.ads

    THREADSLIB = -lgthreads -lmalloc
  endif

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

  GMEM_LIB = gmemlib
endif

ifeq ($(strip $(filter-out lynxos,$(osys))),)
  TOOLS_TARGET_PAIRS=mlib-tgt.adb<mlib-tgt-lynxos.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 \
    s-mastop.adb<s-mastop-x86.adb \
    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 \
    system.ads<system-lynxos-x86.ads

    PREFIX_OBJS=$(PREFIX_REAL_OBJS)

  else
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<a-intnam-lynxos.ads \
    s-inmaop.adb<s-inmaop-posix.adb \
    s-intman.adb<s-intman-posix.adb \
    s-osinte.adb<s-osinte-lynxos-3.adb \
    s-osinte.ads<s-osinte-lynxos-3.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-lynxos-ppc.ads

    ifeq ($(strip $(filter-out pthread PTHREAD,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS = \
      a-intnam.ads<a-intnam-lynxos.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 \
      system.ads<system-lynxos-ppc.ads
    endif
  endif
endif

ifeq ($(strip $(filter-out rtems%,$(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  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
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 \
  g-soccon.ads<g-soccon-tru64.ads \
  system.ads<system-tru64.ads

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

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

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

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

ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
AR = iar
endif

.SUFFIXES: .sym

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

ifeq ($(strip $(filter-out alpha% 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 \
  s-auxdec.ads<s-auxdec-vms_64.ads \
  s-crtl.ads<s-crtl-vms.ads \
  s-osinte.adb<s-osinte-vms-ia64.adb \
  s-osinte.ads<s-osinte-vms-ia64.ads \
  system.ads<system-vms_64.ads
else
ifeq ($(strip $(filter-out alpha% dec vms% openvms% alphavms%,$(targ))),)
  LIBGNAT_TARGET_PAIRS_AUX1 = \
  g-enblsp.adb<g-enblsp-vms-alpha.adb \
  s-asthan.adb<s-asthan-vms-alpha.adb \
  s-crtl.ads<s-crtl-vms.ads \
  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-zcx.ads
endif
endif
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.ads
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-soccon.ads<g-soccon-vms.adb \
  g-socthi.ads<g-socthi-vms.ads \
  g-socthi.adb<g-socthi-vms.adb \
  g-trasym.adb<g-trasym-vms.adb \
  i-cstrea.adb<i-cstrea-vms.adb \
  i-cpp.adb<i-cpp-vms.adb \
  interfac.ads<interfac-vms.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-osprim.adb<s-osprim-vms.adb \
  s-osprim.ads<s-osprim-vms.ads \
  s-taprop.adb<s-taprop-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 \
  s-traent.adb<s-traent-vms.adb \
  s-traent.ads<s-traent-vms.ads \
  $(LIBGNAT_TARGET_PAIRS_AUX1) \
  $(LIBGNAT_TARGET_PAIRS_AUX2)

ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
  TOOLS_TARGET_PAIRS= \
  mlib-tgt.adb<mlib-tgt-vms-ia64.adb \
  symbols.adb<symbols-vms-ia64.adb
else
  TOOLS_TARGET_PAIRS= \
  mlib-tgt.adb<mlib-tgt-vms-alpha.adb \
  symbols.adb<symbols-vms-alpha.adb
endif

  GNATLIB_SHARED=gnatlib-shared-vms
ifeq ($(strip $(filter-out alpha% dec vms% openvms% alphavms%,$(targ))),)
  EXTRA_LIBGNAT_SRCS=vmshandler.asm
  EXTRA_LIBGNAT_OBJS=vmshandler.o
endif
  EXTRA_GNATRTL_TASKING_OBJS=s-tpopde.o
  EXTRA_GNATTOOLS = \
     ../../gnatlbr$(exeext) \
     ../../gnatsym$(exeext)
  # This command transforms (YYYYMMDD) into YY,MMDD
  GSMATCH_VERSION := $(shell grep "^ *Gnat_Static_Version_String" $(fsrcpfx)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 cygwin32% mingw32% pe,$(osys))),)
  LIBGNAT_TARGET_PAIRS = \
  a-calend.adb<a-calend-mingw.adb \
  a-dirval.adb<a-dirval-mingw.adb \
  a-excpol.adb<a-excpol-abort.adb \
  a-intnam.ads<a-intnam-mingw.ads \
  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-interr.adb<s-interr-sigaction.adb \
  s-intman.adb<s-intman-mingw.adb \
  s-mastop.adb<s-mastop-x86.adb \
  s-memory.adb<s-memory-mingw.adb \
  s-osinte.ads<s-osinte-mingw.ads \
  s-osprim.adb<s-osprim-mingw.adb \
  s-taprop.adb<s-taprop-mingw.adb \
  s-taspri.ads<s-taspri-mingw.ads \
  s-parame.adb<s-parame-mingw.adb \
  g-socthi.ads<g-socthi-mingw.ads \
  g-socthi.adb<g-socthi-mingw.adb \
  g-soccon.ads<g-soccon-mingw.ads \
  g-soliop.ads<g-soliop-mingw.ads \
  system.ads<system-mingw.ads

  TOOLS_TARGET_PAIRS= \
  mlib-tgt.adb<mlib-tgt-mingw.adb \
  indepsw.adb<indepsw-mingw.adb

  MISCLIB = -lwsock32
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  EXTRA_GNATTOOLS = ../../gnatdll$(exeext)
  EXTRA_GNATMAKE_OBJS = mdll.o mdll-utl.o mdll-fil.o
  EXTRA_GNATRTL_NONTASKING_OBJS = g-regist.o
  soext = .dll
# ??? 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
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out powerpc% 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-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-taspri.ads<s-taspri-linux.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-parame.adb<s-parame-linux.adb \
  system.ads<system-linux-ppc.ads

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

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

ifeq ($(strip $(filter-out sparc% 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-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-taspri.ads<s-taspri-linux.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-parame.adb<s-parame-linux.adb \
  system.ads<system-linux-sparc.ads

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

  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  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-osinte.adb<s-osinte-posix.adb \
  s-osinte.ads<s-osinte-linux-hppa.ads \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-taspri.ads<s-taspri-linux.ads \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-parame.adb<s-parame-linux.adb \
  system.ads<system-linux-hppa.ads

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

  THREADSLIB = -lpthread
  GNATLIB_SHARED = gnatlib-shared-dual
  GMEM_LIB = gmemlib
  PREFIX_OBJS = $(PREFIX_REAL_OBJS)
  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-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-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-taspri.ads<s-taspri-linux.ads \
  system.ads<system-linux-ia64.ads

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

  MISCLIB=
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
  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-osinte.ads<s-osinte-linux-alpha.ads \
  s-osinte.adb<s-osinte-posix.adb \
  s-osprim.adb<s-osprim-posix.adb \
  s-taprop.adb<s-taprop-linux.adb \
  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-taspri.ads<s-taspri-linux.ads \
  system.ads<system-linux-alpha.ads

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

  MISCLIB=
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
  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-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-tpopsp.adb<s-tpopsp-posix-foreign.adb \
  s-taspri.ads<s-taspri-linux.ads \
  system.ads<system-linux-x86_64.ads

  TOOLS_TARGET_PAIRS=mlib-tgt.adb<mlib-tgt-linux.adb
  THREADSLIB=-lpthread
  GNATLIB_SHARED=gnatlib-shared-dual
  GMEM_LIB = gmemlib
  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
  LIBRARY_VERSION := $(LIB_VERSION)
endif

ifeq ($(strip $(filter-out powerpc darwin%,$(arch) $(osys))),)
  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 \
  g-soccon.ads<g-soccon-darwin.ads \
  a-numaux.ads<a-numaux-darwin.ads \
  a-numaux.adb<a-numaux-darwin.adb \
  system.ads<system-darwin-ppc.ads

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

  GNATLIB_SHARED = gnatlib-shared-darwin
  SO_OPTS = -Wl,-flat_namespace
  RANLIB = ranlib -c
  GMEM_LIB = gmemlib

  LIBRARY_VERSION := $(LIB_VERSION)
  soext = .dylib
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 = ada.h adaint.c adaint.h argv.c cio.c cstreams.c \
  errno.c exit.c cal.c ctrl_c.c \
  raise.h raise.c sysdep.c aux-io.c init.c seh_init.c \
  final.c tracebak.c tb-alvms.c tb-alvxw.c expect.c mkdir.c socket.c gsocket.h \
  $(EXTRA_LIBGNAT_SRCS)

LIBGNAT_OBJS = adaint.o argv.o cio.o cstreams.o ctrl_c.o errno.o exit.o \
  raise.o sysdep.o aux-io.o init.o seh_init.o cal.o final.o \
  tracebak.o expect.o mkdir.o socket.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)/Makefile.rtl

GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_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 Makefile.adalib memtrack.adb \
 a-*.adb a-*.ads g-*.ad? i-*.ad? \
 s-[a-o]*.adb s-[p-z]*.adb \
 s-[a-o]*.ads s-[p-z]*.ads

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

GCC_LINK="$(CC) -static-libgcc $(ADA_INCLUDES)"

# Build directory for the tools. Let's copy the target-dependent
# sources using the same mechanism as for gnatlib. The other sources are 
# accessed using the vpath directive below

../stamp-tools:
	-$(RM) tools/*
	-$(RMDIR) tools
	-$(MKDIR) tools
	-(cd tools; $(LN_S) ../sdefault.adb .)
	-$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
	          $(RM) tools/$(word 1,$(subst <, ,$(PAIR)));\
	          $(LN_S) $(fsrcdir)/$(word 2,$(subst <, ,$(PAIR))) \
	                tools/$(word 1,$(subst <, ,$(PAIR)));)
	touch ../stamp-tools

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

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

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

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

# these tools are built with gnatmake & are common to native and cross
gnattools2: ../stamp-tools
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=native \
	  ../../gnatchop$(exeext) ../../gnat$(exeext) ../../gnatkr$(exeext) \
	  ../../gnatls$(exeext) ../../gnatprep$(exeext) \
	  ../../gnatxref$(exeext) \
	  ../../gnatfind$(exeext) ../../gnatname$(exeext) \
	  ../../gnatclean$(exeext) ../../gprmake$(exeext)

# These tools are only built for the native version.
gnattools3: ../stamp-tools
ifneq ($(EXTRA_GNATTOOLS),)
	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
	  TOOLSCASE=native top_builddir=../../.. $(EXTRA_GNATTOOLS)
endif

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gnatmake-re: ../stamp-tools link.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: ../stamp-tools link.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 $(GNATMAKE_OBJS)
	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) \
	      $(TOOLS_LIBS)

../../gnatlink$(exeext): $(P) b_gnatl.o link.o $(GNATLINK_OBJS)
	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) \
	      $(TOOLS_LIBS)

../../gnatbl$(exeext): gnatbl.o
	$(CC) -o $@ $(ALL_CFLAGS) $(LDFLAGS) gnatbl.o $(TOOLS_LIBS)

gnatbl.o: gnatbl.c adaint.h
	$(CC) $(ALL_CFLAGS) $(INCLUDES) -c $< $(OUTPUT_OPTION)

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

install-gnatlib: ../stamp-gnatlib
#	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 rts/*.ali; do \
	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	done
	-$(INSTALL_DATA) rts/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
	-cd rts; for file in *$(arext);do \
	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	    $(RANLIB) $(RANLIB_FLAGS) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \
	done
	-$(foreach file, $(EXTRA_ADALIB_FILES), \
	    $(INSTALL_DATA_DATE) rts/$(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.
	for file in gnat gnarl; do \
	   if [ -f rts/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
	      $(INSTALL) rts/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
			 $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
	   fi; \
	   if [ -f rts/lib$${file}$(soext) ]; then \
	      $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
	      $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
	   fi; \
	done
# This copy must be done preserving the date on the original file.
	for file in rts/*.adb rts/*.ads; 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:
	$(RM) rts/s-*.ali
	$(RM) rts/s-*$(objext)
	$(RM) rts/a-*.ali
	$(RM) rts/a-*$(objext)
	$(RM) rts/*.ali
	$(RM) rts/*$(objext)
	$(RM) rts/*$(arext)
	$(RM) rts/*$(soext)
	touch ../stamp-gnatlib2
	$(RM) ../stamp-gnatlib

# 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: Makefile ../stamp-gnatlib2
	$(RMDIR) rts
	$(MKDIR) rts
	$(CHMOD) u+w rts
# Copy target independent sources
	$(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \
	  $(LN_S) $(fsrcpfx)$(f) rts ;) true
# Remove files to be replaced by target dependent sources
	$(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	                rts/$(word 1,$(subst <, ,$(PAIR))))
	$(RM) rts/*-*-*.ads rts/*-*-*.adb
# Copy new target dependent sources
	$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
	          $(LN_S) $(fsrcpfx)$(word 2,$(subst <, ,$(PAIR))) \
	                rts/$(word 1,$(subst <, ,$(PAIR)));)
	$(RM) ../stamp-gnatlib
	touch ../stamp-gnatlib1

# 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 rts; ar rc libfoo.a $(LONG_LIST_OF_OBJS)
# is guaranteed to overflow the buffer.

gnatlib: ../stamp-gnatlib1 ../stamp-gnatlib2
	$(MAKE) -C rts CC="../../xgcc -B../../" \
	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
                CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
		srcdir=$(fsrcdir) \
	        -f ../Makefile $(LIBGNAT_OBJS)
	$(MAKE) -C rts CC="../../xgcc -B../../" \
	        ADA_INCLUDES="" \
                CFLAGS="$(GNATLIBCFLAGS)" \
	        ADAFLAGS="$(GNATLIBFLAGS)" \
		srcdir=$(fsrcdir) \
	        -f ../Makefile \
	        $(GNATRTL_OBJS)
	$(RM) rts/libgnat$(arext) rts/libgnarl$(arext)
	$(AR) $(AR_FLAGS) rts/libgnat$(arext) \
	   $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
        ifneq ($(PREFIX_OBJS),)
		$(AR) $(AR_FLAGS) rts/libgccprefix$(arext) $(PREFIX_OBJS);
        endif
	-$(RANLIB) $(RANLIB_FLAGS) rts/libgnat$(arext)
	$(AR) $(AR_FLAGS) rts/libgnarl$(arext) \
	   $(addprefix rts/,$(GNATRTL_TASKING_OBJS))
	-$(RANLIB) $(RANLIB_FLAGS) rts/libgnarl$(arext)
        ifeq ($(GMEM_LIB),gmemlib)
		$(AR) $(AR_FLAGS) rts/libgmem$(arext) rts/memtrack.o
		-$(RANLIB) $(RANLIB_FLAGS) rts/libgmem$(arext)
        endif
	$(CHMOD) a-wx rts/*.ali
	touch ../stamp-gnatlib

# 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)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) rts/libgna*$(soext)
	cd rts; ../../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) -lm
	cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_TASKING_OBJS) \
		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(THREADSLIB)
	cd rts; $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnat$(soext)
	cd rts; $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnarl$(soext)

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

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

# ??? 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)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) rts/libgna*$(soext)
	cd rts; ../../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 rts; ../../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) \
	                    -fno-common" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     gnatlib
	$(RM) rts/libgnat$(soext) rts/libgnarl$(soext)
	cd rts; ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
		$(SO_OPTS) \
		$(MISCLIB) -lm
	cd rts; ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		$(GNATRTL_TASKING_OBJS) \
		$(SO_OPTS) \
		$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
	cd rts; $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnat$(soext)
	cd rts; $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
		libgnarl$(soext)

gnatlib-shared-vms:
	$(MAKE) $(FLAGS_TO_PASS) \
             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     THREAD_KIND="$(THREAD_KIND)" \
             gnatlib
	$(RM) rts/libgna*$(soext)
	cd rts && echo "case_sensitive=yes" > SYMVEC_$$$$.opt && \
	objdump --syms $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) | \
	$(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt && \
	echo "case_sensitive=NO" >> SYMVEC_$$$$.opt && \
	../../xgcc -g -B../../ -nostartfiles -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 rts && echo "case_sensitive=yes" > SYMVEC_$$$$.opt && \
	objdump --syms $(GNATRTL_TASKING_OBJS) | \
	$(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt && \
	echo "case_sensitive=NO" >> SYMVEC_$$$$.opt && \
	../../xgcc -g -B../../ -nostartfiles -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)" \
	     THREAD_KIND="$(THREAD_KIND)" \
	     TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
             $(GNATLIB_SHARED)

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

gnatlib-zcx: ../stamp-gnatlib1
	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' rts/system.ads > rts/s.ads
	$(MV) rts/s.ads rts/system.ads
	$(MAKE) $(FLAGS_TO_PASS) \
	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
	     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 exists
# only in GCC 3.

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 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 \
	      $(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    : raise.h exit.c
expect.o  : expect.c
final.o   : raise.h final.c
gmem.o    : gmem.c
link.o    : link.c
mkdir.o   : mkdir.c
socket.o  : socket.c gsocket.h
sysdep.o  : sysdep.c

gen-soccon: gen-soccon.c gsocket.h
	$(CC) $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \
		$(ALL_CPPFLAGS) $(INCLUDES) -DTARGET=\"$(target_alias)\" \
		$< $(OUTPUT_OPTION)

cio.o     : cio.c
	$(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

init.o    : init.c ada.h types.h raise.h
	$(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

# No optimization to compile this file as optimizations (-O1 or above) breaks
# the SEH handling on Windows. The reasons are not clear.
seh_init.o : seh_init.c raise.h
	$(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) -O0 \
	         $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

raise.o   : raise.c raise.h
	$(CC) -c $(ALL_CFLAGS) $(ADA_CFLAGS) $(RT_FLAGS) \
		 $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)

# Need to keep the frame pointer in this file to pop the stack properly on
# some targets.
tracebak.o  : tracebak.c tb-alvms.c tb-alvxw.c
	$(CC) -c $(ALL_CFLAGS) $(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 is 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)
