Makefile.in 9.51 KB
Newer Older
Nathanael Nerode committed
1
# Makefile for gnattools
2
#   Copyright 2003, 2004, 2009, 2010 Free Software Foundation, Inc.
Nathanael Nerode committed
3 4 5
#
# 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
6
# the Free Software Foundation; either version 3 of the License, or
Nathanael Nerode committed
7 8 9 10 11 12 13 14
# (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
15 16
# along with this program; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.
Nathanael Nerode committed
17 18 19 20 21 22 23

# Default target; must be first.
all: gnattools

# Standard autoconf-set variables.
SHELL = @SHELL@
srcdir = @srcdir@
24
libdir = @libdir@
Nathanael Nerode committed
25 26 27 28 29 30 31 32 33 34 35 36
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.
37
exeext = @EXEEXT@
Nathanael Nerode committed
38 39 40 41 42 43 44 45 46 47
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
48 49
GCC_WARN_CFLAGS = $(LOOSE_WARN)
WARN_CFLAGS = @warn_cflags@
Nathanael Nerode committed
50

51
ADA_CFLAGS=@ADA_CFLAGS@
Nathanael Nerode committed
52 53 54 55 56 57 58

# Variables for gnattools.
ADAFLAGS= -gnatpg -gnata

# For finding the GCC build dir, which is used far too much
GCC_DIR=../gcc

59 60
# Absolute srcdir for gcc (why do we want absolute?  I dunno)
fsrcdir := $(shell cd $(srcdir)/../gcc/; ${PWD_COMMAND})
Nathanael Nerode committed
61 62

# Useful "subroutines" for the excess includes
63 64 65
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
Nathanael Nerode committed
66 67 68 69 70 71 72

# Variables for gnattools1, native
TOOLS_FLAGS_TO_PASS_1= \
	"CC=../../xgcc -B../../" \
	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
	"LDFLAGS=$(LDFLAGS)" \
	"ADAFLAGS=$(ADAFLAGS)" \
73
	"ADA_CFLAGS=$(ADA_CFLAGS)" \
Nathanael Nerode committed
74 75 76 77 78 79 80 81 82 83 84 85 86
	"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)" \
87
	"ADA_CFLAGS=$(ADA_CFLAGS)" \
Nathanael Nerode committed
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
	"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)" \
104
	"ADA_CFLAGS=$(ADA_CFLAGS)" \
Nathanael Nerode committed
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
	"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)"	\
121
	"ADA_CFLAGS=$(ADA_CFLAGS)" \
Nathanael Nerode committed
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
	"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
147 148
$(GCC_DIR)/stamp-gnatlib-rts:
	@if [ ! -f $(GCC_DIR)/stamp-gnatlib-rts ] ; \
Nathanael Nerode committed
149
        then \
150
          echo "Cannot build gnattools while gnatlib is out of date or unbuilt" ; \
Nathanael Nerode committed
151 152 153 154 155 156 157 158 159 160 161 162 163
          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
164
	-(cd $(GCC_DIR)/ada/tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .)
Nathanael Nerode committed
165 166
	-$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
	          rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\
167
	          $(LN_S) $(fsrcdir)/ada/$(word 2,$(subst <, ,$(PAIR))) \
Nathanael Nerode committed
168 169 170 171 172 173 174 175 176
	                $(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) 
177
gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts
Nathanael Nerode committed
178 179 180
	# gnattools1
	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
	  $(TOOLS_FLAGS_TO_PASS_1) \
181
	  ../../gnatmake$(exeext) ../../gnatlink$(exeext)
Nathanael Nerode committed
182 183
	# gnattools2
	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
184
	  $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
Nathanael Nerode committed
185 186 187 188

# 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.
189
regnattools: $(GCC_DIR)/stamp-gnatlib-rts
Nathanael Nerode committed
190 191 192 193 194 195
	# 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 \
196
	  $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
Nathanael Nerode committed
197 198 199 200 201 202

# 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 )))
203
gnattools-cross: $(GCC_DIR)/stamp-tools
Nathanael Nerode committed
204 205 206 207 208 209
	# 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 \
210
	  $(TOOLS_FLAGS_TO_PASS_CROSS) common-tools
Nathanael Nerode committed
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
	# 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:

271 272 273
# Build PDF (none here).
pdf:

274 275 276
# Build HTML (none here).
html:

277 278
.PHONY: check installcheck info dvi pdf html

Nathanael Nerode committed
279 280 281 282 283 284
# Build TAGS (none here).
TAGS:

# Installation rules.
install:

285 286
install-strip: install

Nathanael Nerode committed
287 288
install-info:

289 290
install-pdf:

291 292
install-html:

293 294
.PHONY: install install-strip install-info install-pdf install-html

Nathanael Nerode committed
295 296 297 298 299 300 301 302 303 304
# Cleaning rules.
mostlyclean:

clean:

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

maintainer-clean:

305 306
.PHONY: mostlyclean clean distclean maintainer-clean

Nathanael Nerode committed
307 308 309 310 311 312 313 314 315
# 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

316 317 318 319 320 321 322 323
AUTOCONF = autoconf
configure_deps = \
	$(srcdir)/configure.ac \
	$(srcdir)/../config/acx.m4 \
	$(srcdir)/../config/override.m4

$(srcdir)/configure: @MAINT@ $(configure_deps)
	cd $(srcdir) && $(AUTOCONF)
Nathanael Nerode committed
324 325 326 327 328

# Don't export variables to the environment, in order to not confuse
# configure.
.NOEXPORT: