gcc/libada/Makefile.in
Arnaud Charlet c2b5e13ba5 Makefile.in: Fix errors introduced in previous change (in particular...
* Makefile.in: Fix errors introduced in previous change (in particular,
	errors when building gnattools were ignored).
	Code clean up and simplification.
	update comments.
	Remove temporary debug code introduced by mistake in previous check in.
	Prefer GNU Make syntax over complex and error-prone sh syntax.
	(gnatlib-zcx): New target.
	(ada.all.cross): Merged with gnattools-cross target.

From-SVN: r80857
2004-04-19 17:24:27 +02:00

266 lines
8.2 KiB
Makefile

# Makefile for libada.
# Copyright 2003, 2004 Free Software Foundation, Inc.
#
# This file 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 of the License, or
# (at your option) any later version.
#
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Default target; must be first.
all: gnatlib gnattools
# Standard autoconf-set variables.
SHELL = @SHELL@
srcdir = @srcdir@
build = @build@
target = @target@
prefix = @prefix@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
# Nonstandard autoconf-set variables.
enable_shared = @enable_shared@
LN_S=@LN_S@
target_noncanonical=@target_noncanonical@
# Variables for the user (or the top level) to override.
objext=.o
GNATLIBFLAGS= -W -Wall -gnatpg
THREAD_KIND=native
TRACE=no
GNATLIBLDFLAGS=
ADA_FOR_BUILD=
ADA_FOR_TARGET=
LDFLAGS=
STAGE_PREFIX=
# The tedious process of getting CFLAGS right.
CFLAGS=-g
LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
GCC_WARN_CFLAGS = $(LOOSE_WARN) $(NOCOMMON_FLAG)
ADA_CFLAGS=
T_ADA_CFLAGS=
# HPPA is literally the only target which sets X_ADA_CFLAGS
X_ADA_CFLAGS=@x_ada_cflags@
ALL_ADA_CFLAGS=$(X_ADA_CFLAGS) $(T_ADA_CFLAGS) $(ADA_CFLAGS)
# Variables for gnattools.
ADAFLAGS= -gnatpg -gnata
ADA_INCLUDE_DIR = $(libsubdir)/adainclude
ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
# For finding the GCC build dir, which is used far too much
GCC_DIR=../../gcc
# Include fragment generated by GCC configure.
include $(GCC_DIR)/libada-mk
# Variables based on those gleaned from the GCC makefile. :-P
libsubdir=$(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
TARGET_LIBGCC2_CFLAGS=
GNATLIBCFLAGS= -g -O2
# Get target-specific overrides for TARGET_LIBGCC2_CFLAGS
# and possibly GNATLIBCFLAGS. Currently this uses files
# in gcc/config. The 'subst' call is used to rerelativize them
# from their gcc locations. This is hackery, but there isn't
# yet a better way to do this.
tmake_file=$(subst /config,/../gcc/config,$(gcc_tmake_file))
ifneq ($(tmake_file),)
include $(tmake_file)
endif
# Get possible host-specific override for libsubdir (ick).
xmake_file=$(subst /config,/../gcc/config,$(gcc_xmake_file))
ifneq ($(xmake_file),)
include $(xmake_file)
endif
FLAGS_TO_PASS = \
"MAKEOVERRIDES=" \
"LDFLAGS=$(LDFLAGS)" \
"LN_S=$(LN_S)" \
"SHELL=$(SHELL)" \
"exeext=$(exeext)" \
"objext=$(objext)" \
"prefix=$(prefix)" \
"STAGE_PREFIX=$(STAGE_PREFIX)" \
"CC=$(cc_set_by_configure)" \
"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)"
ADA_FLAGS_TO_PASS = \
"ADA_FOR_BUILD=$(ADA_FOR_BUILD)" \
"ADA_INCLUDE_DIR=$(ADA_INCLUDE_DIR)" \
"ADA_RTL_OBJ_DIR=$(ADA_RTL_OBJ_DIR)" \
"ADAFLAGS=$(ADAFLAGS)" \
"ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \
"INSTALL=$(INSTALL)" \
"INSTALL_DATA=$(INSTALL_DATA)" \
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)"
ADA_TOOLS_FLAGS_TO_PASS=\
"CC=../../xgcc -B../../" \
"CFLAGS=$(CFLAGS)" \
"exeext=$(exeext)" \
"ADAFLAGS=$(ADAFLAGS)" \
"ADA_INCLUDES=-I../rts" \
"GNATMAKE=../../gnatmake" \
"GNATLINK=../../gnatlink" \
"GNATBIND=../../gnatbind"
# Rules to build gnatlib.
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared
gnatlib: @default_gnatlib_target@
gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared:
$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
GNATLIBFLAGS="$(GNATLIBFLAGS)" \
GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
THREAD_KIND="$(THREAD_KIND)" \
TRACE="$(TRACE)" $@
.PHONY: rts-zfp rts-ravenscar
rts-zfp rts-ravenscar:
$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
GNATMAKE=../gnatmake-cross $@
# Rules to build gnattools.
# For cross builds of gnattools,
# put the host RTS dir first in the PATH to hide the default runtime
# files that are among the sources
RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
ifeq ($(build),$(target))
GNATTOOLS = gnattools-native
else
GNATTOOLS = gnattools-cross
endif
.PHONY: gnattools regnattools
gnattools: $(GNATTOOLS)
gnattools-native: gnatlib
$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
ADA_INCLUDES="-I- -I../rts" \
CC="../../xgcc -B../../" STAGE_PREFIX=../../ gnattools1
$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3
regnattools:
$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3
gnattools-cross: gnatlib
$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
ADA_INCLUDES="-I$(RTS_DIR)../adainclude -I$(RTS_DIR)" \
GNATMAKE="gnatmake" \
GNATBIND="gnatbind" \
GNATLINK="gnatlink" \
LIBGNAT="" \
gnattools1-re gnattools2 gnattools4
# rename cross tools, as expected by the GCC makefile when installing
if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \
mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatbl$(exeext) ] ; then \
mv $(GCC_DIR)/gnatbl$(exeext) $(GCC_DIR)/gnatbl-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatchop$(exeext) ] ; then \
mv $(GCC_DIR)/gnatchop$(exeext) $(GCC_DIR)/gnatchop-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnat$(exeext) ] ; then \
mv $(GCC_DIR)/gnat$(exeext) $(GCC_DIR)/gnat-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatkr$(exeext) ] ; then \
mv $(GCC_DIR)/gnatkr$(exeext) $(GCC_DIR)/gnatkr-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatlink$(exeext) ] ; then \
mv $(GCC_DIR)/gnatlink$(exeext) $(GCC_DIR)/gnatlink-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatls$(exeext) ] ; then \
mv $(GCC_DIR)/gnatls$(exeext) $(GCC_DIR)/gnatls-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatmake$(exeext) ] ; then \
mv $(GCC_DIR)/gnatmake$(exeext) $(GCC_DIR)/gnatmake-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatmem$(exeext) ] ; then \
mv $(GCC_DIR)/gnatmem$(exeext) $(GCC_DIR)/gnatmem-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatname$(exeext) ] ; then \
mv $(GCC_DIR)/gnatname$(exeext) $(GCC_DIR)/gnatname-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatprep$(exeext) ] ; then \
mv $(GCC_DIR)/gnatprep$(exeext) $(GCC_DIR)/gnatprep-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatxref$(exeext) ] ; then \
mv $(GCC_DIR)/gnatxref$(exeext) $(GCC_DIR)/gnatxref-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatfind$(exeext) ] ; then \
mv $(GCC_DIR)/gnatfind$(exeext) $(GCC_DIR)/gnatfind-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatclean$(exeext) ] ; then \
mv $(GCC_DIR)/gnatclean$(exeext) $(GCC_DIR)/gnatclean-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gnatsym$(exeext) ] ; then \
mv $(GCC_DIR)/gnatsym$(exeext) $(GCC_DIR)/gnatsym-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gpr2make$(exeext) ] ; then \
mv $(GCC_DIR)/gpr2make$(exeext) $(GCC_DIR)/gpr2make-cross$(exeext); \
fi
if [ -f $(GCC_DIR)/gprcmd$(exeext) ] ; then \
mv $(GCC_DIR)/gprcmd$(exeext) $(GCC_DIR)/gprcmd-cross$(exeext); \
fi
# Check uninstalled version.
check:
# Check installed version.
installcheck:
# Build info (none here).
info:
# Build DVI (none here).
dvi:
# Build TAGS (none here).
TAGS:
# Installation rules.
install:
install-info:
# Cleaning rules.
mostlyclean:
clean:
distclean:
$(RM) Makefile config.status config.log
maintainer-clean:
# Rules for rebuilding this Makefile.
Makefile: $(srcdir)/Makefile.in config.status
CONFIG_FILES=$@ ; \
CONFIG_HEADERS= ; \
$(SHELL) ./config.status
config.status: $(srcdir)/configure
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in
cd $(srcdir) && autoconf