| # Makefile for gnattools |
| # 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: 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. |
| LN_S=@LN_S@ |
| target_noncanonical=@target_noncanonical@ |
| |
| # Variables for the user (or the top level) to override. |
| objext=.o |
| TRACE=no |
| ADA_FOR_BUILD= |
| ADA_FOR_TARGET= |
| LDFLAGS= |
| STAGE_PREFIX= |
| PWD_COMMAND = $${PWDCMD-pwd} |
| |
| # 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; shared with libada for now. |
| include $(GCC_DIR)/libada-mk |
| # Variables based on those gleaned from the GCC makefile. :-P |
| libsubdir=$(libdir)/gcc/$(target_noncanonical)/$(gcc_version) |
| |
| # Get possible host-specific override for libsubdir (ick). |
| xmake_file=$(subst /config,/../gcc/config,$(gcc_xmake_file)) |
| ifneq ($(xmake_file),) |
| include $(xmake_file) |
| endif |
| |
| # Absolute srcdir for gcc/ada (why do we want absolute? I dunno) |
| fsrcdir := $(shell cd $(srcdir)/../gcc/ada/; ${PWD_COMMAND}) |
| |
| # Useful "subroutines" for the excess includes |
| INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \ |
| -I$(fsrcdir)/../../include -I$(fsrcdir)/.. |
| ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) |
| |
| # Variables for gnattools1, native |
| TOOLS_FLAGS_TO_PASS_1= \ |
| "CC=../../xgcc -B../../" \ |
| "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ |
| "LDFLAGS=$(LDFLAGS)" \ |
| "ADAFLAGS=$(ADAFLAGS)" \ |
| "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ |
| "ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ |
| "exeext=$(exeext)" \ |
| "fsrcdir=$(fsrcdir)" \ |
| "srcdir=$(fsrcdir)" \ |
| "GNATBIND=../../gnatbind" \ |
| "TOOLSCASE=native" |
| |
| # Variables for regnattools |
| TOOLS_FLAGS_TO_PASS_1re= \ |
| "CC=../../xgcc -B../../" \ |
| "CFLAGS=$(CFLAGS)" \ |
| "ADAFLAGS=$(ADAFLAGS)" \ |
| "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ |
| "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ |
| "exeext=$(exeext)" \ |
| "fsrcdir=$(fsrcdir)" \ |
| "srcdir=$(fsrcdir)" \ |
| "GNATMAKE=../../gnatmake" \ |
| "GNATLINK=../../gnatlink" \ |
| "GNATBIND=../../gnatbind" \ |
| "TOOLSCASE=cross" \ |
| "INCLUDES=" |
| |
| # Variables for gnattools2, native |
| TOOLS_FLAGS_TO_PASS_NATIVE= \ |
| "CC=../../xgcc -B../../" \ |
| "CFLAGS=$(CFLAGS)" \ |
| "ADAFLAGS=$(ADAFLAGS)" \ |
| "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ |
| "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)" \ |
| "exeext=$(exeext)" \ |
| "fsrcdir=$(fsrcdir)" \ |
| "srcdir=$(fsrcdir)" \ |
| "GNATMAKE=../../gnatmake" \ |
| "GNATLINK=../../gnatlink" \ |
| "GNATBIND=../../gnatbind" \ |
| "TOOLSCASE=native" |
| |
| # Variables for gnattools, cross |
| TOOLS_FLAGS_TO_PASS_CROSS= \ |
| "CC=$(CC)" \ |
| "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ |
| "LDFLAGS=$(LDFLAGS)" \ |
| "ADAFLAGS=$(ADAFLAGS)" \ |
| "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ |
| "ADA_INCLUDES=-I$(RTS_DIR)../adainclude -I$(RTS_DIR) $(ADA_INCLUDES_FOR_SUBDIR)" \ |
| "exeext=$(exeext)" \ |
| "fsrcdir=$(fsrcdir)" \ |
| "srcdir=$(fsrcdir)" \ |
| "GNATMAKE=gnatmake" \ |
| "GNATLINK=gnatlink" \ |
| "GNATBIND=gnatbind" \ |
| "TOOLSCASE=cross" \ |
| "LIBGNAT=" |
| |
| # File lists |
| # ---------- |
| |
| # File associations set by configure |
| EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@ |
| TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@ |
| |
| # These are built by gnatmake, and in both native and cross configurations. |
| GNATTOOLS2_FILES = \ |
| ../../gnatchop$(exeext) \ |
| ../../gnat$(exeext) \ |
| ../../gnatkr$(exeext) \ |
| ../../gnatls$(exeext) \ |
| ../../gnatprep$(exeext) \ |
| ../../gnatxref$(exeext) \ |
| ../../gnatfind$(exeext) \ |
| ../../gnatname$(exeext) \ |
| ../../gnatclean$(exeext) \ |
| ../../gprmake$(exeext) |
| |
| # Makefile targets |
| # ---------------- |
| |
| .PHONY: gnattools gnattools-native gnattools-cross regnattools |
| gnattools: @default_gnattools_target@ |
| |
| # Sanity check |
| $(GCC_DIR)/stamp-gnatlib: |
| @if [ ! -f $(GCC_DIR)/stamp-gnatlib ] ; \ |
| then \ |
| echo "Cannot build gnattools while gnatlib is out of date or unbuilt" ; \ |
| false; \ |
| else \ |
| true; \ |
| fi |
| |
| |
| # 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 in ada/Makefile.in |
| |
| $(GCC_DIR)/stamp-tools: |
| -rm -rf $(GCC_DIR)/ada/tools |
| -mkdir -p $(GCC_DIR)/ada/tools |
| -(cd $(GCC_DIR)/ada/tools; $(LN_S) ../sdefault.adb .) |
| -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ |
| rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\ |
| $(LN_S) $(fsrcdir)/$(word 2,$(subst <, ,$(PAIR))) \ |
| $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));) |
| touch $(GCC_DIR)/stamp-tools |
| |
| # 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 regnattools) |
| gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib |
| # gnattools1 |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_1) \ |
| ../../gnatmake$(exeext) ../../gnatlink$(exeext) ../../gnatbl$(exeext) |
| # gnattools2 |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_NATIVE) \ |
| $(GNATTOOLS2_FILES) |
| |
| # 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. |
| regnattools: $(GCC_DIR)/stamp-gnatlib |
| # gnattools1-re |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_1re) \ |
| gnatmake-re gnatlink-re |
| # gnattools2 |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_NATIVE) \ |
| $(GNATTOOLS2_FILES) |
| |
| # 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 |
| # FIXME: This should be done in configure. |
| RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib ))) |
| gnattools-cross: $(GCC_DIR)/stamp-tools |
| # gnattools1-re |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_CROSS) INCLUDES="" \ |
| gnatmake-re gnatlink-re |
| # gnattools2 |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_CROSS) \ |
| $(GNATTOOLS2_FILES) |
| # gnattools4 (cross only) |
| $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ |
| $(TOOLS_FLAGS_TO_PASS_CROSS) \ |
| top_buildir=../../.. \ |
| ../../vxaddr2line$(exeext) |
| # Rename cross tools to where the GCC makefile wants them when |
| # installing. FIXME: installation should be done elsewhere. |
| 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 |
| |
| # Other |
| # ----- |
| |
| # Check uninstalled version. |
| check: |
| |
| # Check installed version. |
| installcheck: |
| |
| # Build info (none here). |
| info: |
| |
| # Build DVI (none here). |
| dvi: |
| |
| # Build PDF (none here). |
| pdf: |
| |
| # Build HTML (none here). |
| html: |
| |
| # Build TAGS (none here). |
| TAGS: |
| |
| # Installation rules. |
| install: |
| |
| install-info: |
| |
| install-html: |
| |
| # 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.ac |
| cd $(srcdir) && autoconf |
| |
| # Don't export variables to the environment, in order to not confuse |
| # configure. |
| .NOEXPORT: |
| |