# 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@
prefix = @prefix@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@

# Nonstandard autoconf-set variables.
LN_S=@LN_S@
target_noncanonical=@target_noncanonical@
host_noncanonical=@host_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

# Full path to top source directory
ftop_srcdir := $(shell cd $(srcdir)/..;${PWD_COMMAND})

# 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 = -iquote . -iquote .. -iquote ../.. \
		      -iquote $(fsrcdir)/ada -iquote $(fsrcdir)/config \
		      -iquote $(fsrcdir) -I$(ftop_srcdir)/include
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_noncanonical)-gnatmake
  GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink
  GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind
  GNATLS_FOR_HOST=$(host_noncanonical)-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. We first need to copy the generated files,
# then the target-dependent sources using the same mechanism as for gnatlib.

GENERATED_FILES_FOR_TOOLS = \
  einfo-entities.ads einfo-entities.adb sdefault.adb seinfo.ads \
  sinfo-nodes.ads sinfo-nodes.adb snames.ads snames.adb

$(GCC_DIR)/stamp-tools:
	-rm -rf $(GCC_DIR)/ada/tools
	-mkdir -p $(GCC_DIR)/ada/tools
	-(cd $(GCC_DIR)/ada/tools; $(foreach FILE,$(GENERATED_FILES_FOR_TOOLS), \
			     $(LN_S) ../$(FILE) $(FILE);))
	-$(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

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

install-html:

.PHONY: install install-strip install-info install-pdf install-dvi install-html

# Cleaning rules.
mostlyclean:

clean:

distclean:
	$(RM) Makefile config.status config.log config.cache

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:

