diff options
Diffstat (limited to 'debian/patches/ada-gnattools-cross.diff')
-rw-r--r-- | debian/patches/ada-gnattools-cross.diff | 761 |
1 files changed, 761 insertions, 0 deletions
diff --git a/debian/patches/ada-gnattools-cross.diff b/debian/patches/ada-gnattools-cross.diff new file mode 100644 index 0000000..f1f7460 --- /dev/null +++ b/debian/patches/ada-gnattools-cross.diff @@ -0,0 +1,761 @@ +# DP: - When building the native gnat, link the gnat tools against +# DP: the build tree (build/$(host_alias)/{libgnatvsn,libgnatprj}.) +# DP: - When building a cross gnat, link against the libgnatvsn-6-dev +# DP: and libgnatprj-6-dev packages. +# DP: This link will be done by /usr/bin/$(host_alias)-gnat*, thus +# DP: the native gnat with the same major version will be required. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -102,7 +102,7 @@ INSTALL_DATA_DATE = cp -p + MAKEINFO = makeinfo + TEXI2DVI = texi2dvi + TEXI2PDF = texi2pdf +-GNATBIND_FLAGS = -static -x ++GNATBIND_FLAGS = -shared -x + ADA_CFLAGS = + ADAFLAGS = -W -Wall -gnatpg -gnata + FORCE_DEBUG_ADAFLAGS = -g +@@ -141,6 +141,8 @@ target=@target@ + target_cpu=@target_cpu@ + target_vendor=@target_vendor@ + target_os=@target_os@ ++host_alias=@host_alias@ ++host=@host@ + host_cpu=@host_cpu@ + host_vendor=@host_vendor@ + host_os=@host_os@ +@@ -235,7 +237,7 @@ ALL_CPPFLAGS = $(CPPFLAGS) + ALL_COMPILERFLAGS = $(ALL_CFLAGS) + + # This is where we get libiberty.a from. +-LIBIBERTY = ../../libiberty/libiberty.a ++LIBIBERTY = ../../libiberty/pic/libiberty.a + + # We need to link against libbacktrace because diagnostic.c in + # libcommon.a uses it. +@@ -247,9 +249,15 @@ LIBS = $(LIBINTL) $(LIBICONV) $(LIBBACKT + LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ +- ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \ +- ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB) ++ ++TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../version.o ../../../libiberty/pic/lrealpath.o \ ++ ../../libbackend.a ../../libcommon-target.a ../../libcommon.a ../../../libcpp/libcpp.a ../$(LIBBACKTRACE) ../$(LIBIBERTY) -lstdc++ ++ ++ifeq ($(host),$(target)) ++ TOOLS_LIBS += -L../$(RTSDIR) -lgnat-6 \ ++ -L../../../$(target_alias)/libgnatvsn -lgnatvsn \ ++ -L../../../$(target_alias)/libgnatprj -lgnatprj ++endif + + # Add -no-pie to TOOLS_LIBS since some of them are compiled with -fno-PIE. + TOOLS_LIBS += @NO_PIE_FLAG@ +@@ -261,7 +269,12 @@ TOOLS_LIBS += @NO_PIE_FLAG@ + INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote $(srcdir) \ + -I $(ftop_srcdir)/include $(GMPINC) + +-ADA_INCLUDES = -I- -I. -I$(srcdir)/ada ++ifeq ($(host),$(target)) ++ ADA_INCLUDES = -I../rts \ ++ -I../../../$(target_alias)/libgnatvsn \ ++ -I../../../$(target_alias)/libgnatprj ++endif ++ADA_INCLUDES += -I- -I. -I$(srcdir)/ada + + # Likewise, but valid for subdirectories of the current dir. + # FIXME: for VxWorks, we cannot add $(fsrcdir) because the regs.h file in +@@ -309,30 +322,50 @@ Makefile: ../config.status $(srcdir)/ada + # defined in this file into the environment. + .NOEXPORT: + +-# Lists of files for various purposes. + +-GNATLINK_OBJS = gnatlink.o \ +- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \ +- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \ +- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \ +- types.o validsw.o widechar.o +- +-GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \ +- atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \ +- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \ +- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \ +- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \ +- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \ +- output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \ +- prj-conf.o prj-pp.o prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o \ +- prj-proc.o prj-strt.o prj-tree.o prj-util.o restrict.o rident.o s-exctab.o \ +- s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \ +- s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \ +- sinput-p.o snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \ +- switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o uintp.o \ +- uname.o urealp.o usage.o widechar.o \ +- $(EXTRA_GNATMAKE_OBJS) ++# Since we don't have gnatmake, we must specify the full list of ++# object files necessary to build gnatmake and gnatlink. ++GNATLINK_OBJS = \ ++gnatlink.o \ ++indepsw.o \ ++validsw.o ++ ++GNATMAKE_OBJS = \ ++aspects.o \ ++errout.o \ ++fname-sf.o \ ++gnatmake.o \ ++make.o \ ++makeusg.o \ ++mlib-prj.o \ ++osint-m.o \ ++restrict.o \ ++sem_aux.o \ ++usage.o \ ++validsw.o \ ++$(EXTRA_GNATMAKE_OBJS) ++ ++EXTRA_TOOLS_OBJS = \ ++bcheck.o \ ++binde.o \ ++bindgen.o \ ++bindusg.o \ ++clean.o \ ++gprep.o \ ++makegpr.o \ ++osint-b.o \ ++osint-l.o \ ++prep.o \ ++prj-makr.o \ ++prj-pp.o \ ++switch-b.o \ ++vms_cmds.o \ ++vms_conv.o \ ++vms_data.o \ ++xr_tabls.o \ ++xref_lib.o ++ ++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS) + + # Make arch match the current multilib so that the RTS selection code + # picks up the right files. For a given target this must be coherent +@@ -1612,6 +1645,11 @@ ifeq ($(strip $(filter-out s390% linux%, + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # HP/PA HP-UX 10 + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ +@@ -2500,153 +2538,6 @@ ADA_EXCLUDE_FILES=$(filter-out \ + $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \ + $(ADA_EXCLUDE_SRCS)) + +-LIBGNAT=../$(RTSDIR)/libgnat.a +- +-TOOLS_FLAGS_TO_PASS= \ +- "CC=$(CC)" \ +- "CFLAGS=$(CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ +- "INCLUDES=$(INCLUDES_FOR_SUBDIR)"\ +- "ADA_INCLUDES=$(ADA_INCLUDES) $(ADA_INCLUDES_FOR_SUBDIR)"\ +- "libsubdir=$(libsubdir)" \ +- "exeext=$(exeext)" \ +- "fsrcdir=$(fsrcdir)" \ +- "srcdir=$(fsrcdir)" \ +- "TOOLS_LIBS=$(TOOLS_LIBS) $(TGT_LIB)" \ +- "GNATMAKE=$(GNATMAKE)" \ +- "GNATLINK=$(GNATLINK)" \ +- "GNATBIND=$(GNATBIND)" +- +-GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS) +- +-# 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 below +- +-../stamp-tools: +- -$(RM) tools/* +- -$(RMDIR) tools +- -$(MKDIR) tools +- -(cd tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .) +- -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ +- $(RM) tools/$(word 1,$(subst <, ,$(PAIR)));\ +- $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ +- tools/$(word 1,$(subst <, ,$(PAIR)));) +- touch ../stamp-tools +- +-# when compiling the tools, the runtime has to be first on the path so that +-# it hides the runtime files lying with the rest of the sources +-ifeq ($(TOOLSCASE),native) +- vpath %.ads ../$(RTSDIR) ../ +- vpath %.adb ../$(RTSDIR) ../ +- vpath %.c ../$(RTSDIR) ../ +- vpath %.h ../$(RTSDIR) ../ +-endif +- +-# in the cross tools case, everything is compiled with the native +-# gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES +-ifeq ($(TOOLSCASE),cross) +- vpath %.ads ../ +- vpath %.adb ../ +- vpath %.c ../ +- vpath %.h ../ +-endif +- +-# 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 gnattools1-re) +-gnattools1: ../stamp-tools ../stamp-gnatlib-$(RTSDIR) +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=native \ +- ../../gnatmake$(exeext) ../../gnatlink$(exeext) +- +-# 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. +-gnattools1-re: ../stamp-tools +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=cross INCLUDES="" gnatmake-re gnatlink-re +- +-# these tools are built with gnatmake & are common to native and cross +-gnattools2: ../stamp-tools +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=native common-tools $(EXTRA_GNATTOOLS) +- +-# those tools are only built for the cross version +-gnattools4: ../stamp-tools +-ifeq ($(ENABLE_VXADDR2LINE),true) +- $(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \ +- TOOLSCASE=cross top_buildir=../../.. \ +- ../../vxaddr2line$(exeext) +-endif +- +-common-tools: ../stamp-tools +- $(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \ +- --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \ +- gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \ +- gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS) +- $(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- $(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS) +- +-../../gnatdll$(exeext): ../stamp-tools +- $(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll +- $(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-../../vxaddr2line$(exeext): ../stamp-tools +- $(GNATMAKE) -c $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line +- $(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB) +- +-gnatmake-re: ../stamp-tools +- $(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)" +- $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake +- $(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- +-# Note the use of the "mv" command in order to allow gnatlink to be linked with +-# with the former version of gnatlink itself which cannot override itself. +-# gnatlink-re cannot be run at the same time as gnatmake-re, hence the +-# dependency +-gnatlink-re: ../stamp-tools gnatmake-re +- $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink +- $(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \ +- --GCC="$(GCC_LINK)" $(TOOLS_LIBS) +- $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) +- +-# Needs to be built with CC=gcc +-# Since the RTL should be built with the latest compiler, remove the +-# stamp target in the parent directory whenever gnat1 is rebuilt +- +-# Likewise for the tools +-../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS) +- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS) +- +-../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS) +- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS) $(TOOLS1_LIBS) +- + ../stamp-gnatlib-$(RTSDIR): + @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \ + then \ +@@ -2685,14 +2576,10 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + # Also install the .dSYM directories if they exist (these directories + # contain the debug information for the shared libraries on darwin) + for file in gnat gnarl; do \ +- if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ +- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ ++ $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + fi; \ +- if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \ +- $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \ +- fi; \ + if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \ + $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +@@ -2705,19 +2592,7 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads + +-../stamp-gnatlib2-$(RTSDIR): +- $(RM) $(RTSDIR)/s-*.ali +- $(RM) $(RTSDIR)/s-*$(objext) +- $(RM) $(RTSDIR)/a-*.ali +- $(RM) $(RTSDIR)/a-*$(objext) +- $(RM) $(RTSDIR)/*.ali +- $(RM) $(RTSDIR)/*$(objext) +- $(RM) $(RTSDIR)/*$(arext) +- $(RM) $(RTSDIR)/*$(soext) +- touch ../stamp-gnatlib2-$(RTSDIR) +- $(RM) ../stamp-gnatlib-$(RTSDIR) +- +-../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR) ++../stamp-gnatlib1-$(RTSDIR): Makefile + $(RMDIR) $(RTSDIR) + $(MKDIR) $(RTSDIR) + $(CHMOD) u+w $(RTSDIR) +@@ -2782,7 +2657,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib + $(OSCONS_EXTRACT) ; \ + ../bldtools/oscons/xoscons s-oscons) + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads + test -f $(RTSDIR)/s-oscons.ads || exit 1 + # C files + $(MAKE) -C $(RTSDIR) \ +@@ -2820,32 +2695,44 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../ + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. + gnatlib-shared-default: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) ++ $(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1 + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(MISCLIB) -lm $(GNATLIBLDFLAGS) + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(THREADSLIB) $(GNATLIBLDFLAGS) +- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) ++ cd $(RTSDIR); for lib in gnat gnarl; do \ ++ l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ ++ $(LN_S) $$l.1 $$l; \ ++ done ++ $(CHMOD) a-wx $(RTSDIR)/*.ali + + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -2855,9 +2742,8 @@ gnatlib-shared-dual: + GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-default +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -2865,8 +2751,7 @@ gnatlib-shared-dual: + GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-default + + gnatlib-shared-dual-win32: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -2876,17 +2761,15 @@ gnatlib-shared-dual-win32: + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-win32 +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-win32 + + # ??? we need to add the option to support auto-import of arrays/records to + # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +@@ -3136,6 +3019,68 @@ targext.o : targext.c + $(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \ + $< $(OUTPUT_OPTION) + ++GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS) ++ ++../stamp-tools: ++ -$(RM) tools/* ++ -$(RMDIR) tools ++ -$(MKDIR) tools ++ -(cd tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .) ++ -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ $(RM) tools/$(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ tools/$(word 1,$(subst <, ,$(PAIR)));) ++ touch ../stamp-tools ++ ++gnatmake-re: ../stamp-tools ++ $(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)" ++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)" ++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake ++ $(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ ++# Note the use of the "mv" command in order to allow gnatlink to be linked with ++# with the former version of gnatlink itself which cannot override itself. ++# gnatlink-re cannot be run at the same time as gnatmake-re, hence the ++# dependency ++gnatlink-re: ../stamp-tools gnatmake-re ++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)" ++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink ++ $(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) ++ ++# Likewise for the tools ++../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS) ++ +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS) ++ ++../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS) ++ +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS) ++ ++common-tools: ../stamp-tools ++ $(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \ ++ --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \ ++ gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \ ++ gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS) ++ $(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ $(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \ ++ $(TOOLS_LIBS) $(LDFLAGS) ++ + # In GNU Make, ignore whether `stage*' exists. + .PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrap + .PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4 +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -52,7 +52,7 @@ WARN_CFLAGS = @warn_cflags@ + ADA_CFLAGS=@ADA_CFLAGS@ + + # Variables for gnattools. +-ADAFLAGS= -gnatpg -gnata ++ADAFLAGS= -gnatn + + # For finding the GCC build dir, which is used far too much + GCC_DIR=../gcc +@@ -70,28 +70,168 @@ INCLUDES_FOR_SUBDIR = -iquote . -iquote + 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 ++ -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 \ ++ -L../$(target_noncanonical)/libatomic/.libs ++ ++CFLAGS=-O2 -Wall ++ADA_CFLAGS=-O2 -gnatn ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts \ ++ -I../$(target_noncanonical)/libgnatvsn -I../$(target_noncanonical)/libgnatprj ++LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ ++ ../$(target_noncanonical)/libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) ++SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++SHARED_ADA_LIBS += -L../$(target_noncanonical)/libgnatvsn -lgnatvsn ++SHARED_ADA_LIBS += -L../$(target_noncanonical)/libgnatprj -lgnatprj ++STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a ++STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ ++../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ++ ++# We will use the just-built compiler to compile and link everything. ++GCC=../gcc/xgcc -B../gcc/ -no-pie ++GXX=../gcc/xg++ -B../gcc/ -no-pie ++ ++# File lists ++# ---------- ++ ++# File associations set by configure ++EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@ ++TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@ ++ ++# Stage 1 builds xgcc and gnatbind; we can use them to build ++# gnatmake-static and gnatlink-static, then use gnatmake-static and ++# gnatlink-static to build the other tools. The reason we first build ++# statically-linked versions of gnatmake and gnatlink is so we can run ++# them with confidence on all build platforms, without LD_LIBRARY_PATH ++# or some such variable. ++ ++# The tools we will build using gnatmake-static and gnatlink-static. ++TOOLS := gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatls gnatlink ++TOOLS += gnatmake gnatname gnatprep gnatxref ++ ++# Since we don't have gnatmake, we must specify the full list of ++# object files necessary to build gnatmake and gnatlink. ++GNATLINK_OBJS = \ ++gnatlink.o \ ++indepsw.o \ ++validsw.o \ ++link.o ++ ++GNATMAKE_OBJS = \ ++aspects.o \ ++errout.o \ ++fname-sf.o \ ++gnatmake.o \ ++make.o \ ++makeusg.o \ ++mlib-prj.o \ ++osint-m.o \ ++restrict.o \ ++sem_aux.o \ ++usage.o \ ++validsw.o \ ++link.o \ ++$(EXTRA_GNATMAKE_OBJS) ++ ++EXTRA_TOOLS_OBJS = \ ++bcheck.o \ ++binde.o \ ++bindgen.o \ ++bindusg.o \ ++clean.o \ ++gprep.o \ ++makegpr.o \ ++osint-b.o \ ++osint-l.o \ ++prep.o \ ++prj-makr.o \ ++prj-pp.o \ ++switch-b.o \ ++vms_cmds.o \ ++vms_conv.o \ ++vms_data.o \ ++xr_tabls.o \ ++xref_lib.o ++ ++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS) ++ ++# Makefile targets ++# ---------------- ++ ++.PHONY: gnattools gnattools-native gnattools-cross regnattools ++gnattools: @default_gnattools_target@ ++ ++BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) ++SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) ++ ++$(notdir $(SPECS) $(BODIES)): stamp-gnattools-sources ++ ++stamp-gnattools-sources: ++ for file in $(BODIES) $(SPECS); do \ ++ $(LN_S) -f $$file .; \ ++ done ++ rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb . ++ $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ rm -f $(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ $(word 1,$(subst <, ,$(PAIR)));) ++ touch $@ ++ ++gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: ../$(target_noncanonical)/libgnatvsn/libgnatvsn.so ++gnattools-native: stamp-gnattools-sources ++gnattools-native: $(TOOLS) ++ cp -lpf $(TOOLS) ../gcc ++ ++$(TOOLS) gnatcmd: | gnatmake-static gnatlink-static ++ ++vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc ++vpath %.h @srcdir@/../gcc/ada ++ ++# gnatlink ++ ++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o ++ $(GXX) -o $@ $^ \ ++ ../$(target_noncanonical)/libgnatprj/libgnatprj.a \ ++ ../$(target_noncanonical)/libgnatvsn/libgnatvsn.a \ ++ ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) $(CXX_LFLAGS) $(LDFLAGS) ++ ++gnatlink: $(GNATLINK_OBJS) b_gnatl.o ++ $(GXX) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(CXX_LFLAGS) $(LDFLAGS) ++ ++b_gnatl.adb: $(GNATLINK_OBJS) ++ ../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatlink.ali ++ ++# gnatmake ++ ++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o ++ $(GXX) -o $@ $(ADA_CFLAGS) $^ \ ++ ../$(target_noncanonical)/libgnatprj/libgnatprj.a \ ++ ../$(target_noncanonical)/libgnatvsn/libgnatvsn.a \ ++ $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) $(CXX_LFLAGS) $(LDFLAGS) ++ ++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o ++ $(GXX) -o $@ $(ADA_CFLAGS) $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(CXX_LFLAGS) $(LDFLAGS) ++ ++b_gnatm.adb: $(GNATMAKE_OBJS) ++ ../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatmake.ali ++ ++# Other tools ++gnat: gnatcmd ++ cp -lp $< $@ ++ ++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \ ++gnatxref: link.o ++ if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi ++ ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ ++ --GCC="$(GCC)" \ ++ --GNATBIND=../gcc/gnatbind ++ ./gnatlink-static -o $@ $@.ali $^ \ ++ $(ADA_INCLUDES) $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(CXX_LFLAGS) $(LDFLAGS) \ ++ --GCC="$(GXX) $(ADA_INCLUDES)" + +-# 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= \ +@@ -184,20 +324,12 @@ $(GCC_DIR)/stamp-tools: + $(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 ++%.o: %.adb ++ $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) ++ ++%.o: %.ads ++ $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) ++ + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding |