]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/gcc-interface/Make-lang.in
ada: Fix proof of runtime unit System.Value*
[thirdparty/gcc.git] / gcc / ada / gcc-interface / Make-lang.in
CommitLineData
a1ab4c31 1# Top level -*- makefile -*- fragment for GNU Ada (GNAT).
b2263428 2# Copyright (C) 2009-2023 Free Software Foundation, Inc.
a1ab4c31
AC
3
4#This file is part of GCC.
5
6#GCC is free software; you can redistribute it and/or modify
7#it under the terms of the GNU General Public License as published by
8#the Free Software Foundation; either version 3, or (at your option)
9#any later version.
10
11#GCC is distributed in the hope that it will be useful,
12#but WITHOUT ANY WARRANTY; without even the implied warranty of
13#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14#GNU General Public License for more details.
15
16#You should have received a copy of the GNU General Public License
17#along with GCC; see the file COPYING3. If not see
18#<http://www.gnu.org/licenses/>.
19
20# This file provides the language dependent support in the main Makefile.
21# Each language makefile fragment must provide the following targets:
22#
23# foo.all.cross, foo.start.encap, foo.rest.encap,
24# foo.install-common, foo.install-man, foo.install-info, foo.install-pdf,
55bcd32b 25# foo.install-html, foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall,
a1ab4c31
AC
26# foo.mostlyclean, foo.clean, foo.distclean,
27# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
28#
29# where `foo' is the name of the language.
30#
31# It should also provide rules for:
32#
33# - making any compiler driver (eg: g++)
34# - the compiler proper (eg: cc1plus)
35# - define the names for selecting the language in LANGUAGES.
36# tool definitions
37CP = cp -p
38ECHO = echo
39MV = mv
40MKDIR = mkdir -p
41RM = rm -f
42RMDIR = rm -rf
f8fb01fb 43
a1ab4c31
AC
44
45# Extra flags to pass to recursive makes.
7cb9fd07
EB
46COMMON_ADAFLAGS= -gnatpg
47ifeq ($(TREECHECKING),)
48CHECKING_ADAFLAGS=
49else
50CHECKING_ADAFLAGS= -gnata
51endif
0cfaf83f 52WARN_ADAFLAGS= -W -Wall
a1ab4c31 53
0c6f926d
AC
54# For native builds, the base compiler might be old and we need to arrange for
55# style warnings not to be flagged as errors during stage1. Cross compilers
56# need to be built by a recent/matching native so we might as well leave the
57# checks fully active.
58
abcf5174
AC
59STAGE1=False
60GNATBIND_FLAGS=
61GNATLIB=
62
a1ab4c31 63ifeq ($(CROSS),)
abcf5174
AC
64 ADAFLAGS=$(COMMON_ADAFLAGS) -gnatwns
65
66 ifeq ($(if $(wildcard ../stage_current),$(shell cat ../stage_current),stage1),stage1)
67 STAGE1=True
68 GNATBIND_FLAGS=-t
69 endif
a1ab4c31 70else
abcf5174 71 ADAFLAGS=$(COMMON_ADAFLAGS)
a1ab4c31
AC
72endif
73
7cb9fd07
EB
74ALL_ADAFLAGS = \
75 $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
a1ab4c31
AC
76FORCE_DEBUG_ADAFLAGS = -g
77ADA_CFLAGS =
abcf5174
AC
78COMMON_ADA_INCLUDES = -I- -I. -Iada/generated -Iada -I$(srcdir)/ada
79
80STAGE1_LIBS=
81
82ifeq ($(strip $(filter-out linux%,$(host_os))),)
83 STAGE1_LIBS=-ldl
84endif
85
07b41006
JDA
86ifeq ($(strip $(filter-out hpux%,$(host_os))),)
87 STAGE1_LIBS=/usr/lib/libcl.a
88endif
89
abcf5174
AC
90ifeq ($(STAGE1),True)
91 ADA_INCLUDES=$(COMMON_ADA_INCLUDES)
60750741
AC
92 adalib=$(dir $(shell $(CC) -print-libgcc-file-name))adalib
93 GNATLIB=$(adalib)/$(if $(wildcard $(adalib)/libgnat.a),libgnat.a,libgnat.so) $(STAGE1_LIBS)
abcf5174
AC
94else
95 ADA_INCLUDES=-nostdinc $(COMMON_ADA_INCLUDES) -Iada/libgnat -I$(srcdir)/ada/libgnat -Iada/gcc-interface -I$(srcdir)/ada/gcc-interface
96endif
97
e45c0886
EB
98GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
99GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
a1ab4c31
AC
100ADA_INCLUDE_DIR = $(libsubdir)/adainclude
101ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
e45c0886 102THREAD_KIND=native
0cfaf83f 103# We do not want the WARN_CFLAGS of the compiler in Ada as it is for C/C++.
1ce499ae 104COMMON_FLAGS_TO_PASS = $(filter-out $(WARN_CFLAGS), $(FLAGS_TO_PASS))
a1ab4c31
AC
105ADA_FLAGS_TO_PASS = \
106 "ADA_FOR_BUILD=$(ADA_FOR_BUILD)" \
107 "ADA_INCLUDE_DIR=$(ADA_INCLUDE_DIR)" \
108 "ADA_RTL_OBJ_DIR=$(ADA_RTL_OBJ_DIR)" \
0cfaf83f 109 "ADAFLAGS=$(ADAFLAGS) $(WARN_ADAFLAGS)" \
a1ab4c31
AC
110 "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \
111 "INSTALL=$(INSTALL)" \
112 "INSTALL_DATA=$(INSTALL_DATA)" \
113 "INSTALL_PROGRAM=$(INSTALL_PROGRAM)"
114
e5297224
JR
115# List of Ada tools to build and install
116ADA_TOOLS=gnatbind gnatchop gnat gnatkr gnatlink gnatls gnatmake \
5b0e0158 117 gnatname gnatprep gnatclean
e5297224 118
a1ab4c31
AC
119# Say how to compile Ada programs.
120.SUFFIXES: .ada .adb .ads
121
cd9912b5 122# FIXME: need to add $(ADA_CFLAGS) to .cc.o suffix rule
c6bd4220
EB
123# Use mildly strict warnings for this front end and add special flags.
124ada-warn = $(ADA_CFLAGS) $(filter-out -pedantic, $(STRICT_WARN))
125# Unresolved warnings in specific files.
126ada/adaint.o-warn = -Wno-error
a1ab4c31 127
cd9912b5 128ada/%.o: ada/gcc-interface/%.cc
8219336f
NR
129 $(COMPILE) $<
130 $(POSTCOMPILE)
131
edcc77db
NR
132# Function that dumps the dependencies of an Ada object. Dependency only work
133# fully if the compiler support -gnatd.n. Otherwise a fallback mechanism is
7dbe3736
NR
134# used. The fallback mechanism parse the ali files to get the list of
135# dependencies and try to guess their location. If the location cannot be found
136# then the dependency is ignored.
edcc77db
NR
137ifeq ($(findstring -gnatd.n,$(ALL_ADAFLAGS)),)
138ADA_DEPS=\
139 mkdir -p $(dir $@)/$(DEPDIR); \
140 (o="$@: $<"; \
7dbe3736
NR
141 a="`echo $@ | sed -e 's/.o$$/.ali/'`"; \
142 for d in `cat $$a | sed -ne 's;^D \([a-z0-9_\.-]*\).*;\1;gp'`; do \
143 for l in ada $(srcdir)/ada ada/libgnat $(srcdir)/ada/libgnat; do \
144 if test -f $$l/$$d; then \
145 o="$$o $$l/$$d"; \
146 fi; \
147 done; \
edcc77db
NR
148 done; \
149 echo "$$o"; echo) \
150 >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
151ADA_OUTPUT_OPTION = $(OUTPUT_OPTION)
152else
153ADA_DEPS=\
154 mkdir -p $(dir $@)/$(DEPDIR); \
7dbe3736
NR
155 (echo "$@: $< " | tr -d '\015' | tr -d '\n'; \
156 cat $@.gnatd.n | tr -d '\015' | tr '\n' ' '; \
157 echo; echo) \
edcc77db
NR
158 >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
159ADA_OUTPUT_OPTION = $(OUTPUT_OPTION) > $@.gnatd.n
160endif
161
8219336f 162
a1ab4c31 163.adb.o:
edcc77db
NR
164 mkdir -p $(dir $@)
165 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
8219336f
NR
166 @$(ADA_DEPS)
167
a1ab4c31 168.ads.o:
edcc77db
NR
169 mkdir -p $(dir $@)
170 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
8219336f 171 @$(ADA_DEPS)
a1ab4c31
AC
172
173# Define the names for selecting Ada in LANGUAGES.
174ada: gnat1$(exeext) gnatbind$(exeext)
a774a6a2 175ada.serial = gnat1$(exeext)
a1ab4c31
AC
176
177# Tell GNU Make to ignore these, if they exist.
a774a6a2 178.PHONY: ada
a1ab4c31 179
9a30c7c4
AC
180# Compute the FLAGS to pass for gnattools, now linked with a C++ driver as
181# we're linking against at least libcommon which contains C++ compiled code.
182# We need to use the same driver to link as the one that was used to produce
183# the objects, which depends on whether we're bootstrapping or not. The CXX
184# variable conveys what we need for this, set to "g++" if not bootstrapping,
185# ".../xg++" otherwise.
d775b5ea 186
a1ab4c31
AC
187# There are too many Ada sources to check against here. Let's
188# always force the recursive make.
28d711bf
NR
189ifeq ($(build), $(host))
190 ifeq ($(host), $(target))
191 # This is a regular native. So use the compiler from our current build
192 # tree.
193 ADA_TOOLS_FLAGS_TO_PASS=\
0cfaf83f 194 CC="../../xgcc -B../../" \
9a30c7c4 195 CXX="$(CXX)" \
0cfaf83f 196 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
dbb4cfef 197 ADA_INCLUDES="-I- -I../generated -I../rts" \
0cfaf83f
EB
198 GNATMAKE="../../gnatmake" \
199 GNATLINK="../../gnatlink" \
200 GNATBIND="../../gnatbind"
28d711bf
NR
201 else
202 # This is a regular cross compiler. Use the native compiler to compile
203 # the tools.
204
205 # put the host RTS dir first in the PATH to hide the default runtime
206 # files that are among the sources
33e4edab
EB
207 ifneq ($(findstring ada,$(LANGUAGES)),)
208 RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
209 endif
28d711bf
NR
210
211 ADA_TOOLS_FLAGS_TO_PASS=\
212 CC="$(CC)" \
d775b5ea 213 CXX="$(CXX)" \
0cfaf83f 214 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
dbb4cfef 215 ADA_INCLUDES="-I../generated -I$(RTS_DIR)/../adainclude -I$(RTS_DIR)" \
28d711bf
NR
216 GNATMAKE="gnatmake" \
217 GNATBIND="gnatbind" \
218 GNATLINK="gnatlink" \
219 LIBGNAT=""
220 endif
221else
222 # Build is different from host so we are either building a canadian cross
223 # or a cross-native compiler. We provide defaults for tools targeting the
224 # host platform, but they can be overriden by just setting <tool>_FOR_HOST
b731a420 225 # variables.
47e62307
EB
226 GNATMAKE_FOR_HOST=$(host_noncanonical)-gnatmake
227 GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind
228 GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink
229 GNATLS_FOR_HOST=$(host_noncanonical)-gnatls
28d711bf
NR
230
231 ifeq ($(host), $(target))
232 # This is a cross native. All the sources are taken from the currently
233 # built runtime.
234 ADA_TOOLS_FLAGS_TO_PASS=\
235 CC="$(CC)" \
d775b5ea 236 CXX="$(CXX)" \
0cfaf83f 237 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
dbb4cfef 238 ADA_INCLUDES="-I../generated -I../rts" \
28d711bf
NR
239 GNATMAKE="$(GNATMAKE_FOR_HOST)" \
240 GNATBIND="$(GNATBIND_FOR_HOST)" \
241 GNATLINK="$(GNATLINK_FOR_HOST)" \
242 LIBGNAT=""
243 else
244 # This is a canadian cross. We should use a toolchain running on the
245 # build platform and targeting the host platform.
33e4edab
EB
246 ifneq ($(findstring ada,$(LANGUAGES)),)
247 RTS_DIR:=$(strip $(subst \,/,$(shell $(GNATLS_FOR_HOST) -v | grep adalib )))
248 endif
28d711bf
NR
249 ADA_TOOLS_FLAGS_TO_PASS=\
250 CC="$(CC)" \
d775b5ea 251 CXX="$(CXX)" \
0cfaf83f 252 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
dbb4cfef 253 ADA_INCLUDES="-I../generated -I$(RTS_DIR)/../adainclude -I$(RTS_DIR)" \
28d711bf
NR
254 GNATMAKE="$(GNATMAKE_FOR_HOST)" \
255 GNATBIND="$(GNATBIND_FOR_HOST)" \
256 GNATLINK="$(GNATLINK_FOR_HOST)" \
257 LIBGNAT=""
258 endif
259endif
a1ab4c31 260
83850880
IS
261ifneq ($(filter darwin9% darwin8%,$(host_os)),)
262# gnat1 uses exceptions which is incompatible with statically-linked libgcc
263# on Darwin8 and 9, since gnat1 also pulls in libraries linked with the system
264# unwinder.
265GCC_LINKERFLAGS = $(filter-out -Werror -static-libgcc, $(ALL_LINKERFLAGS))
266GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS))
267else
f95c6539
EB
268# Strip -Werror during linking for the LTO bootstrap
269GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS))
83850880
IS
270GCC_LDFLAGS = $(LDFLAGS)
271endif
f95c6539 272
83850880
IS
273GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS)
274GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS)
a1ab4c31
AC
275
276# Lists of files for various purposes.
277
278# Languages-specific object files for Ada.
9e9bd455 279
abcf5174 280# Object files from C sources that are used by gnat1
a6eae6a9 281# adadecode.o should not be needed with sufficiently recent compilers
abcf5174
AC
282GNAT1_C_OBJS = \
283 ada/cuintp.o \
284 ada/decl.o \
285 ada/misc.o \
286 ada/utils.o \
287 ada/utils2.o \
288 ada/trans.o \
289 ada/targtyps.o \
a6eae6a9 290 ada/version.o \
abcf5174 291 ada/targext.o \
a6eae6a9 292 ada/adadecode.o
a1ab4c31
AC
293
294# Object files from Ada sources that are used by gnat1
1dfddbb4 295GNAT_ADA_OBJS = \
06b599fd 296 ada/spark_xrefs.o \
1dfddbb4
AC
297 ada/ali.o \
298 ada/alloc.o \
2b3d67a5 299 ada/aspects.o \
1dfddbb4 300 ada/atree.o \
8967ee52 301 ada/backend_utils.o \
1dfddbb4
AC
302 ada/butil.o \
303 ada/casing.o \
304 ada/checks.o \
305 ada/comperr.o \
879ac954 306 ada/contracts.o \
1dfddbb4
AC
307 ada/csets.o \
308 ada/cstand.o \
309 ada/debug.o \
310 ada/debug_a.o \
76f9c7f4
BD
311 ada/einfo-entities.o \
312 ada/einfo-utils.o \
1dfddbb4
AC
313 ada/einfo.o \
314 ada/elists.o \
315 ada/err_vars.o \
316 ada/errout.o \
317 ada/erroutc.o \
318 ada/eval_fat.o \
319 ada/exp_aggr.o \
06b599fd 320 ada/exp_spark.o \
1dfddbb4
AC
321 ada/exp_atag.o \
322 ada/exp_attr.o \
9c41193c 323 ada/exp_cg.o \
1dfddbb4
AC
324 ada/exp_ch11.o \
325 ada/exp_ch12.o \
326 ada/exp_ch13.o \
327 ada/exp_ch2.o \
328 ada/exp_ch3.o \
329 ada/exp_ch4.o \
330 ada/exp_ch5.o \
331 ada/exp_ch6.o \
332 ada/exp_ch7.o \
333 ada/exp_ch8.o \
334 ada/exp_ch9.o \
335 ada/exp_code.o \
336 ada/exp_dbug.o \
337 ada/exp_disp.o \
338 ada/exp_dist.o \
339 ada/exp_fixd.o \
340 ada/exp_imgv.o \
341 ada/exp_intr.o \
342 ada/exp_pakd.o \
343 ada/exp_prag.o \
110d0820 344 ada/exp_put_image.o \
1dfddbb4
AC
345 ada/exp_sel.o \
346 ada/exp_smem.o \
347 ada/exp_strm.o \
348 ada/exp_tss.o \
5a271a7f 349 ada/exp_unst.o \
1dfddbb4 350 ada/exp_util.o \
1dfddbb4
AC
351 ada/expander.o \
352 ada/fmap.o \
353 ada/fname-uf.o \
354 ada/fname.o \
355 ada/freeze.o \
356 ada/frontend.o \
1dfddbb4 357 ada/get_targ.o \
8636f52f 358 ada/ghost.o \
b0a16e6d 359 ada/gnat_cuda.o \
1dfddbb4 360 ada/gnatvsn.o \
1dfddbb4 361 ada/hostparm.o \
1dfddbb4
AC
362 ada/impunit.o \
363 ada/inline.o \
1dfddbb4
AC
364 ada/itypes.o \
365 ada/krunch.o \
366 ada/layout.o \
367 ada/lib-load.o \
368 ada/lib-util.o \
369 ada/lib-writ.o \
370 ada/lib-xref.o \
371 ada/lib.o \
372 ada/live.o \
373 ada/namet-sp.o \
374 ada/namet.o \
375 ada/nlists.o \
376 ada/nmake.o \
377 ada/opt.o \
378 ada/osint-c.o \
379 ada/osint.o \
380 ada/output.o \
381 ada/par.o \
382 ada/par_sco.o \
383 ada/prep.o \
384 ada/prepcomp.o \
385 ada/put_scos.o \
6c165711 386 ada/repinfo-input.o \
1dfddbb4
AC
387 ada/repinfo.o \
388 ada/restrict.o \
389 ada/rident.o \
390 ada/rtsfind.o \
1dfddbb4 391 ada/scans.o \
8219336f 392 ada/scil_ll.o \
1dfddbb4
AC
393 ada/scn.o \
394 ada/scng.o \
395 ada/scos.o \
396 ada/sdefault.o \
76f9c7f4 397 ada/seinfo.o \
1dfddbb4
AC
398 ada/sem.o \
399 ada/sem_aggr.o \
400 ada/sem_attr.o \
401 ada/sem_aux.o \
402 ada/sem_case.o \
403 ada/sem_cat.o \
404 ada/sem_ch10.o \
405 ada/sem_ch11.o \
406 ada/sem_ch12.o \
407 ada/sem_ch13.o \
408 ada/sem_ch2.o \
f459afaa 409 ada/accessibility.o \
1dfddbb4
AC
410 ada/sem_ch3.o \
411 ada/sem_ch4.o \
412 ada/sem_ch5.o \
413 ada/sem_ch6.o \
414 ada/sem_ch7.o \
415 ada/sem_ch8.o \
416 ada/sem_ch9.o \
dec6faf1 417 ada/sem_dim.o \
1dfddbb4
AC
418 ada/sem_disp.o \
419 ada/sem_dist.o \
420 ada/sem_elab.o \
421 ada/sem_elim.o \
422 ada/sem_eval.o \
423 ada/sem_intr.o \
424 ada/sem_mech.o \
425 ada/sem_prag.o \
426 ada/sem_res.o \
427 ada/sem_scil.o \
428 ada/sem_smem.o \
429 ada/sem_type.o \
430 ada/sem_util.o \
1dfddbb4 431 ada/sem_warn.o \
289a994b 432 ada/set_targ.o \
1dfddbb4 433 ada/sinfo-cn.o \
76f9c7f4
BD
434 ada/sinfo-nodes.o \
435 ada/sinfo-utils.o \
1dfddbb4
AC
436 ada/sinfo.o \
437 ada/sinput-d.o \
438 ada/sinput-l.o \
439 ada/sinput.o \
440 ada/snames.o \
441 ada/sprint.o \
442 ada/stand.o \
443 ada/stringt.o \
d235950e 444 ada/strub.o \
1dfddbb4
AC
445 ada/style.o \
446 ada/styleg.o \
447 ada/stylesw.o \
448 ada/switch-c.o \
449 ada/switch.o \
1dfddbb4 450 ada/table.o \
1dfddbb4
AC
451 ada/targparm.o \
452 ada/tbuild.o \
1dfddbb4 453 ada/treepr.o \
1dfddbb4
AC
454 ada/ttypes.o \
455 ada/types.o \
456 ada/uintp.o \
457 ada/uname.o \
458 ada/urealp.o \
459 ada/usage.o \
460 ada/validsw.o \
e60b6e23 461 ada/vast.o \
0f1af881 462 ada/warnsw.o \
abcf5174
AC
463 ada/widechar.o \
464 ada/gnat.o \
465 ada/g-dynhta.o \
466 ada/g-graphs.o \
467 ada/g-lists.o \
468 ada/g-sets.o \
abcf5174
AC
469 ada/s-pehage.o \
470 ada/s-utf_32.o
471
472ifeq ($(STAGE1),False)
473GNAT1_C_OBJS+= \
a6eae6a9
AC
474 ada/adaint.o \
475 ada/argv.o \
476 ada/cio.o \
477 ada/cstreams.o \
478 ada/env.o \
479 ada/errno.o \
abcf5174
AC
480 ada/init.o \
481 ada/initialize.o \
482 ada/raise.o \
483 ada/raise-gcc.o \
484 ada/rtfinal.o \
485 ada/rtinit.o \
486 ada/seh_init.o
487
488GNAT_ADA_OBJS+= \
489 ada/gcc-interface/system.o \
490 ada/libgnat/a-assert.o \
491 ada/libgnat/a-charac.o \
492 ada/libgnat/a-chlat1.o \
493 ada/libgnat/a-elchha.o \
494 ada/libgnat/a-except.o \
495 ada/libgnat/a-exctra.o \
496 ada/libgnat/a-ioexce.o \
b0fd3e31
YM
497 ada/libgnat/a-nubinu.o \
498 ada/libgnat/a-numeri.o \
abcf5174
AC
499 ada/libgnat/ada.o \
500 ada/libgnat/g-byorma.o \
501 ada/libgnat/g-heasor.o \
502 ada/libgnat/g-htable.o \
503 ada/libgnat/g-spchge.o \
504 ada/libgnat/g-speche.o \
505 ada/libgnat/g-table.o \
506 ada/libgnat/g-u3spch.o \
507 ada/libgnat/interfac.o \
508 ada/libgnat/s-addope.o \
509 ada/libgnat/s-addima.o \
510 ada/libgnat/s-assert.o \
511 ada/libgnat/s-bitops.o \
512 ada/libgnat/s-carun8.o \
a6eae6a9
AC
513 ada/libgnat/s-casuti.o \
514 ada/libgnat/s-crtl.o \
abcf5174
AC
515 ada/libgnat/s-conca2.o \
516 ada/libgnat/s-conca3.o \
517 ada/libgnat/s-conca4.o \
518 ada/libgnat/s-conca5.o \
519 ada/libgnat/s-conca6.o \
520 ada/libgnat/s-conca7.o \
521 ada/libgnat/s-conca8.o \
522 ada/libgnat/s-conca9.o \
523 ada/libgnat/s-crc32.o \
524 ada/libgnat/s-excdeb.o \
525 ada/libgnat/s-except.o \
526 ada/libgnat/s-excmac.o \
527 ada/libgnat/s-exctab.o \
528 ada/libgnat/s-htable.o \
abcf5174
AC
529 ada/libgnat/s-imgint.o \
530 ada/libgnat/s-mastop.o \
531 ada/libgnat/s-memory.o \
a6eae6a9 532 ada/libgnat/s-os_lib.o \
abcf5174
AC
533 ada/libgnat/s-parame.o \
534 ada/libgnat/s-purexc.o \
535 ada/libgnat/s-restri.o \
536 ada/libgnat/s-secsta.o \
537 ada/libgnat/s-soflin.o \
538 ada/libgnat/s-soliin.o \
f959a78b
CD
539 ada/libgnat/s-spark.o \
540 ada/libgnat/s-spcuop.o \
abcf5174
AC
541 ada/libgnat/s-stache.o \
542 ada/libgnat/s-stalib.o \
543 ada/libgnat/s-stoele.o \
544 ada/libgnat/s-strcom.o \
545 ada/libgnat/s-strhas.o \
546 ada/libgnat/s-string.o \
abcf5174
AC
547 ada/libgnat/s-traceb.o \
548 ada/libgnat/s-traent.o \
549 ada/libgnat/s-trasym.o \
550 ada/libgnat/s-unstyp.o \
551 ada/libgnat/s-valint.o \
552 ada/libgnat/s-valuns.o \
553 ada/libgnat/s-valuti.o \
554 ada/libgnat/s-wchcnv.o \
555 ada/libgnat/s-wchcon.o \
556 ada/libgnat/s-wchjis.o \
b0fd3e31
YM
557 ada/libgnat/s-wchstw.o \
558 ada/libgnat/s-widuns.o
abcf5174 559endif
a1ab4c31
AC
560
561# Object files for gnat executables
52fd02bb 562GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/back_end.o ada/gnat1drv.o
a1ab4c31 563
52fd02bb 564GNAT1_OBJS = $(GNAT1_C_OBJS) $(GNAT1_ADA_OBJS) ada/b_gnat1.o
a1ab4c31
AC
565
566GNATBIND_OBJS = \
a1ab4c31
AC
567 ada/ali-util.o \
568 ada/ali.o \
569 ada/alloc.o \
0f1a6a0b 570 ada/aspects.o \
a1ab4c31
AC
571 ada/atree.o \
572 ada/bcheck.o \
573 ada/binde.o \
574 ada/binderr.o \
575 ada/bindgen.o \
69e6ee2f
HK
576 ada/bindo.o \
577 ada/bindo-augmentors.o \
578 ada/bindo-builders.o \
579 ada/bindo-diagnostics.o \
580 ada/bindo-elaborators.o \
581 ada/bindo-graphs.o \
582 ada/bindo-units.o \
583 ada/bindo-validators.o \
584 ada/bindo-writers.o \
a1ab4c31
AC
585 ada/bindusg.o \
586 ada/butil.o \
587 ada/casing.o \
588 ada/csets.o \
589 ada/debug.o \
76f9c7f4
BD
590 ada/einfo-entities.o \
591 ada/einfo-utils.o \
a1ab4c31
AC
592 ada/einfo.o \
593 ada/elists.o \
594 ada/err_vars.o \
595 ada/errout.o \
596 ada/erroutc.o \
c6d2191a
AC
597 ada/exit.o \
598 ada/final.o \
a1ab4c31 599 ada/fmap.o \
9beddc4c 600 ada/fname-uf.o \
c6d2191a 601 ada/fname.o \
a1ab4c31
AC
602 ada/gnatbind.o \
603 ada/gnatvsn.o \
604 ada/hostparm.o \
9beddc4c 605 ada/krunch.o \
a1ab4c31 606 ada/lib.o \
c6d2191a 607 ada/link.o \
a1ab4c31
AC
608 ada/namet.o \
609 ada/nlists.o \
610 ada/opt.o \
611 ada/osint-b.o \
612 ada/osint.o \
613 ada/output.o \
614 ada/rident.o \
abcf5174
AC
615 ada/scans.o \
616 ada/scil_ll.o \
617 ada/scng.o \
618 ada/sdefault.o \
619 ada/seinfo.o \
620 ada/sem_aux.o \
621 ada/sinfo.o \
622 ada/sinfo-nodes.o \
623 ada/sinfo-utils.o \
624 ada/sinput-c.o \
625 ada/sinput.o \
626 ada/snames.o \
627 ada/stand.o \
628 ada/stringt.o \
629 ada/style.o \
630 ada/styleg.o \
631 ada/stylesw.o \
632 ada/switch-b.o \
633 ada/switch.o \
634 ada/table.o \
a6eae6a9 635 ada/targext.o \
abcf5174
AC
636 ada/targparm.o \
637 ada/types.o \
638 ada/uintp.o \
639 ada/uname.o \
640 ada/urealp.o \
7a08b939 641 ada/warnsw.o \
abcf5174
AC
642 ada/widechar.o \
643 ada/gnat.o \
644 ada/g-dynhta.o \
645 ada/g-lists.o \
646 ada/g-graphs.o \
647 ada/g-sets.o \
abcf5174 648 ada/s-resfil.o \
a6eae6a9
AC
649 ada/version.o \
650 ada/s-utf_32.o
abcf5174
AC
651
652ifeq ($(STAGE1),False)
653GNATBIND_OBJS += \
654 ada/init.o \
655 ada/initialize.o \
656 ada/raise.o \
657 ada/raise-gcc.o \
07e188be
PO
658 ada/rtfinal.o \
659 ada/rtinit.o \
abcf5174
AC
660 ada/seh_init.o \
661 ada/gcc-interface/system.o \
662 ada/libgnat/a-assert.o \
663 ada/libgnat/a-elchha.o \
664 ada/libgnat/a-except.o \
b0fd3e31
YM
665 ada/libgnat/a-nubinu.o \
666 ada/libgnat/a-numeri.o \
abcf5174
AC
667 ada/libgnat/ada.o \
668 ada/libgnat/g-byorma.o \
669 ada/libgnat/g-hesora.o \
670 ada/libgnat/g-htable.o \
671 ada/libgnat/interfac.o \
edcc77db
NR
672 ada/libgnat/s-addope.o \
673 ada/libgnat/s-assert.o \
674 ada/libgnat/s-carun8.o \
a6eae6a9 675 ada/libgnat/s-casuti.o \
edcc77db
NR
676 ada/libgnat/s-conca2.o \
677 ada/libgnat/s-conca3.o \
678 ada/libgnat/s-conca4.o \
679 ada/libgnat/s-conca5.o \
680 ada/libgnat/s-conca6.o \
681 ada/libgnat/s-conca7.o \
682 ada/libgnat/s-conca8.o \
683 ada/libgnat/s-conca9.o \
684 ada/libgnat/s-crc32.o \
edcc77db
NR
685 ada/libgnat/s-excdeb.o \
686 ada/libgnat/s-except.o \
687 ada/libgnat/s-excmac.o \
688 ada/libgnat/s-exctab.o \
689 ada/libgnat/s-htable.o \
edcc77db
NR
690 ada/libgnat/s-imgint.o \
691 ada/libgnat/s-mastop.o \
692 ada/libgnat/s-memory.o \
a6eae6a9 693 ada/libgnat/s-os_lib.o \
edcc77db 694 ada/libgnat/s-parame.o \
edcc77db
NR
695 ada/libgnat/s-restri.o \
696 ada/libgnat/s-secsta.o \
697 ada/libgnat/s-soflin.o \
bad0a3df 698 ada/libgnat/s-soliin.o \
edcc77db
NR
699 ada/libgnat/s-stache.o \
700 ada/libgnat/s-stalib.o \
701 ada/libgnat/s-stoele.o \
702 ada/libgnat/s-strhas.o \
703 ada/libgnat/s-string.o \
edcc77db
NR
704 ada/libgnat/s-traent.o \
705 ada/libgnat/s-traceb.o \
706 ada/libgnat/s-unstyp.o \
edcc77db
NR
707 ada/libgnat/s-wchcnv.o \
708 ada/libgnat/s-wchcon.o \
709 ada/libgnat/s-wchjis.o \
a6eae6a9 710 ada/libgnat/s-wchstw.o \
b0fd3e31 711 ada/libgnat/s-widuns.o \
a6eae6a9
AC
712 ada/adaint.o \
713 ada/argv.o \
714 ada/cio.o \
715 ada/cstreams.o \
716 ada/env.o \
717 ada/errno.o
abcf5174 718endif
a1ab4c31
AC
719
720# Language-independent object files.
721ADA_BACKEND = $(BACKEND) attribs.o
722
723# List of target dependent sources, overridden below as necessary
724TARGET_ADA_SRCS =
725
6cbfce7e
AC
726# Select the right s-excmac according to exception layout (Itanium or arm)
727host_cpu=$(word 1, $(subst -, ,$(host)))
a96eb6f2 728EH_MECHANISM=gcc
6cbfce7e 729ifeq ($(strip $(filter-out arm%,$(host_cpu))),)
a96eb6f2 730EH_MECHANISM=arm
6cbfce7e
AC
731endif
732
a96eb6f2
TG
733# For unwind-pe.h
734CFLAGS-ada/raise-gcc.o += -I$(srcdir)/../libgcc -DEH_MECHANISM_$(EH_MECHANISM)
735
f8a1e069
IS
736# Under aarch64 darwin, we need to include the iOS signal trampoline.
737
738ifeq ($(strip $(filter-out aarch64 arm64 darwin%,$(host_cpu) $(host_os))),)
739 EXTRA_HOST_OBJS=ada/sigtramp-ios.o
740else
741 EXTRA_HOST_OBJS =
742endif
743
edcc77db 744ada/libgnat/s-excmac.o: ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
6cbfce7e 745
a0713cb6 746ada/libgnat/s-excmac.ads: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).ads
edcc77db 747 mkdir -p ada/libgnat
6cbfce7e
AC
748 $(CP) $< $@
749
a0713cb6 750ada/libgnat/s-excmac.adb: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).adb
edcc77db 751 mkdir -p ada/libgnat
6cbfce7e
AC
752 $(CP) $< $@
753
a1ab4c31
AC
754# Needs to be built with CC=gcc
755# Since the RTL should be built with the latest compiler, remove the
756# stamp target in the parent directory whenever gnat1 is rebuilt
f8a1e069
IS
757gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(EXTRA_HOST_OBJS) libcommon-target.a \
758 $(EXTRA_HOST_OBJS) $(LIBDEPS) $(ada.prev)
d326ebc9 759 @$(call LINK_PROGRESS,$(INDEX.ada),start)
f8a1e069 760 +$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(EXTRA_HOST_OBJS) $(CFLAGS) \
abcf5174 761 libcommon-target.a $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(GNATLIB)
a7dafa20 762 $(RM) stamp-gnatlib2-rts stamp-tools
d326ebc9 763 @$(call LINK_PROGRESS,$(INDEX.ada),end)
a1ab4c31 764
f8a1e069
IS
765gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) $(EXTRA_HOST_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS)
766 +$(GCC_LINK) -o $@ $(CFLAGS) ada/b_gnatb.o $(GNATBIND_OBJS) $(EXTRA_HOST_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(GNATLIB)
a1ab4c31 767
e972fd52
AC
768# use target-gcc target-gnatmake target-gnatbind target-gnatlink
769gnattools: $(GCC_PARTS) $(CONFIG_H) prefix.o force
0cfaf83f 770 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1
e972fd52
AC
771 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
772
773regnattools:
774 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
775 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
776
777cross-gnattools: force
778 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
779 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
e972fd52
AC
780
781canadian-gnattools: force
782 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
783 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
784
4c166488 785gnatlib gnatlib-sjlj gnatlib-zcx gnatlib-shared: force
0cfaf83f 786 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) \
e972fd52
AC
787 GNATLIBFLAGS="$(GNATLIBFLAGS)" \
788 GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
789 TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
790 THREAD_KIND="$(THREAD_KIND)" \
07c6ed01 791 LN_S="$(LN_S)" \
e972fd52
AC
792 FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
793 $@
794
795# use only for native compiler
796gnatlib_and_tools: gnatlib gnattools
797
a1ab4c31
AC
798# Build hooks:
799
800ada.all.cross:
e5297224
JR
801 for tool in $(ADA_TOOLS) ; do \
802 if [ -f $$tool$(exeext) ] ; \
803 then \
804 $(MV) $$tool$(exeext) $$tool-cross$(exeext); \
805 fi; \
806 done
a1ab4c31
AC
807
808ada.start.encap:
809ada.rest.encap:
810ada.man:
811ada.srcextra:
812ada.srcman:
813
814ada.tags: force
cd9912b5 815 cd $(srcdir)/ada && $(ETAGS) -o TAGS.sub *.cc *.h *.ads *.adb && \
909b30a1 816 $(ETAGS) --include TAGS.sub --include ../TAGS.sub
a1ab4c31
AC
817
818
819# Generate documentation.
820
64d5610f
ML
821doc/gnat_ugn.info: ada/gnat_ugn.texi \
822 $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi \
823 gcc-vers.texi
824 if [ x$(BUILD_INFO) = xinfo ]; then \
825 rm -f $(@)*; \
826 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
827 -I$(srcdir)/ada -o $@ $<; \
a1ab4c31
AC
828 else true; fi
829
64d5610f
ML
830doc/gnat_rm.info: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
831 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
832 if [ x$(BUILD_INFO) = xinfo ]; then \
833 rm -f $(@)*; \
834 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
835 -I$(srcdir)/ada -o $@ $<; \
a1ab4c31
AC
836 else true; fi
837
64d5610f
ML
838doc/gnat-style.info: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi \
839 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
840 if [ x$(BUILD_INFO) = xinfo ]; then \
841 rm -f $(@)*; \
842 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
843 -I$(srcdir)/ada -o $@ $<; \
a1ab4c31
AC
844 else true; fi
845
64d5610f 846ADA_INFOFILES = doc/gnat_ugn.info doc/gnat_rm.info doc/gnat-style.info
a1ab4c31
AC
847
848ada.info: $(ADA_INFOFILES)
849
850ada.srcinfo: $(ADA_INFOFILES)
851 -$(CP) $^ $(srcdir)/doc
852
853ada.install-info: $(DESTDIR)$(infodir)/gnat_ugn.info \
854 $(DESTDIR)$(infodir)/gnat_rm.info \
855 $(DESTDIR)$(infodir)/gnat-style.info
856
64d5610f
ML
857ADA_DVIFILES = doc/gnat_ugn.dvi \
858 doc/gnat_rm.dvi doc/gnat-style.dvi
c3e80a16 859
64d5610f 860ada.dvi: $(ADA_DVIFILES)
c3e80a16 861
64d5610f
ML
862ada.install-dvi: $(ADA_DVIFILES)
863 @$(NORMAL_INSTALL)
864 test -z "$(dvidir)/gcc" || $(mkinstalldirs) "$(DESTDIR)$(dvidir)/gcc"
865 @list='$(ADA_DVIFILES)'; for p in $$list; do \
866 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
867 f=$(dvi__strip_dir) \
868 echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/gcc/$$f'"; \
869 $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/gcc/$$f"; \
870 done
a1ab4c31 871
64d5610f
ML
872ADA_PDFFILES = doc/gnat_ugn.pdf \
873 doc/gnat_rm.pdf doc/gnat-style.pdf
a1ab4c31
AC
874
875ada.pdf: $(ADA_PDFFILES)
876
877ada.install-pdf: $(ADA_PDFFILES)
878 @$(NORMAL_INSTALL)
879 test -z "$(pdfdir)/gcc" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)/gcc"
880 @list='$(ADA_PDFFILES)'; for p in $$list; do \
881 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
882 f=$(pdf__strip_dir) \
883 echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/gcc/$$f'"; \
884 $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \
885 done
886
64d5610f 887ada.html:
a1ab4c31 888
64d5610f 889ada.install-html:
a1ab4c31 890
64d5610f
ML
891doc/gnat_ugn.dvi: ada/gnat_ugn.texi \
892 $(gcc_docdir)/include/fdl.texi \
893 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
894 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
a1ab4c31 895
64d5610f
ML
896doc/gnat_rm.dvi: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
897 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
898 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
a1ab4c31 899
64d5610f
ML
900doc/gnat-style.dvi: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
901 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
902
903doc/gnat_ugn.pdf: ada/gnat_ugn.texi \
904 $(gcc_docdir)/include/fdl.texi \
905 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
906 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
907
908doc/gnat_rm.pdf: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
909 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
910 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
911
912doc/gnat-style.pdf: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
913 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
a1ab4c31 914
a1ab4c31
AC
915# Install hooks:
916# gnat1 is installed elsewhere as part of $(COMPILERS).
917
e5297224
JR
918# Install the binder program as gnatbind (native) or $(prefix)gnatbind
919# (cross). $(prefix) comes from the --program-prefix configure option,
920# or from the --target option if the former is not specified.
921# Do the same for the rest of the Ada tools (gnatchop, gnat, gnatkr,
5b0e0158 922# gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatclean).
e5297224 923# gnatdll is only used on Windows.
8951374d
MR
924ada.install-common: $(gnat_install_lib) gnat-install-tools
925
926gnat-install-tools:
a1ab4c31 927 $(MKDIR) $(DESTDIR)$(bindir)
a1ab4c31
AC
928 -if [ -f gnat1$(exeext) ] ; \
929 then \
e5297224 930 for tool in $(ADA_TOOLS) ; do \
5b638c3a
RB
931 install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \
932 $(RM) $(DESTDIR)$(bindir)/$$install_name; \
e5297224
JR
933 if [ -f $$tool-cross$(exeext) ] ; \
934 then \
e5297224
JR
935 $(INSTALL_PROGRAM) $$tool-cross$(exeext) $(DESTDIR)$(bindir)/$$install_name; \
936 else \
5b638c3a 937 $(INSTALL_PROGRAM) $$tool$(exeext) $(DESTDIR)$(bindir)/$$install_name; \
a1ab4c31 938 fi ; \
e5297224
JR
939 done; \
940 $(RM) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
941 $(INSTALL_PROGRAM) gnatdll$(exeext) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
a1ab4c31
AC
942 fi
943
944#
945# Finally, install the library
946#
8951374d 947gnat-install-lib: | gnat-install-tools
a1ab4c31
AC
948 -if [ -f gnat1$(exeext) ] ; \
949 then \
0cfaf83f 950 $(MAKE) $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib; \
a1ab4c31
AC
951 fi
952
953install-gnatlib:
0cfaf83f 954 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET)
a1ab4c31
AC
955
956install-gnatlib-obj:
0cfaf83f 957 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj
a1ab4c31
AC
958
959ada.install-man:
2a4c0366 960ada.install-plugin:
a1ab4c31
AC
961
962ada.uninstall:
e5297224
JR
963 for tool in $(ADA_TOOLS) ; do \
964 install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \
965 -$(RM) $(DESTDIR)$(bindir)/$$install_name; \
966 done
a1ab4c31 967 -$(RM) $(DESTDIR)$(tooldir)/bin/gnatdll$(exeext)
a1ab4c31
AC
968
969# Clean hooks:
970# A lot of the ancillary files are deleted by the main makefile.
971# We just have to delete files specific to us.
972
973ada.mostlyclean:
8ad150f6 974 -$(RM) ada/*$(objext) ada/*.ali ada/b_gnat*.ads ada/b_gnat*.adb
7dbe3736 975 -$(RM) ada/*$(objext).gnatd.n
a1ab4c31 976 -$(RM) ada/*$(coverageexts)
76f9c7f4 977 -$(RM) ada/stamp-sdefault ada/stamp-snames ada/stamp-gen_il
a1ab4c31 978 -$(RMDIR) ada/tools
7dbe3736 979 -$(RMDIR) ada/libgnat
46bf0b0a 980 -$(RM) gnatbind$(exeext) gnat1$(exeext)
a1ab4c31
AC
981ada.clean:
982ada.distclean:
983 -$(RM) ada/Makefile
984 -$(RM) gnatchop$(exeext)
985 -$(RM) gnat$(exeext)
986 -$(RM) gnatdll$(exeext)
987 -$(RM) gnatkr$(exeext)
988 -$(RM) gnatlink$(exeext)
989 -$(RM) gnatls$(exeext)
990 -$(RM) gnatmake$(exeext)
991 -$(RM) gnatname$(exeext)
992 -$(RM) gnatprep$(exeext)
a1ab4c31 993 -$(RM) gnatclean$(exeext)
a1ab4c31
AC
994 -$(RM) ada/rts/*
995 -$(RMDIR) ada/rts
996 -$(RM) ada/tools/*
997 -$(RMDIR) ada/tools
998ada.maintainer-clean:
999 -$(RM) ada/sinfo.h
1000 -$(RM) ada/einfo.h
1001 -$(RM) ada/nmake.adb
1002 -$(RM) ada/nmake.ads
b62a90f2 1003 -$(RM) ada/snames.ads ada/snames.adb ada/snames.h
f8fb01fb 1004
a1ab4c31
AC
1005# Stage hooks:
1006# The main makefile has already created stage?/ada
1007
1008ada.stage1: stage1-start
8ad150f6 1009 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage1/ada
a1ab4c31
AC
1010 -$(MV) ada/stamp-* stage1/ada
1011ada.stage2: stage2-start
8ad150f6 1012 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage2/ada
a1ab4c31
AC
1013 -$(MV) ada/stamp-* stage2/ada
1014ada.stage3: stage3-start
8ad150f6 1015 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage3/ada
a1ab4c31
AC
1016 -$(MV) ada/stamp-* stage3/ada
1017ada.stage4: stage4-start
8ad150f6 1018 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage4/ada
a1ab4c31
AC
1019 -$(MV) ada/stamp-* stage4/ada
1020ada.stageprofile: stageprofile-start
8ad150f6 1021 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stageprofile/ada
a1ab4c31
AC
1022 -$(MV) ada/stamp-* stageprofile/ada
1023ada.stagefeedback: stagefeedback-start
8ad150f6 1024 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stagefeedback/ada
a1ab4c31
AC
1025 -$(MV) ada/stamp-* stagefeedback/ada
1026
1027lang_checks += check-gnat
6a5792b6
RO
1028lang_checks_parallelized += check-gnat
1029# For description see the check_$lang_parallelize comment in gcc/Makefile.in.
1030check_gnat_parallelize = 1000
a1ab4c31
AC
1031
1032check-ada: check-acats check-gnat
7134e605 1033check-ada-subtargets: check-acats-subtargets check-gnat-subtargets
a1ab4c31 1034
033eb567
DM
1035# No ada-specific selftests
1036selftest-ada:
1037
a1ab4c31 1038ACATSDIR = $(TESTSUITEDIR)/ada/acats
f73036c1 1039ACATSCMD = run_acats.sh
a1ab4c31 1040
717c4789
JJ
1041check_acats_numbers0:=1 2 3 4 5 6 7 8 9
1042check_acats_numbers1:=0 $(check_acats_numbers0)
1043check_acats_numbers2:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers1)))
1044check_acats_numbers3:=$(addprefix 0,$(check_acats_numbers1)) $(check_acats_numbers2)
1045check_acats_numbers4:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers3)))
1046check_acats_numbers5:=$(addprefix 0,$(check_acats_numbers3)) $(check_acats_numbers4)
1047check_acats_numbers6:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers5)))
1048check_acats_numbers:=$(check_acats_numbers0) $(check_acats_numbers2) $(check_acats_numbers4) $(check_acats_numbers6)
1049check_acats_subdirs=$(wordlist 1, \
1050 $(if $(GCC_TEST_PARALLEL_SLOTS),$(GCC_TEST_PARALLEL_SLOTS),128), \
1051 $(check_acats_numbers))
1052check_acats_targets = $(addprefix check-acats, $(check_acats_subdirs))
7134e605 1053
a1ab4c31 1054check-acats:
7134e605 1055 @test -d $(ACATSDIR) || mkdir -p $(ACATSDIR); \
1382ae05
RO
1056 rootme=`${PWD_COMMAND}`; export rootme; \
1057 EXPECT=$(EXPECT); export EXPECT; \
b2b0acbe 1058 if [ -z "$(CHAPTERS)" ] && [ -n "$(filter -j%, $(MFLAGS))" ]; \
7134e605 1059 then \
717c4789
JJ
1060 rm -rf $(ACATSDIR)-parallel; \
1061 mkdir $(ACATSDIR)-parallel; \
1062 ( testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
1063 export testdir; \
f73036c1 1064 cd $(ACATSDIR) && $(SHELL) $${testdir}/$(ACATSCMD) NONE ) \
717c4789
JJ
1065 || exit 1; \
1066 GCC_RUNTEST_PARALLELIZE_DIR=$$rootme/$(ACATSDIR)-parallel; \
1067 export GCC_RUNTEST_PARALLELIZE_DIR; \
7134e605 1068 $(MAKE) $(check_acats_targets); \
717c4789
JJ
1069 rm -rf $(ACATSDIR)-parallel; \
1070 acats_sums= ; acats_logs= ; \
1071 for idx in "" $(check_acats_subdirs); do \
1072 [ -d $(ACATSDIR)$$idx ] || continue; \
7134e605
JJ
1073 mv -f $(ACATSDIR)$$idx/acats.sum $(ACATSDIR)$$idx/acats.sum.sep; \
1074 mv -f $(ACATSDIR)$$idx/acats.log $(ACATSDIR)$$idx/acats.log.sep; \
717c4789
JJ
1075 acats_sums="$$acats_sums $(ACATSDIR)$$idx/acats.sum.sep"; \
1076 acats_logs="$$acats_logs $(ACATSDIR)$$idx/acats.log.sep"; \
7134e605
JJ
1077 done; \
1078 $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh \
717c4789 1079 $$acats_sums > $(ACATSDIR)/acats.sum; \
7134e605 1080 $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh -L \
717c4789 1081 $$acats_logs > $(ACATSDIR)/acats.log; \
7134e605
JJ
1082 exit 0; \
1083 fi; \
a1ab4c31 1084 testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
f73036c1 1085 export testdir; cd $(ACATSDIR) && $(SHELL) $${testdir}/$(ACATSCMD) $(CHAPTERS)
a1ab4c31 1086
7134e605 1087check-acats-subtargets:
717c4789 1088 @echo check-acats
7134e605
JJ
1089
1090# Parallelized check-acats
1091$(check_acats_targets): check-acats%:
717c4789
JJ
1092 if [ -f $$GCC_RUNTEST_PARALLELIZE_DIR/finished ]; then \
1093 rm -rf $(ACATSDIR)$*; exit 0; \
1094 fi; \
7134e605
JJ
1095 test -d $(ACATSDIR)$* || mkdir -p $(ACATSDIR)$*; \
1096 testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
f73036c1 1097 export testdir; cd $(ACATSDIR)$* && $(SHELL) $${testdir}/$(ACATSCMD)
717c4789 1098 touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished
7134e605
JJ
1099
1100.PHONY: check-acats $(check_acats_targets)
f8fb01fb 1101
a1ab4c31
AC
1102# Compiling object files from source files.
1103
a1ab4c31
AC
1104# Ada language specific files.
1105
8ad150f6
TG
1106ada/b_gnat1.adb : $(GNAT1_ADA_OBJS)
1107 # Old gnatbind do not allow a path for -o.
abcf5174 1108 $(GNATBIND) $(GNATBIND_FLAGS) $(ADA_INCLUDES) -o b_gnat1.adb -n ada/gnat1drv.ali
8ad150f6
TG
1109 $(MV) b_gnat1.adb b_gnat1.ads ada/
1110
1111ada/b_gnat1.o : ada/b_gnat1.adb
1112 # Do not use ADAFLAGS to get rid of -gnatg which generates a lot
1113 # of style messages.
1114 $(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
edcc77db 1115 $< $(ADA_OUTPUT_OPTION)
8ad150f6 1116
abcf5174 1117ada/b_gnatb.adb : $(GNATBIND_OBJS) ada/gnatbind.o
8ad150f6 1118 # Old gnatbind do not allow a path for -o.
abcf5174 1119 $(GNATBIND) $(GNATBIND_FLAGS) $(ADA_INCLUDES) -o b_gnatb.adb ada/gnatbind.ali
8ad150f6
TG
1120 $(MV) b_gnatb.adb b_gnatb.ads ada/
1121
1122ada/b_gnatb.o : ada/b_gnatb.adb
1123 $(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
edcc77db 1124 $< $(ADA_OUTPUT_OPTION)
a1ab4c31 1125
1be9633f 1126include $(srcdir)/ada/Make-generated.in
2d4d7e29 1127
edcc77db
NR
1128ada/sdefault.o : ada/libgnat/ada.ads ada/libgnat/a-except.ads ada/libgnat/a-unccon.ads \
1129 ada/libgnat/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads ada/namet.ads \
a1ab4c31 1130 ada/opt.ads ada/osint.ads ada/output.ads ada/sdefault.ads ada/sdefault.adb \
edcc77db 1131 ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \
76cc0773 1132 ada/libgnat/s-stalib.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \
a9005194
AC
1133 ada/libgnat/s-wchcon.ads ada/table.adb ada/table.ads \
1134 ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads \
1135 ada/gcc-interface/system.ads
a1ab4c31 1136
8219336f 1137# Special flags - see gcc-interface/Makefile.in for the template.
e1876cac 1138
edcc77db 1139ada/libgnat/a-except.o : ada/libgnat/a-except.adb ada/libgnat/a-except.ads ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
a1ab4c31 1140 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
edcc77db 1141 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
8219336f 1142 @$(ADA_DEPS)
a1ab4c31 1143
edcc77db 1144ada/libgnat/s-excdeb.o : ada/libgnat/s-excdeb.adb ada/libgnat/s-excdeb.ads
a1ab4c31 1145 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
edcc77db 1146 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
8219336f 1147 @$(ADA_DEPS)
a1ab4c31 1148
edcc77db 1149ada/libgnat/s-assert.o : ada/libgnat/s-assert.adb ada/libgnat/s-assert.ads
e1876cac 1150 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
edcc77db 1151 $< $(ADA_OUTPUT_OPTION)
8219336f 1152 @$(ADA_DEPS)
a1ab4c31 1153
edcc77db 1154ada/libgnat/a-tags.o : ada/libgnat/a-tags.adb ada/libgnat/a-tags.ads
e1876cac 1155 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
edcc77db 1156 $< $(ADA_OUTPUT_OPTION)
8219336f 1157 @$(ADA_DEPS)
e1876cac 1158
dbb4cfef
AC
1159# Handling of gnatvsn version string
1160
1161# This ensure the build works even if there is no GNAT_DATE present in the
1162# sources
1163ada/GNAT_DATE:
1164 touch ada/GNAT_DATE
1165
1166ada/generated/gnatvsn.ads: ada/gnatvsn.ads BASE-VER ada/GNAT_DATE
1167 $(MKDIR) ada/generated
1168 s=`cat $(srcdir)/BASE-VER | sed -e "s/\([0-9]*\)\.\([0-9]*\)\..*/-\1\2/g"`; \
1169 d=`if test -f $(srcdir)/ada/GNAT_DATE; then \
1170 cat $(srcdir)/ada/GNAT_DATE; else date +%Y%m%d; fi`; \
9e0d5db3 1171 cat $< | sed -e "/Version/s/(\([0-9]\{8\}\).*)/($$d$$s)/g" >$@
dbb4cfef
AC
1172
1173ada/gnatvsn.o : ada/gnatvsn.adb ada/generated/gnatvsn.ads
abcf5174 1174 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
dbb4cfef
AC
1175 @$(ADA_DEPS)
1176
8219336f 1177# Dependencies for windows specific tool (mdll)
a1ab4c31
AC
1178
1179ada/mdll.o : ada/mdll.adb ada/mdll.ads ada/mdll-fil.ads ada/mdll-utl.ads
edcc77db 1180 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
a1ab4c31
AC
1181
1182ada/mdll-fil.o : ada/mdll-fil.adb ada/mdll.ads ada/mdll-fil.ads
edcc77db 1183 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
a1ab4c31
AC
1184
1185ada/mdll-utl.o : ada/mdll-utl.adb ada/mdll.ads ada/mdll-utl.ads ada/sdefault.ads ada/types.ads
edcc77db 1186 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
a1ab4c31 1187
76f9c7f4
BD
1188# All generated files. Perhaps we should build all of these in the same
1189# subdirectory, and get rid of ada/bldtools.
c9dd0131
EB
1190# Warning: the files starting with ada/gnat.ads are not really generated,
1191# instead they are copied from the libgnat subdirectory of the source tree
1192# during all the stages of the bootstrap, i.e. including stage #1, which
1193# means that they still need to be compilable by the base compiler.
abcf5174
AC
1194ADA_GENERATED_FILES = \
1195 ada/sinfo.h ada/einfo.h ada/nmake.adb ada/nmake.ads \
1196 ada/snames.ads ada/snames.adb ada/snames.h \
1197 ada/generated/gnatvsn.ads \
1198 ada/seinfo.ads ada/seinfo_tables.ads ada/seinfo_tables.adb \
1199 ada/sinfo-nodes.ads ada/sinfo-nodes.adb \
1200 ada/einfo-entities.ads ada/einfo-entities.adb \
1201 ada/gnat.ads ada/g-dynhta.ads ada/g-dynhta.adb \
1202 ada/g-dyntab.ads ada/g-dyntab.adb ada/g-graphs.ads ada/g-graphs.adb \
1203 ada/g-lists.ads ada/g-lists.adb ada/g-sets.ads ada/g-sets.adb \
a6eae6a9
AC
1204 ada/s-rident.ads ada/s-pehage.ads ada/s-pehage.adb \
1205 ada/s-resfil.ads ada/s-resfil.adb ada/s-utf_32.ads ada/s-utf_32.adb
76f9c7f4
BD
1206
1207# Only used to manually trigger the creation of the generated files.
1208.PHONY:
1209ada_generated_files: $(ADA_GENERATED_FILES)
a1ab4c31 1210
8219336f
NR
1211# When building from scratch we don't have dependency files, the only thing
1212# we need to ensure is that the generated files are created first.
76f9c7f4 1213$(GNAT1_OBJS) $(GNATBIND_OBJS): | $(ADA_GENERATED_FILES)
0f1af881 1214
8219336f 1215# Manually include the auto-generated dependencies for the Ada host objects.
8f241ff5 1216ADA_DEPFILES = $(foreach obj,$(GNAT1_ADA_OBJS) $(GNATBIND_OBJS),\
8219336f
NR
1217 $(dir $(obj))/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $(obj))))
1218-include $(ADA_DEPFILES)
a1ab4c31 1219
8219336f
NR
1220# Automatically include the auto-generated dependencies for the C host objects.
1221ada_OBJS = $(GNAT1_C_OBJS)