123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- # Makefile for gnattools
- # Copyright 2003, 2004, 2009, 2010 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
- # <http://www.gnu.org/licenses/>.
- # Default target; must be first.
- all: gnattools
- # Standard autoconf-set variables.
- SHELL = @SHELL@
- srcdir = @srcdir@
- libdir = @libdir@
- build = @build@
- target = @target@
- host = @host@
- host_alias = @host_alias@
- 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
- GCC_WARN_CFLAGS = -W -Wall
- 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
- CXX_LFLAGS = \
- -B../../../$(target_noncanonical)/libstdc++-v3/src/.libs \
- -B../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs \
- -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \
- -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs
- # Variables for gnattools, native
- TOOLS_FLAGS_TO_PASS_NATIVE= \
- "CC=../../xgcc -B../../" \
- "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \
- "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)" \
- "GNATMAKE=../../gnatmake" \
- "GNATLINK=../../gnatlink" \
- "GNATBIND=../../gnatbind" \
- "TOOLSCASE=native"
- # Variables for regnattools
- TOOLS_FLAGS_TO_PASS_RE= \
- "CC=../../xgcc -B../../" \
- "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \
- "CFLAGS=$(CFLAGS)" \
- "LDFLAGS=$(LDFLAGS)" \
- "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"
- # Variables for gnattools, cross
- ifeq ($(build), $(host))
- GNATMAKE_FOR_HOST=gnatmake
- GNATLINK_FOR_HOST=gnatlink
- GNATBIND_FOR_HOST=gnatbind
- GNATLS_FOR_HOST=gnatls
- else
- GNATMAKE_FOR_HOST=$(host_alias)-gnatmake
- GNATLINK_FOR_HOST=$(host_alias)-gnatlink
- GNATBIND_FOR_HOST=$(host_alias)-gnatbind
- GNATLS_FOR_HOST=$(host_alias)-gnatls
- endif
- # 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_FOR_HOST) -v | grep adalib )))
- TOOLS_FLAGS_TO_PASS_CROSS= \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
- "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_FOR_HOST)" \
- "GNATLINK=$(GNATLINK_FOR_HOST)" \
- "GNATBIND=$(GNATBIND_FOR_HOST)" \
- "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_NATIVE) \
- ../../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_RE) INCLUDES="" \
- gnatmake-re gnatlink-re
- # gnattools2
- $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
- $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
- 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:
- .PHONY: check installcheck info dvi pdf html
- # Build TAGS (none here).
- TAGS:
- # Installation rules.
- install:
- install-strip: install
- install-info:
- install-pdf:
- install-html:
- .PHONY: install install-strip install-info install-pdf install-html
- # Cleaning rules.
- mostlyclean:
- clean:
- distclean:
- $(RM) Makefile config.status config.log
- maintainer-clean:
- .PHONY: mostlyclean clean distclean 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:
|