c2b5e13ba5
* 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
266 lines
8.2 KiB
Makefile
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
|