1 # Top level -*- makefile -*- fragment for GNU Ada (GNAT).
2 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3 # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
4 # Free Software Foundation, Inc.
6 #This file is part of GCC.
8 #GCC is free software; you can redistribute it and/or modify
9 #it under the terms of the GNU General Public License as published by
10 #the Free Software Foundation; either version 3, or (at your option)
13 #GCC is distributed in the hope that it will be useful,
14 #but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 #GNU General Public License for more details.
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
22 # This file provides the language dependent support in the main Makefile.
23 # Each language makefile fragment must provide the following targets:
25 # foo.all.cross, foo.start.encap, foo.rest.encap,
26 # foo.install-common, foo.install-man, foo.install-info, foo.install-pdf,
27 # foo.install-html, foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall,
28 # foo.mostlyclean, foo.clean, foo.distclean,
29 # foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
31 # where `foo' is the name of the language.
33 # It should also provide rules for:
35 # - making any compiler driver (eg: g++)
36 # - the compiler proper (eg: cc1plus)
37 # - define the names for selecting the language in LANGUAGES.
47 # Extra flags to pass to recursive makes.
48 COMMON_ADAFLAGS= -gnatpg
49 ifeq ($(TREECHECKING),)
52 CHECKING_ADAFLAGS= -gnata
54 WARN_ADAFLAGS= -W -Wall
56 # For native builds, the base compiler might be old and we need to arrange for
57 # style warnings not to be flagged as errors during stage1. Cross compilers
58 # need to be built by a recent/matching native so we might as well leave the
59 # checks fully active.
62 ADAFLAGS= $(COMMON_ADAFLAGS) -gnatwns
64 ADAFLAGS= $(COMMON_ADAFLAGS)
68 $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
69 FORCE_DEBUG_ADAFLAGS = -g
71 ADA_INCLUDES = -nostdinc -I- -I. -Iada/generated -Iada -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface -Iada/libgnat -I$(srcdir)/ada/libgnat
72 GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
73 GNATLIBCFLAGS= -g -O2 $(TCFLAGS)
74 ADA_INCLUDE_DIR = $(libsubdir)/adainclude
75 ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
78 # We do not want the WARN_CFLAGS of the compiler in Ada as it is for C/C++.
79 COMMON_FLAGS_TO_PASS = $(filter-out $(WARN_CFLAGS), $(FLAGS_TO_PASS))
81 "ADA_FOR_BUILD=$(ADA_FOR_BUILD)" \
82 "ADA_INCLUDE_DIR=$(ADA_INCLUDE_DIR)" \
83 "ADA_RTL_OBJ_DIR=$(ADA_RTL_OBJ_DIR)" \
84 "ADAFLAGS=$(ADAFLAGS) $(WARN_ADAFLAGS)" \
85 "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \
86 "INSTALL=$(INSTALL)" \
87 "INSTALL_DATA=$(INSTALL_DATA)" \
88 "INSTALL_PROGRAM=$(INSTALL_PROGRAM)"
90 # List of Ada tools to build and install
91 ADA_TOOLS=gnatbind gnatchop gnat gnatkr gnatlink gnatls gnatmake \
92 gnatname gnatprep gnatxref gnatfind gnatclean
94 # Say how to compile Ada programs.
95 .SUFFIXES: .ada .adb .ads
97 # FIXME: need to add $(ADA_CFLAGS) to .c.o suffix rule
98 # Use mildly strict warnings for this front end and add special flags.
99 ada-warn = $(ADA_CFLAGS) $(filter-out -pedantic, $(STRICT_WARN))
100 # Unresolved warnings in specific files.
101 ada/adaint.o-warn = -Wno-error
103 ada/%.o: ada/gcc-interface/%.c
107 # Function that dumps the dependencies of an Ada object. Dependency only work
108 # fully if the compiler support -gnatd.n. Otherwise a fallback mechanism is
109 # used. The fallback mechanism parse the ali files to get the list of
110 # dependencies and try to guess their location. If the location cannot be found
111 # then the dependency is ignored.
112 ifeq ($(findstring -gnatd.n,$(ALL_ADAFLAGS)),)
114 mkdir -p $(dir $@)/$(DEPDIR); \
116 a="`echo $@ | sed -e 's/.o$$/.ali/'`"; \
117 for d in `cat $$a | sed -ne 's;^D \([a-z0-9_\.-]*\).*;\1;gp'`; do \
118 for l in ada $(srcdir)/ada ada/libgnat $(srcdir)/ada/libgnat; do \
119 if test -f $$l/$$d; then \
125 >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
126 ADA_OUTPUT_OPTION = $(OUTPUT_OPTION)
129 mkdir -p $(dir $@)/$(DEPDIR); \
130 (echo "$@: $< " | tr -d '\015' | tr -d '\n'; \
131 cat $@.gnatd.n | tr -d '\015' | tr '\n' ' '; \
133 >$(dir $@)/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $@))
134 ADA_OUTPUT_OPTION = $(OUTPUT_OPTION) > $@.gnatd.n
140 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
145 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
148 # Define the names for selecting Ada in LANGUAGES.
149 ada: gnat1$(exeext) gnatbind$(exeext)
151 # Tell GNU Make to ignore these, if they exist.
154 # Compute the FLAGS to pass for gnattools, now linked with a C++ driver as
155 # we're linking against at least libcommon which contains C++ compiled code.
156 # We need to use the same driver to link as the one that was used to produce
157 # the objects, which depends on whether we're bootstrapping or not. The CXX
158 # variable conveys what we need for this, set to "g++" if not bootstrapping,
159 # ".../xg++" otherwise.
161 # There are too many Ada sources to check against here. Let's
162 # always force the recursive make.
163 ifeq ($(build), $(host))
164 ifeq ($(host), $(target))
165 # This is a regular native. So use the compiler from our current build
167 ADA_TOOLS_FLAGS_TO_PASS=\
168 CC="../../xgcc -B../../" \
170 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
171 ADA_INCLUDES="-I- -I../generated -I../rts" \
172 GNATMAKE="../../gnatmake" \
173 GNATLINK="../../gnatlink" \
174 GNATBIND="../../gnatbind"
176 # This is a regular cross compiler. Use the native compiler to compile
179 # put the host RTS dir first in the PATH to hide the default runtime
180 # files that are among the sources
181 ifneq ($(findstring ada,$(LANGUAGES)),)
182 RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
185 ADA_TOOLS_FLAGS_TO_PASS=\
188 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
189 ADA_INCLUDES="-I../generated -I$(RTS_DIR)/../adainclude -I$(RTS_DIR)" \
190 GNATMAKE="gnatmake" \
191 GNATBIND="gnatbind" \
192 GNATLINK="gnatlink" \
196 # Build is different from host so we are either building a canadian cross
197 # or a cross-native compiler. We provide defaults for tools targeting the
198 # host platform, but they can be overriden by just setting <tool>_FOR_HOST
200 GNATMAKE_FOR_HOST=$(host_noncanonical)-gnatmake
201 GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind
202 GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink
203 GNATLS_FOR_HOST=$(host_noncanonical)-gnatls
205 ifeq ($(host), $(target))
206 # This is a cross native. All the sources are taken from the currently
208 ADA_TOOLS_FLAGS_TO_PASS=\
211 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
212 ADA_INCLUDES="-I../generated -I../rts" \
213 GNATMAKE="$(GNATMAKE_FOR_HOST)" \
214 GNATBIND="$(GNATBIND_FOR_HOST)" \
215 GNATLINK="$(GNATLINK_FOR_HOST)" \
218 # This is a canadian cross. We should use a toolchain running on the
219 # build platform and targeting the host platform.
220 ifneq ($(findstring ada,$(LANGUAGES)),)
221 RTS_DIR:=$(strip $(subst \,/,$(shell $(GNATLS_FOR_HOST) -v | grep adalib )))
223 ADA_TOOLS_FLAGS_TO_PASS=\
226 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
227 ADA_INCLUDES="-I../generated -I$(RTS_DIR)/../adainclude -I$(RTS_DIR)" \
228 GNATMAKE="$(GNATMAKE_FOR_HOST)" \
229 GNATBIND="$(GNATBIND_FOR_HOST)" \
230 GNATLINK="$(GNATLINK_FOR_HOST)" \
235 # Strip -Werror during linking for the LTO bootstrap
236 GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS))
238 GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(LDFLAGS)
239 GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(LDFLAGS)
241 # Lists of files for various purposes.
243 # Languages-specific object files for Ada.
245 # Object files for gnat1 from C sources.
246 GNAT1_C_OBJS = ada/adadecode.o ada/adaint.o ada/argv.o ada/cio.o \
247 ada/cstreams.o ada/env.o ada/init.o ada/initialize.o ada/raise.o \
249 ada/seh_init.o ada/targext.o ada/cuintp.o ada/decl.o ada/rtfinal.o \
250 ada/rtinit.o ada/misc.o ada/utils.o ada/utils2.o ada/trans.o ada/targtyps.o
252 # Object files from Ada sources that are used by gnat1
254 ada/libgnat/a-charac.o \
255 ada/libgnat/a-chlat1.o \
256 ada/libgnat/a-elchha.o \
257 ada/libgnat/a-except.o \
258 ada/libgnat/a-exctra.o \
259 ada/libgnat/a-ioexce.o \
318 ada/libgnat/g-byorma.o \
319 ada/libgnat/g-dynhta.o \
320 ada/libgnat/g-hesora.o \
321 ada/libgnat/g-htable.o \
322 ada/libgnat/g-spchge.o \
323 ada/libgnat/g-speche.o \
324 ada/libgnat/g-u3spch.o \
332 ada/libgnat/interfac.o \
359 ada/libgnat/s-addope.o \
360 ada/libgnat/s-addima.o \
361 ada/libgnat/s-assert.o \
362 ada/libgnat/s-bitops.o \
363 ada/libgnat/s-carun8.o \
364 ada/libgnat/s-casuti.o \
365 ada/libgnat/s-conca2.o \
366 ada/libgnat/s-conca3.o \
367 ada/libgnat/s-conca4.o \
368 ada/libgnat/s-conca5.o \
369 ada/libgnat/s-conca6.o \
370 ada/libgnat/s-conca7.o \
371 ada/libgnat/s-conca8.o \
372 ada/libgnat/s-conca9.o \
373 ada/libgnat/s-crc32.o \
374 ada/libgnat/s-crtl.o \
375 ada/libgnat/s-excdeb.o \
376 ada/libgnat/s-except.o \
377 ada/libgnat/s-exctab.o \
378 ada/libgnat/s-excmac.o \
379 ada/libgnat/s-htable.o \
380 ada/libgnat/s-imenne.o \
381 ada/libgnat/s-imgenu.o \
382 ada/libgnat/s-imgint.o \
383 ada/libgnat/s-mastop.o \
384 ada/libgnat/s-memory.o \
385 ada/libgnat/s-os_lib.o \
386 ada/libgnat/s-parame.o \
387 ada/libgnat/s-purexc.o \
388 ada/libgnat/s-restri.o \
389 ada/libgnat/s-secsta.o \
390 ada/libgnat/s-soflin.o \
391 ada/libgnat/s-soliin.o \
392 ada/libgnat/s-sopco3.o \
393 ada/libgnat/s-sopco4.o \
394 ada/libgnat/s-sopco5.o \
395 ada/libgnat/s-stache.o \
396 ada/libgnat/s-stalib.o \
397 ada/libgnat/s-stoele.o \
398 ada/libgnat/s-strcom.o \
399 ada/libgnat/s-strhas.o \
400 ada/libgnat/s-string.o \
401 ada/libgnat/s-strops.o \
402 ada/libgnat/s-traceb.o \
403 ada/libgnat/s-traent.o \
404 ada/libgnat/s-trasym.o \
405 ada/libgnat/s-unstyp.o \
406 ada/libgnat/s-utf_32.o \
407 ada/libgnat/s-valint.o \
408 ada/libgnat/s-valuns.o \
409 ada/libgnat/s-valuti.o \
410 ada/libgnat/s-wchcnv.o \
411 ada/libgnat/s-wchcon.o \
412 ada/libgnat/s-wchjis.o \
413 ada/libgnat/s-wchstw.o \
469 ada/libgnat/system.o \
488 # Object files for gnat executables
489 GNAT1_ADA_OBJS = $(GNAT_ADA_OBJS) ada/back_end.o ada/gnat1drv.o
491 GNAT1_OBJS = $(GNAT1_C_OBJS) $(GNAT1_ADA_OBJS) ada/b_gnat1.o
494 ada/libgnat/a-elchha.o \
495 ada/libgnat/a-except.o \
526 ada/libgnat/g-byorma.o \
527 ada/libgnat/g-hesora.o \
528 ada/libgnat/g-htable.o \
535 ada/libgnat/interfac.o \
551 ada/libgnat/s-addope.o \
552 ada/libgnat/s-assert.o \
553 ada/libgnat/s-carun8.o \
554 ada/libgnat/s-casuti.o \
555 ada/libgnat/s-conca2.o \
556 ada/libgnat/s-conca3.o \
557 ada/libgnat/s-conca4.o \
558 ada/libgnat/s-conca5.o \
559 ada/libgnat/s-conca6.o \
560 ada/libgnat/s-conca7.o \
561 ada/libgnat/s-conca8.o \
562 ada/libgnat/s-conca9.o \
563 ada/libgnat/s-crc32.o \
564 ada/libgnat/s-crtl.o \
565 ada/libgnat/s-excdeb.o \
566 ada/libgnat/s-except.o \
567 ada/libgnat/s-excmac.o \
568 ada/libgnat/s-exctab.o \
569 ada/libgnat/s-htable.o \
570 ada/libgnat/s-imenne.o \
571 ada/libgnat/s-imgenu.o \
572 ada/libgnat/s-imgint.o \
573 ada/libgnat/s-mastop.o \
574 ada/libgnat/s-memory.o \
575 ada/libgnat/s-os_lib.o \
576 ada/libgnat/s-parame.o \
577 ada/libgnat/s-resfil.o \
578 ada/libgnat/s-restri.o \
579 ada/libgnat/s-secsta.o \
580 ada/libgnat/s-soflin.o \
581 ada/libgnat/s-soliin.o \
582 ada/libgnat/s-sopco3.o \
583 ada/libgnat/s-sopco4.o \
584 ada/libgnat/s-sopco5.o \
585 ada/libgnat/s-stache.o \
586 ada/libgnat/s-stalib.o \
587 ada/libgnat/s-stoele.o \
588 ada/libgnat/s-strhas.o \
589 ada/libgnat/s-string.o \
590 ada/libgnat/s-strops.o \
591 ada/libgnat/s-traent.o \
592 ada/libgnat/s-traceb.o \
593 ada/libgnat/s-unstyp.o \
594 ada/libgnat/s-utf_32.o \
595 ada/libgnat/s-wchcnv.o \
596 ada/libgnat/s-wchcon.o \
597 ada/libgnat/s-wchjis.o \
598 ada/libgnat/s-wchstw.o \
616 ada/libgnat/system.o \
627 # Language-independent object files.
628 ADA_BACKEND = $(BACKEND) attribs.o
630 # List of target dependent sources, overridden below as necessary
633 # Select the right s-excmac according to exception layout (Itanium or arm)
634 host_cpu=$(word 1, $(subst -, ,$(host)))
636 ifeq ($(strip $(filter-out arm%,$(host_cpu))),)
641 CFLAGS-ada/raise-gcc.o += -I$(srcdir)/../libgcc -DEH_MECHANISM_$(EH_MECHANISM)
643 ada/libgnat/s-excmac.o: ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
645 ada/libgnat/s-excmac.ads: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).ads
649 ada/libgnat/s-excmac.adb: $(srcdir)/ada/libgnat/s-excmac__$(EH_MECHANISM).adb
653 # Needs to be built with CC=gcc
654 # Since the RTL should be built with the latest compiler, remove the
655 # stamp target in the parent directory whenever gnat1 is rebuilt
656 gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) libcommon-target.a $(LIBDEPS)
657 +$(GCC_LLINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) \
658 libcommon-target.a $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS)
659 $(RM) stamp-gnatlib2-rts stamp-tools
661 gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBDEPS)
662 +$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) ggc-none.o libcommon-target.a $(LIBS) $(SYSLIBS) $(CFLAGS)
664 # use target-gcc target-gnatmake target-gnatbind target-gnatlink
665 gnattools: $(GCC_PARTS) $(CONFIG_H) prefix.o force
666 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1
667 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
670 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
671 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
673 cross-gnattools: force
674 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
675 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
676 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools4
678 canadian-gnattools: force
679 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
680 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
681 $(MAKE) -C ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools4
683 gnatlib gnatlib-sjlj gnatlib-zcx gnatlib-shared: force
684 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) \
685 GNATLIBFLAGS="$(GNATLIBFLAGS)" \
686 GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
687 TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
688 THREAD_KIND="$(THREAD_KIND)" \
690 FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
693 # use only for native compiler
694 gnatlib_and_tools: gnatlib gnattools
699 for tool in $(ADA_TOOLS) ; do \
700 if [ -f $$tool$(exeext) ] ; \
702 $(MV) $$tool$(exeext) $$tool-cross$(exeext); \
713 cd $(srcdir)/ada && etags -o TAGS.sub *.c *.h *.ads *.adb && \
714 etags --include TAGS.sub --include ../TAGS.sub
717 # Generate documentation.
719 doc/gnat_ugn.info: ada/gnat_ugn.texi \
720 $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi \
722 if [ x$(BUILD_INFO) = xinfo ]; then \
724 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
725 -I$(srcdir)/ada -o $@ $<; \
728 doc/gnat_rm.info: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
729 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
730 if [ x$(BUILD_INFO) = xinfo ]; then \
732 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
733 -I$(srcdir)/ada -o $@ $<; \
736 doc/gnat-style.info: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi \
737 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
738 if [ x$(BUILD_INFO) = xinfo ]; then \
740 $(MAKEINFO) $(MAKEINFOFLAGS) -I$(gcc_docdir)/include \
741 -I$(srcdir)/ada -o $@ $<; \
744 ADA_INFOFILES = doc/gnat_ugn.info doc/gnat_rm.info doc/gnat-style.info
746 ada.info: $(ADA_INFOFILES)
748 ada.srcinfo: $(ADA_INFOFILES)
749 -$(CP) $^ $(srcdir)/doc
751 ada.install-info: $(DESTDIR)$(infodir)/gnat_ugn.info \
752 $(DESTDIR)$(infodir)/gnat_rm.info \
753 $(DESTDIR)$(infodir)/gnat-style.info
755 ada.dvi: doc/gnat_ugn.dvi \
756 doc/gnat_rm.dvi doc/gnat-style.dvi
758 ADA_PDFFILES = doc/gnat_ugn.pdf \
759 doc/gnat_rm.pdf doc/gnat-style.pdf
761 ada.pdf: $(ADA_PDFFILES)
763 ada.install-pdf: $(ADA_PDFFILES)
765 test -z "$(pdfdir)/gcc" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)/gcc"
766 @list='$(ADA_PDFFILES)'; for p in $$list; do \
767 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
768 f=$(pdf__strip_dir) \
769 echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/gcc/$$f'"; \
770 $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \
777 doc/gnat_ugn.dvi: ada/gnat_ugn.texi \
778 $(gcc_docdir)/include/fdl.texi \
779 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
780 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
782 doc/gnat_rm.dvi: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
783 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
784 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
786 doc/gnat-style.dvi: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
787 $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $<
789 doc/gnat_ugn.pdf: ada/gnat_ugn.texi \
790 $(gcc_docdir)/include/fdl.texi \
791 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
792 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
794 doc/gnat_rm.pdf: ada/gnat_rm.texi $(gcc_docdir)/include/fdl.texi \
795 $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi
796 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
798 doc/gnat-style.pdf: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
799 $(TEXI2PDF) -c -I $(abs_docdir)/include -o $@ $<
803 # gnat1 is installed elsewhere as part of $(COMPILERS).
805 # Install the binder program as gnatbind (native) or $(prefix)gnatbind
806 # (cross). $(prefix) comes from the --program-prefix configure option,
807 # or from the --target option if the former is not specified.
808 # Do the same for the rest of the Ada tools (gnatchop, gnat, gnatkr,
809 # gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gnatfind,
811 # gnatdll is only used on Windows.
812 # vxaddr2line is only used for cross VxWorks ports (it calls the underlying
815 $(MKDIR) $(DESTDIR)$(bindir)
816 -if [ -f gnat1$(exeext) ] ; \
818 for tool in $(ADA_TOOLS) ; do \
819 install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \
820 $(RM) $(DESTDIR)$(bindir)/$$install_name; \
821 if [ -f $$tool-cross$(exeext) ] ; \
823 $(INSTALL_PROGRAM) $$tool-cross$(exeext) $(DESTDIR)$(bindir)/$$install_name; \
825 $(INSTALL_PROGRAM) $$tool$(exeext) $(DESTDIR)$(bindir)/$$install_name; \
828 $(RM) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
829 $(INSTALL_PROGRAM) gnatdll$(exeext) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
830 if [ -f vxaddr2line$(exeext) ] ; \
832 $(RM) $(DESTDIR)$(bindir)/vxaddr2line$(exeext); \
833 $(INSTALL_PROGRAM) vxaddr2line$(exeext) $(DESTDIR)$(bindir)/vxaddr2line$(exeext); \
838 # Finally, install the library
840 -if [ -f gnat1$(exeext) ] ; \
842 $(MAKE) $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib; \
846 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET)
849 $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj
855 for tool in $(ADA_TOOLS) ; do \
856 install_name=`echo $$tool|sed '$(program_transform_name)'`$(exeext); \
857 -$(RM) $(DESTDIR)$(bindir)/$$install_name; \
859 -$(RM) $(DESTDIR)$(tooldir)/bin/gnatdll$(exeext)
860 -$(RM) $(DESTDIR)$(tooldir)/bin/vxaddr2line$(exeext)
863 # A lot of the ancillary files are deleted by the main makefile.
864 # We just have to delete files specific to us.
867 -$(RM) ada/*$(objext) ada/*.ali ada/b_gnat*.ads ada/b_gnat*.adb
868 -$(RM) ada/*$(objext).gnatd.n
869 -$(RM) ada/*$(coverageexts)
870 -$(RM) ada/sdefault.adb ada/stamp-sdefault ada/stamp-snames
872 -$(RMDIR) ada/libgnat
873 -$(RM) gnatbind$(exeext) gnat1$(exeext)
877 -$(RM) gnatchop$(exeext)
879 -$(RM) gnatdll$(exeext)
880 -$(RM) gnatkr$(exeext)
881 -$(RM) gnatlink$(exeext)
882 -$(RM) gnatls$(exeext)
883 -$(RM) gnatmake$(exeext)
884 -$(RM) gnatname$(exeext)
885 -$(RM) gnatprep$(exeext)
886 -$(RM) gnatfind$(exeext)
887 -$(RM) gnatxref$(exeext)
888 -$(RM) gnatclean$(exeext)
893 ada.maintainer-clean:
898 -$(RM) ada/treeprs.ads
899 -$(RM) ada/snames.ads ada/snames.adb ada/snames.h
902 # The main makefile has already created stage?/ada
904 ada.stage1: stage1-start
905 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage1/ada
906 -$(MV) ada/stamp-* stage1/ada
907 ada.stage2: stage2-start
908 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage2/ada
909 -$(MV) ada/stamp-* stage2/ada
910 ada.stage3: stage3-start
911 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage3/ada
912 -$(MV) ada/stamp-* stage3/ada
913 ada.stage4: stage4-start
914 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stage4/ada
915 -$(MV) ada/stamp-* stage4/ada
916 ada.stageprofile: stageprofile-start
917 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stageprofile/ada
918 -$(MV) ada/stamp-* stageprofile/ada
919 ada.stagefeedback: stagefeedback-start
920 -$(MV) ada/*$(objext) ada/*.ali ada/b_gnat*.ad* stagefeedback/ada
921 -$(MV) ada/stamp-* stagefeedback/ada
923 lang_checks += check-gnat
924 lang_checks_parallelized += check-gnat
925 # For description see the check_$lang_parallelize comment in gcc/Makefile.in.
926 check_gnat_parallelize = 1000
928 check-ada: check-acats check-gnat
929 check-ada-subtargets: check-acats-subtargets check-gnat-subtargets
931 ACATSDIR = $(TESTSUITEDIR)/ada/acats
932 ACATSCMD = run_acats.sh
934 check_acats_numbers0:=1 2 3 4 5 6 7 8 9
935 check_acats_numbers1:=0 $(check_acats_numbers0)
936 check_acats_numbers2:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers1)))
937 check_acats_numbers3:=$(addprefix 0,$(check_acats_numbers1)) $(check_acats_numbers2)
938 check_acats_numbers4:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers3)))
939 check_acats_numbers5:=$(addprefix 0,$(check_acats_numbers3)) $(check_acats_numbers4)
940 check_acats_numbers6:=$(foreach i,$(check_acats_numbers0),$(addprefix $(i),$(check_acats_numbers5)))
941 check_acats_numbers:=$(check_acats_numbers0) $(check_acats_numbers2) $(check_acats_numbers4) $(check_acats_numbers6)
942 check_acats_subdirs=$(wordlist 1, \
943 $(if $(GCC_TEST_PARALLEL_SLOTS),$(GCC_TEST_PARALLEL_SLOTS),128), \
944 $(check_acats_numbers))
945 check_acats_targets = $(addprefix check-acats, $(check_acats_subdirs))
948 @test -d $(ACATSDIR) || mkdir -p $(ACATSDIR); \
949 rootme=`${PWD_COMMAND}`; export rootme; \
950 EXPECT=$(EXPECT); export EXPECT; \
951 if [ -z "$(CHAPTERS)" ] && [ -n "$(filter -j%, $(MFLAGS))" ]; \
953 rm -rf $(ACATSDIR)-parallel; \
954 mkdir $(ACATSDIR)-parallel; \
955 ( testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
957 cd $(ACATSDIR) && $(SHELL) $${testdir}/$(ACATSCMD) NONE ) \
959 GCC_RUNTEST_PARALLELIZE_DIR=$$rootme/$(ACATSDIR)-parallel; \
960 export GCC_RUNTEST_PARALLELIZE_DIR; \
961 $(MAKE) $(check_acats_targets); \
962 rm -rf $(ACATSDIR)-parallel; \
963 acats_sums= ; acats_logs= ; \
964 for idx in "" $(check_acats_subdirs); do \
965 [ -d $(ACATSDIR)$$idx ] || continue; \
966 mv -f $(ACATSDIR)$$idx/acats.sum $(ACATSDIR)$$idx/acats.sum.sep; \
967 mv -f $(ACATSDIR)$$idx/acats.log $(ACATSDIR)$$idx/acats.log.sep; \
968 acats_sums="$$acats_sums $(ACATSDIR)$$idx/acats.sum.sep"; \
969 acats_logs="$$acats_logs $(ACATSDIR)$$idx/acats.log.sep"; \
971 $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh \
972 $$acats_sums > $(ACATSDIR)/acats.sum; \
973 $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh -L \
974 $$acats_logs > $(ACATSDIR)/acats.log; \
977 testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
978 export testdir; cd $(ACATSDIR) && $(SHELL) $${testdir}/$(ACATSCMD) $(CHAPTERS)
980 check-acats-subtargets:
983 # Parallelized check-acats
984 $(check_acats_targets): check-acats%:
985 if [ -f $$GCC_RUNTEST_PARALLELIZE_DIR/finished ]; then \
986 rm -rf $(ACATSDIR)$*; exit 0; \
988 test -d $(ACATSDIR)$* || mkdir -p $(ACATSDIR)$*; \
989 testdir=`cd ${srcdir}/${ACATSDIR} && ${PWD_COMMAND}`; \
990 export testdir; cd $(ACATSDIR)$* && $(SHELL) $${testdir}/$(ACATSCMD)
991 touch $$GCC_RUNTEST_PARALLELIZE_DIR/finished
993 .PHONY: check-acats $(check_acats_targets)
995 # Compiling object files from source files.
997 # Ada language specific files.
999 ada/b_gnat1.adb : $(GNAT1_ADA_OBJS)
1000 # Old gnatbind do not allow a path for -o.
1001 $(GNATBIND) $(ADA_INCLUDES) -o b_gnat1.adb -n ada/gnat1drv.ali
1002 $(MV) b_gnat1.adb b_gnat1.ads ada/
1004 ada/b_gnat1.o : ada/b_gnat1.adb
1005 # Do not use ADAFLAGS to get rid of -gnatg which generates a lot
1006 # of style messages.
1007 $(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
1008 $< $(ADA_OUTPUT_OPTION)
1010 ada/b_gnatb.adb : $(GNATBIND_OBJS) ada/gnatbind.o ada/libgnat/interfac.o
1011 # Old gnatbind do not allow a path for -o.
1012 $(GNATBIND) $(ADA_INCLUDES) -o b_gnatb.adb ada/gnatbind.ali
1013 $(MV) b_gnatb.adb b_gnatb.ads ada/
1015 ada/b_gnatb.o : ada/b_gnatb.adb
1016 $(CC) -c $(CFLAGS) $(ADA_CFLAGS) -gnatp -gnatws $(ADA_INCLUDES) \
1017 $< $(ADA_OUTPUT_OPTION)
1019 include $(srcdir)/ada/Make-generated.in
1021 update-sources : ada/treeprs.ads ada/einfo.h ada/sinfo.h ada/nmake.adb \
1023 $(RM) $(addprefix $(srcdir)/ada/,$(notdir $^))
1024 $(CP) $^ $(srcdir)/ada
1026 ada/sdefault.o : ada/libgnat/ada.ads ada/libgnat/a-except.ads ada/libgnat/a-unccon.ads \
1027 ada/libgnat/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads ada/namet.ads \
1028 ada/opt.ads ada/osint.ads ada/output.ads ada/sdefault.ads ada/sdefault.adb \
1029 ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \
1030 ada/libgnat/s-stalib.ads ada/libgnat/s-strops.ads ada/libgnat/s-sopco3.ads ada/libgnat/s-sopco4.ads \
1031 ada/libgnat/s-sopco5.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \
1032 ada/libgnat/s-wchcon.ads ada/libgnat/system.ads ada/table.adb ada/table.ads ada/tree_io.ads \
1033 ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads
1035 # Special flags - see gcc-interface/Makefile.in for the template.
1037 ada/libgnat/a-except.o : ada/libgnat/a-except.adb ada/libgnat/a-except.ads ada/libgnat/s-excmac.ads ada/libgnat/s-excmac.adb
1038 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O1 -fno-inline \
1039 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1042 ada/libgnat/s-excdeb.o : ada/libgnat/s-excdeb.adb ada/libgnat/s-excdeb.ads
1043 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) -O0 \
1044 $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1047 ada/libgnat/s-assert.o : ada/libgnat/s-assert.adb ada/libgnat/s-assert.ads
1048 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
1049 $< $(ADA_OUTPUT_OPTION)
1052 ada/libgnat/a-tags.o : ada/libgnat/a-tags.adb ada/libgnat/a-tags.ads
1053 $(CC) -c $(ALL_ADAFLAGS) $(FORCE_DEBUG_ADAFLAGS) $(ADA_INCLUDES) \
1054 $< $(ADA_OUTPUT_OPTION)
1057 # Handling of gnatvsn version string
1059 # This ensure the build works even if there is no GNAT_DATE present in the
1064 ada/generated/gnatvsn.ads: ada/gnatvsn.ads BASE-VER ada/GNAT_DATE
1065 $(MKDIR) ada/generated
1066 s=`cat $(srcdir)/BASE-VER | sed -e "s/\([0-9]*\)\.\([0-9]*\)\..*/-\1\2/g"`; \
1067 d=`if test -f $(srcdir)/ada/GNAT_DATE; then \
1068 cat $(srcdir)/ada/GNAT_DATE; else date +%Y%m%d; fi`; \
1069 cat $< | sed -e "/Version/s/(\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*)/($$d$$s)/g" >$@
1071 ada/gnatvsn.o : ada/gnatvsn.adb ada/generated/gnatvsn.ads
1072 $(CC) -c $(ALL_ADAFLAGS) -Iada/generated -I../ada/generated $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1075 # Dependencies for windows specific tool (mdll)
1077 ada/mdll.o : ada/mdll.adb ada/mdll.ads ada/mdll-fil.ads ada/mdll-utl.ads
1078 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1080 ada/mdll-fil.o : ada/mdll-fil.adb ada/mdll.ads ada/mdll-fil.ads
1081 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1083 ada/mdll-utl.o : ada/mdll-utl.adb ada/mdll.ads ada/mdll-utl.ads ada/sdefault.ads ada/types.ads
1084 $(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
1086 ada_generated_files = ada/sinfo.h ada/einfo.h ada/nmake.adb ada/nmake.ads \
1087 ada/treeprs.ads ada/snames.ads ada/snames.adb ada/snames.h \
1088 ada/generated/gnatvsn.ads
1090 # When building from scratch we don't have dependency files, the only thing
1091 # we need to ensure is that the generated files are created first.
1092 $(GNAT1_OBJS) $(GNATBIND_OBJS): | $(ada_generated_files)
1094 # Manually include the auto-generated dependencies for the Ada host objects.
1095 ADA_DEPFILES = $(foreach obj,$(GNAT1_ADA_OBJS) $(GNATBIND_OBJS),\
1096 $(dir $(obj))/$(DEPDIR)/$(patsubst %.o,%.Po,$(notdir $(obj))))
1097 -include $(ADA_DEPFILES)
1099 # Automatically include the auto-generated dependencies for the C host objects.
1100 ada_OBJS = $(GNAT1_C_OBJS)