1# Makefile for libada.
2#   Copyright (C) 2003-2021 Free Software Foundation, Inc.
3#
4# This file is free software; you can redistribute it and/or modify
5# 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
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; see the file COPYING3.  If not see
16# <http://www.gnu.org/licenses/>.
17
18# Default target; must be first.
19all: libada
20	$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
21
22.PHONY: all
23
24## Multilib support variables.
25MULTISRCTOP =
26MULTIBUILDTOP =
27MULTIDIRS =
28MULTISUBDIR =
29MULTIDO = true
30MULTICLEAN = true
31
32# Standard autoconf-set variables.
33SHELL = @SHELL@
34srcdir = @srcdir@
35libdir = @libdir@
36build = @build@
37target = @target@
38prefix = @prefix@
39
40# Nonstandard autoconf-set variables.
41toolexecdir = @toolexecdir@
42toolexeclibdir = @toolexeclibdir@
43enable_shared = @enable_shared@
44
45LN_S=@LN_S@
46AWK=@AWK@
47
48ifeq (cp -p,$(LN_S))
49LN_S_RECURSIVE = cp -pR
50else
51LN_S_RECURSIVE = $(LN_S)
52endif
53
54# Variables for the user (or the top level) to override.
55objext=.o
56THREAD_KIND=native
57TRACE=no
58LDFLAGS=
59
60# The tedious process of getting CFLAGS right.
61CFLAGS=-g
62PICFLAG = @PICFLAG@
63GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
64GNATLIBCFLAGS= -g -O2
65GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \
66	-fexceptions -DIN_RTS @have_getipinfo@ @have_capability@
67
68host_subdir = @host_subdir@
69GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc
70
71target_noncanonical:=@target_noncanonical@
72version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
73libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
74ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
75
76# exeext should not be used because it's the *host* exeext.  We're building
77# a *target* library, aren't we?!?  Likewise for CC.  Still, provide bogus
78# definitions just in case something slips through the safety net provided
79# by recursive make invocations in gcc/ada/Makefile.in
80LIBADA_FLAGS_TO_PASS = \
81        "MAKEOVERRIDES=" \
82        "LDFLAGS=$(LDFLAGS)" \
83        "LN_S=$(LN_S)" \
84        "SHELL=$(SHELL)" \
85        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
86        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
87        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
88        "PICFLAG_FOR_TARGET=$(PICFLAG)" \
89        "THREAD_KIND=$(THREAD_KIND)" \
90        "TRACE=$(TRACE)" \
91        "MULTISUBDIR=$(MULTISUBDIR)" \
92        "libsubdir=$(libsubdir)" \
93        "toolexeclibdir=$(toolexeclibdir)" \
94        "objext=$(objext)" \
95        "prefix=$(prefix)" \
96        "exeext=.exeext.should.not.be.used " \
97	'CC=the.host.compiler.should.not.be.needed' \
98	"GCC_FOR_TARGET=$(CC)" \
99        "CFLAGS=$(CFLAGS)"
100
101.PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
102
103# Rules to build and install libada.
104libada: @default_gnatlib_target@
105
106gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx: osconstool $(GCC_DIR)/ada/Makefile
107	test -f stamp-libada || \
108	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
109	&& touch stamp-libada
110	-rm -rf adainclude
111	-rm -rf adalib
112	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude
113	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib
114
115osconstool:
116	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons
117
118install-libada: $(GCC_DIR)/ada/Makefile
119	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib
120
121# Check uninstalled version.
122check:
123
124# Check installed version.
125installcheck:
126
127# Build info (none here).
128info:
129
130# Build DVI (none here).
131dvi:
132
133# Build PDF (none here).
134pdf:
135
136# Build html (none here).
137html:
138
139# Build TAGS (none here).
140TAGS:
141
142.PHONY: check installcheck info dvi pdf html
143
144# Installation rules.
145install: install-libada
146	$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
147
148install-strip: install
149
150install-info:
151
152install-pdf:
153
154install-dvi:
155
156install-html:
157
158.PHONY: install install-strip install-info install-pdf install-dvi install-html
159
160# Cleaning rules.
161mostlyclean:
162	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
163
164clean:
165	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
166
167distclean:
168	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
169	$(RM) Makefile config.status config.log
170
171maintainer-clean:
172
173.PHONY: mostlyclean clean distclean maintainer-clean
174
175# Rules for rebuilding this Makefile.
176Makefile: $(srcdir)/Makefile.in config.status
177	CONFIG_FILES=$@ ; \
178	CONFIG_HEADERS= ; \
179	$(SHELL) ./config.status
180
181config.status: $(srcdir)/configure
182	$(SHELL) ./config.status --recheck
183
184AUTOCONF = autoconf
185configure_deps = \
186	$(srcdir)/configure.ac \
187	$(srcdir)/../config/acx.m4 \
188	$(srcdir)/../config/multi.m4 \
189	$(srcdir)/../config/override.m4 \
190	$(srcdir)/../config/picflag.m4 \
191	$(srcdir)/../config/toolexeclibdir.m4 \
192	$(srcdir)/../config/unwind_ipinfo.m4
193
194$(srcdir)/configure: @MAINT@ $(configure_deps)
195	cd $(srcdir) && $(AUTOCONF)
196
197# Don't export variables to the environment, in order to not confuse
198# configure.
199.NOEXPORT:
200