| # 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: |
| |