# Makefile for gnattools # Copyright 2003, 2004, 2009 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 3 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; see the file COPYING3. If not see # . # Default target; must be first. all: gnattools # Standard autoconf-set variables. SHELL = @SHELL@ srcdir = @srcdir@ libdir = @libdir@ 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. exeext = @EXEEXT@ objext=.o TRACE=no ADA_FOR_BUILD= ADA_FOR_TARGET= LDFLAGS= 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) WARN_CFLAGS = @warn_cflags@ ADA_CFLAGS=@ADA_CFLAGS@ # Variables for gnattools. ADAFLAGS= -gnatpg -gnata # For finding the GCC build dir, which is used far too much GCC_DIR=../gcc # Absolute srcdir for gcc (why do we want absolute? I dunno) fsrcdir := $(shell cd $(srcdir)/../gcc/; ${PWD_COMMAND}) # Useful "subroutines" for the excess includes INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir)/ada -I$(fsrcdir)/config \ -I$(fsrcdir)/../include -I$(fsrcdir) ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir)/ada # Variables for gnattools1, native TOOLS_FLAGS_TO_PASS_1= \ "CC=../../xgcc -B../../" \ "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ "LDFLAGS=$(LDFLAGS)" \ "ADAFLAGS=$(ADAFLAGS)" \ "ADA_CFLAGS=$(ADA_CFLAGS)" \ "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)" \ "ADA_CFLAGS=$(ADA_CFLAGS)" \ "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)" \ "ADA_CFLAGS=$(ADA_CFLAGS)" \ "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)" \ "ADA_CFLAGS=$(ADA_CFLAGS)" \ "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@ # Makefile targets # ---------------- .PHONY: gnattools gnattools-native gnattools-cross regnattools gnattools: @default_gnattools_target@ # Sanity check $(GCC_DIR)/stamp-gnatlib-rts: @if [ ! -f $(GCC_DIR)/stamp-gnatlib-rts ] ; \ 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 ../snames.ads ../snames.adb .) -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\ $(LN_S) $(fsrcdir)/ada/$(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-rts # gnattools1 $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ $(TOOLS_FLAGS_TO_PASS_1) \ ../../gnatmake$(exeext) ../../gnatlink$(exeext) # gnattools2 $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools # 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-rts # 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) common-tools # 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) common-tools # 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)/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-pdf: 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 AUTOCONF = autoconf configure_deps = \ $(srcdir)/configure.ac \ $(srcdir)/../config/acx.m4 \ $(srcdir)/../config/override.m4 $(srcdir)/configure: @MAINT@ $(configure_deps) cd $(srcdir) && $(AUTOCONF) # Don't export variables to the environment, in order to not confuse # configure. .NOEXPORT: