Package: src:gcc-5 Version: 5.2.1-17 I rewrite gnat sjlj support with a new src/libada-sjlj directory added, instead of the huge patch to src/gcc/ada/gcc-interfaces/Makefile.in.
0001_libgnatvsn-prj.diff as we build libgnatsvn/libgnatprj in build/TRIPLET, so fix something left. 0002_ada-sjlj.diff Rewrite gnat sjlj support, with a new added directory. It still builds zcx in build/gcc/ada/rts (not rts-natvie), while builds sjlj in build/gcc/ada/rts-sjlj. Some dependency chains ins Makefile.def are also got some change. ada-acats-sjlj.diff is not needed any more, as with this method of build, the upstream test just works. 0003_prepare-ada-cross-support.diff This is some changes for cross gnat support. Make package priority extra when cross build instead of optional. gcc-5-cross asks for it? dependencies = { module=all-target-libgnatvsn; on=all-target-libstdc++-v3; }; in fact libgnatprj requires some header files of libstdc++, no idea whether libgnatprj does. since libgnatprj depends on libgnatvsn, so add libgnatvsn here. This is found when cross build for mipsel TOOLS_LIBS: change the order and add stdc++ here. on some architecture, the old order doesn't work. now idea why. this order just work for all architecture in the list of gcc-5-cross. Maybe you still wish to disable ada cross by default here. -- YunQiang Su
diff --git a/debian/patches/ada-acats.diff b/debian/patches/ada-acats.diff index d06acfd..d420867 100644 --- a/debian/patches/ada-acats.diff +++ b/debian/patches/ada-acats.diff @@ -124,7 +125,7 @@ Index: b/src/gcc/testsuite/lib/gnat.exp =================================================================== --- a/src/gcc/testsuite/lib/gnat.exp +++ b/src/gcc/testsuite/lib/gnat.exp -@@ -88,18 +88,24 @@ proc gnat_init { args } { +@@ -88,18 +88,25 @@ proc gnat_init { args } { global GNAT_UNDER_TEST global TOOL_EXECUTABLE global gnat_target_current @@ -141,10 +142,11 @@ Index: b/src/gcc/testsuite/lib/gnat.exp - set GNAT_UNDER_TEST "[local_find_gnatmake]" - } - } ++ set target [target_info name] + set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" + append ld_library_path ":$rootme/ada/rts" -+ append ld_library_path ":$rootme/../libgnatvsn" -+ append ld_library_path ":$rootme/../libgnatprj" ++ append ld_library_path ":$rootme/../$target/libgnatvsn" ++ append ld_library_path ":$rootme/../$target/libgnatprj" + set_ld_library_path_env_vars + + # gnatlink looks for system.ads itself and has no --RTS option, so @@ -156,7 +158,7 @@ Index: b/src/gcc/testsuite/lib/gnat.exp if ![info exists tmpdir] then { set tmpdir /tmp -@@ -121,31 +127,6 @@ proc gnat_target_compile { source dest t +@@ -121,31 +128,6 @@ proc gnat_target_compile { source dest t return [gcc_target_compile $source $dest $type $options] } diff --git a/debian/patches/ada-libgnatprj.diff b/debian/patches/ada-libgnatprj.diff index 46f6f02..ed31a0a 100644 --- a/debian/patches/ada-libgnatprj.diff +++ b/debian/patches/ada-libgnatprj.diff @@ -265,8 +265,8 @@ Index: b/src/configure.ac ENABLE_LIBADA=$enableval, ENABLE_LIBADA=yes) if test "${ENABLE_LIBADA}" != "yes" ; then -- noconfigdirs="$noconfigdirs libgnatvsn gnattools" -+ noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools" +- noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools" fi AC_ARG_ENABLE(libssp, diff --git a/debian/patches/ada-libgnatvsn.diff b/debian/patches/ada-libgnatvsn.diff index 0dc3d35..222b4ab 100644 --- a/debian/patches/ada-libgnatvsn.diff +++ b/debian/patches/ada-libgnatvsn.diff @@ -262,7 +262,7 @@ Index: b/src/configure.ac ENABLE_LIBADA=yes) if test "${ENABLE_LIBADA}" != "yes" ; then - noconfigdirs="$noconfigdirs gnattools" -+ noconfigdirs="$noconfigdirs libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" fi AC_ARG_ENABLE(libssp,
diff --git a/debian/patches/ada-acats-sjlj.diff b/debian/patches/ada-acats-sjlj.diff deleted file mode 100644 index 7dde89c..0000000 --- a/debian/patches/ada-acats-sjlj.diff +++ /dev/null @@ -1,44 +0,0 @@ -# DP: - When running the ACATS, look for the shared libraries in -# DP: build/gcc/ada/rts-shared-zcx instead of build/gcc/ada/rts. - ---- a/src/gcc/testsuite/lib/gnat.exp -+++ b/src/gcc/testsuite/lib/gnat.exp -@@ -94,18 +94,18 @@ - - if { $gnat_initialized == 1 } { return } - -- set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" -- append ld_library_path ":$rootme/ada/rts" -+ set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts-shared-zcx --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" -+ append ld_library_path ":$rootme/ada/rts-shared-zcx" - append ld_library_path ":$rootme/../libgnatvsn" - append ld_library_path ":$rootme/../libgnatprj" - set_ld_library_path_env_vars - - # gnatlink looks for system.ads itself and has no --RTS option, so - # specify via environment -- verbose -log "ADA_INCLUDE_PATH=$rootme/ada/rts" -- verbose -log "ADA_OBJECTS_PATH=$rootme/ada/rts" -- setenv ADA_INCLUDE_PATH "$rootme/ada/rts" -- setenv ADA_OBJECTS_PATH "$rootme/ada/rts" -+ verbose -log "ADA_INCLUDE_PATH=$rootme/ada/rts-shared-zcx" -+ verbose -log "ADA_OBJECTS_PATH=$rootme/ada/rts-shared-zcx" -+ setenv ADA_INCLUDE_PATH "$rootme/ada/rts-shared-zcx" -+ setenv ADA_OBJECTS_PATH "$rootme/ada/rts-shared-zcx" - - if ![info exists tmpdir] then { - set tmpdir /tmp ---- a/src/gcc/testsuite/ada/acats/run_all.sh -+++ b/src/gcc/testsuite/ada/acats/run_all.sh -@@ -12,8 +12,9 @@ - gccflags="-O2" - gnatflags="-gnatws" - --RTS=`cd $GNATTOOLS/../gcc/ada/rts; ${PWDCMD-pwd}` --LD_LIBRARY_PATH=$RTS:$LIBGNATVSN:$LIBGNATPRJ -+SHARED_RTS=`cd $GNATTOOLS/../gcc/ada/rts-shared-zcx; ${PWDCMD-pwd}` -+RTS=`cd $GNATTOOLS/../gcc/ada/rts-static-zcx; ${PWDCMD-pwd}` -+LD_LIBRARY_PATH=$SHARED_RTS:$LIBGNATVSN:$LIBGNATPRJ - export LD_LIBRARY_PATH - - target_run () { diff --git a/debian/patches/ada-sjlj.diff b/debian/patches/ada-sjlj.diff index dfb9ab7..679c2b4 100644 --- a/debian/patches/ada-sjlj.diff +++ b/debian/patches/ada-sjlj.diff @@ -1,715 +1,1033 @@ -# DP: There are two exception mechanisms to choose from: zero-cost and -# DP: setjump/longjump. The Ada run-time library uses either of them -# DP: but not both. Build both versions of the run-time library. - -# This patch changes the way the upstream Makefiles build the run-time -# library. Before the patch: libada/Makefile calls gcc/ada/Makefile, -# which builds the "rts" subdirectory containing symbolic links to -# most source files, and modified copies of a few source files (to -# take target dependencies into account, and also to select the -# exception handling mechanism in system.ads). Then, gcc/ada/Makefile -# calls itself recursively but in the "rts" subdirectory and builds -# libgnat.a and libgnarl.a (and a couple other libraries: -# libgccprefix.a, libgmem.a). Upon return from this recursive call, -# it deletes the source and object files from "rts", reconstructs the -# source files, and builds libgnat.so and libgnarl.so by calling -# itself recursively a second time in the "rts" directory. - -# Furthermore, gcc/ada/Makefile disables parallel makes, so building -# the static and then shared versions of the RTS is entirely -# sequential even on SMP systems. - -# As a consequence of the above, building the SJLJ version of the -# library would overwrite the ZCX version. Thus it is necessary to -# manually save the previous version of the library before building the -# second one. - -# After the patch: libada/Makefile calls gcc/ada/Makefile, which -# builds the source directory (named gnatlib-sources instead of rts), -# containing the symbolic links and target-dependent files. - -# In a second step, libada/Makefile calls gcc/ada/Makefile again to -# build the targets gnatlib-shared-zcx, gnatlib-static-zcx and -# gnatlib-static-sjlj (we could also build gnatlib-shared-sjlj, but -# that triggers compiler errors on PowerPC). - -# Each of these three targets copies the source directory "rts" into a -# new directory named rts-shared-zcx, rts-static-zcx or -# rts-static-sjlj. In the new directory, they change the value of -# System.ZCX_By_Default, and then they call gcc/ada/Makefile -# recursively in the new directory to build the library. - -# gcc/ada/Makefile.in has a .NOTPARALLEL directive preventing it from -# launching commands in parallel. However, libada/Makefile has no -# such directive and can invoke up to three instances of -# gcc/ada/Makefile.in in parallel. This is okay because each of them -# runs in a different directory. - -# This patch also updates libgnat{vsn,prj}/Makefile and -# gnattools/Makefile to look for the shared ZCX version of the library -# in the appropriate directory, rather than just "rts", and updates -# the "make install" and binary targets as well. - -Index: b/src/libada/Makefile.in +Index: b/src/libada-sjlj/Makefile.in =================================================================== ---- a/src/libada/Makefile.in -+++ b/src/libada/Makefile.in -@@ -16,7 +16,8 @@ - # <http://www.gnu.org/licenses/>. - - # Default target; must be first. --all: gnatlib -+GNATLIB = gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx -+all: $(GNATLIB) - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) - - .PHONY: all -@@ -97,26 +98,28 @@ - "CFLAGS=$(CFLAGS)" - - # Rules to build gnatlib. --.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool --gnatlib: @default_gnatlib_target@ -+.PHONY: $(GNATLIB) osconstool - --gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile -- test -f stamp-libada || \ -- $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ -- && touch stamp-libada -- -rm -rf adainclude -- -rm -rf adalib -- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude -- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib -- --gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile -- test -f stamp-libada || \ -- $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ -- && touch stamp-libada -- -rm -rf adainclude -- -rm -rf adalib -- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude -- $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib -+$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads: -+ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ -+ EH_MECHANISM="" \ -+ gnatlib-sources-sjlj/a-except.ads -+ -+$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads: -+ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ -+ EH_MECHANISM="-gcc" \ -+ gnatlib-sources-zcx/a-except.ads -+ -+$(GNATLIB): osconstool $(GCC_DIR)/ada/Makefile \ -+$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads \ -+$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads -+ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ -+ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -+ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ -+ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ -+ THREAD_KIND="$(THREAD_KIND)" \ -+ TRACE="$(TRACE)" \ -+ $@ +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,201 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2015 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# <http://www.gnu.org/licenses/>. ++ ++# Default target; must be first. ++all: gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++ ++.PHONY: all ++ ++## Multilib support variables. ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++ ++# Standard autoconf-set variables. ++SHELL = @SHELL@ ++srcdir = @srcdir@ ++libdir = @libdir@ ++build = @build@ ++target = @target@ ++prefix = @prefix@ ++ ++# Nonstandard autoconf-set variables. ++enable_shared = @enable_shared@ ++ ++LN_S=@LN_S@ ++AWK=@AWK@ ++ ++ifeq (cp -p,$(LN_S)) ++LN_S_RECURSIVE = cp -pR ++else ++LN_S_RECURSIVE = $(LN_S) ++endif ++ ++# Variables for the user (or the top level) to override. ++objext=.o ++THREAD_KIND=native ++TRACE=no ++LDFLAGS= ++ ++# The tedious process of getting CFLAGS right. ++CFLAGS=-g ++PICFLAG = @PICFLAG@ ++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc ++GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++version := $(shell cat $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) ++ ++# exeext should not be used because it's the *host* exeext. We're building ++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus ++# definitions just in case something slips through the safety net provided ++# by recursive make invocations in gcc/ada/Makefile.in ++LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++ "LDFLAGS=$(LDFLAGS)" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++ "THREAD_KIND=$(THREAD_KIND)" \ ++ "TRACE=$(TRACE)" \ ++ "MULTISUBDIR=$(MULTISUBDIR)" \ ++ "libsubdir=$(libsubdir)" \ ++ "objext=$(objext)" \ ++ "prefix=$(prefix)" \ ++ "exeext=.exeext.should.not.be.used " \ ++ 'CC=the.host.compiler.should.not.be.needed' \ ++ "GCC_FOR_TARGET=$(CC)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "RTSDIR=rts-sjlj" ++ ++# Rules to build gnatlib. ++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool ++gnatlib: gnatlib-sjlj ++ ++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ ++ && touch stamp-libada ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ ++ && touch stamp-libada-sjlj ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++osconstool: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons ++ ++install-gnatlib: $(GCC_DIR)/ada/Makefile ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ ++# Check uninstalled version. ++check: ++ ++# Check installed version. ++installcheck: ++ ++# Build info (none here). ++info: ++ ++# Build DVI (none here). ++dvi: ++ ++# Build PDF (none here). ++pdf: ++ ++# Build html (none here). ++html: ++ ++# Build TAGS (none here). ++TAGS: ++ ++.PHONY: check installcheck info dvi pdf html ++ ++# Installation rules. ++install: install-gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++ ++install-strip: install ++ ++install-info: ++ ++install-pdf: ++ ++install-html: ++ ++.PHONY: install install-strip install-info install-pdf install-html ++ ++# Cleaning rules. ++mostlyclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++ ++clean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++ ++distclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++ $(RM) Makefile config.status config.log ++ ++maintainer-clean: ++ ++.PHONY: mostlyclean clean distclean maintainer-clean ++ ++# Rules for rebuilding this Makefile. ++Makefile: $(srcdir)/Makefile.in config.status ++ CONFIG_FILES=$@ ; \ ++ CONFIG_HEADERS= ; \ ++ $(SHELL) ./config.status ++ ++config.status: $(srcdir)/configure ++ $(SHELL) ./config.status --recheck ++ ++AUTOCONF = autoconf ++configure_deps = \ ++ $(srcdir)/configure.ac \ ++ $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/override.m4 \ ++ $(srcdir)/../config/multi.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +Index: b/src/libada-sjlj/configure.ac +=================================================================== +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,140 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2015 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# <http://www.gnu.org/licenses/>. ++ ++sinclude(../config/acx.m4) ++sinclude(../config/multi.m4) ++sinclude(../config/override.m4) ++sinclude(../config/picflag.m4) ++sinclude(../config/unwind_ipinfo.m4) ++ ++AC_INIT ++AC_PREREQ([2.64]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Determine the host, build, and target systems ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++target_alias=${target_alias-$host_alias} ++ ++# Determine the noncanonical target name, for directory use. ++ACX_NONCANONICAL_TARGET ++ ++# Determine the target- and build-specific subdirectories ++GCC_TOPLEV_SUBDIRS ++ ++# Command-line options. ++# Very limited version of AC_MAINTAINER_MODE. ++AC_ARG_ENABLE([maintainer-mode], ++ [AC_HELP_STRING([--enable-maintainer-mode], ++ [enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer])], ++ [case ${enable_maintainer_mode} in ++ yes) MAINT='' ;; ++ no) MAINT='#' ;; ++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; ++ esac ++ maintainer_mode=${enableval}], ++ [MAINT='#']) ++AC_SUBST([MAINT])dnl ++ ++AM_ENABLE_MULTILIB(, ..) ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++#TODO: toolexeclibdir is currently disregarded ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AC_ARG_ENABLE([shared], ++[AC_HELP_STRING([--disable-shared], ++ [don't provide a shared libgnat])], ++[ ++case $enable_shared in ++ yes | no) ;; ++ *) ++ enable_shared=no ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," ++ for pkg in $enableval; do ++ case $pkg in ++ ada | libada) ++ enable_shared=yes ;; ++ esac ++ done ++ IFS="$ac_save_ifs" ++ ;; ++esac ++], [enable_shared=yes]) ++AC_SUBST([enable_shared]) ++ ++GCC_PICFLAG ++AC_SUBST([PICFLAG]) ++ ++# These must be passed down, or are needed by gcc/libgcc.mvars ++AC_PROG_AWK ++AC_PROG_LN_S ++ ++# Check for _Unwind_GetIPInfo ++GCC_CHECK_UNWIND_GETIPINFO ++have_getipinfo= ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++fi ++AC_SUBST(have_getipinfo) ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -177,6 +177,13 @@ target_modules = { module= libada; no_in + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libada-sjlj; no_install=true; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgnatvsn; no_check=true; + missing= info; + missing= dvi; +@@ -384,6 +391,7 @@ dependencies = { module=all-libcpp; on=a + dependencies = { module=all-fixincludes; on=all-libiberty; }; - osconstool: - $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons -Index: b/src/gcc/ada/gcc-interface/Makefile.in + dependencies = { module=all-target-libada; on=all-gcc; }; ++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libgnatvsn; }; + dependencies = { module=all-gnattools; on=all-target-libgnatprj; }; +Index: b/src/Makefile.in =================================================================== ---- a/src/gcc/ada/gcc-interface/Makefile.in -+++ b/src/gcc/ada/gcc-interface/Makefile.in -@@ -2459,84 +2459,107 @@ - $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \ - $(ADA_EXCLUDE_SRCS)) +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -964,6 +964,7 @@ configure-target: \ + maybe-configure-target-boehm-gc \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ ++ maybe-configure-target-libada-sjlj \ + maybe-configure-target-libgnatvsn \ + maybe-configure-target-libgnatprj \ + maybe-configure-target-libgomp \ +@@ -1132,6 +1133,7 @@ all-target: maybe-all-target-zlib + all-target: maybe-all-target-boehm-gc + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada ++all-target: maybe-all-target-libada-sjlj + all-target: maybe-all-target-libgnatvsn + all-target: maybe-all-target-libgnatprj + @if target-libgomp-no-bootstrap +@@ -1229,6 +1231,7 @@ info-target: maybe-info-target-zlib + info-target: maybe-info-target-boehm-gc + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada ++info-target: maybe-info-target-libada-sjlj + info-target: maybe-info-target-libgnatvsn + info-target: maybe-info-target-libgnatprj + info-target: maybe-info-target-libgomp +@@ -1319,6 +1322,7 @@ dvi-target: maybe-dvi-target-zlib + dvi-target: maybe-dvi-target-boehm-gc + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada ++dvi-target: maybe-dvi-target-libada-sjlj + dvi-target: maybe-dvi-target-libgnatvsn + dvi-target: maybe-dvi-target-libgnatprj + dvi-target: maybe-dvi-target-libgomp +@@ -1409,6 +1413,7 @@ pdf-target: maybe-pdf-target-zlib + pdf-target: maybe-pdf-target-boehm-gc + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada ++pdf-target: maybe-pdf-target-libada-sjlj + pdf-target: maybe-pdf-target-libgnatvsn + pdf-target: maybe-pdf-target-libgnatprj + pdf-target: maybe-pdf-target-libgomp +@@ -1499,6 +1504,7 @@ html-target: maybe-html-target-zlib + html-target: maybe-html-target-boehm-gc + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada ++html-target: maybe-html-target-libada-sjlj + html-target: maybe-html-target-libgnatvsn + html-target: maybe-html-target-libgnatprj + html-target: maybe-html-target-libgomp +@@ -1589,6 +1595,7 @@ TAGS-target: maybe-TAGS-target-zlib + TAGS-target: maybe-TAGS-target-boehm-gc + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada ++TAGS-target: maybe-TAGS-target-libada-sjlj + TAGS-target: maybe-TAGS-target-libgnatvsn + TAGS-target: maybe-TAGS-target-libgnatprj + TAGS-target: maybe-TAGS-target-libgomp +@@ -1679,6 +1686,7 @@ install-info-target: maybe-install-info- + install-info-target: maybe-install-info-target-boehm-gc + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada ++install-info-target: maybe-install-info-target-libada-sjlj + install-info-target: maybe-install-info-target-libgnatvsn + install-info-target: maybe-install-info-target-libgnatprj + install-info-target: maybe-install-info-target-libgomp +@@ -1769,6 +1777,7 @@ install-pdf-target: maybe-install-pdf-ta + install-pdf-target: maybe-install-pdf-target-boehm-gc + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada ++install-pdf-target: maybe-install-pdf-target-libada-sjlj + install-pdf-target: maybe-install-pdf-target-libgnatvsn + install-pdf-target: maybe-install-pdf-target-libgnatprj + install-pdf-target: maybe-install-pdf-target-libgomp +@@ -1859,6 +1868,7 @@ install-html-target: maybe-install-html- + install-html-target: maybe-install-html-target-boehm-gc + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada ++install-html-target: maybe-install-html-target-libada-sjlj + install-html-target: maybe-install-html-target-libgnatvsn + install-html-target: maybe-install-html-target-libgnatprj + install-html-target: maybe-install-html-target-libgomp +@@ -1949,6 +1959,7 @@ installcheck-target: maybe-installcheck- + installcheck-target: maybe-installcheck-target-boehm-gc + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada ++installcheck-target: maybe-installcheck-target-libada-sjlj + installcheck-target: maybe-installcheck-target-libgnatvsn + installcheck-target: maybe-installcheck-target-libgnatprj + installcheck-target: maybe-installcheck-target-libgomp +@@ -2039,6 +2050,7 @@ mostlyclean-target: maybe-mostlyclean-ta + mostlyclean-target: maybe-mostlyclean-target-boehm-gc + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada ++mostlyclean-target: maybe-mostlyclean-target-libada-sjlj + mostlyclean-target: maybe-mostlyclean-target-libgnatvsn + mostlyclean-target: maybe-mostlyclean-target-libgnatprj + mostlyclean-target: maybe-mostlyclean-target-libgomp +@@ -2129,6 +2141,7 @@ clean-target: maybe-clean-target-zlib + clean-target: maybe-clean-target-boehm-gc + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada ++clean-target: maybe-clean-target-libada-sjlj + clean-target: maybe-clean-target-libgnatvsn + clean-target: maybe-clean-target-libgnatprj + clean-target: maybe-clean-target-libgomp +@@ -2219,6 +2232,7 @@ distclean-target: maybe-distclean-target + distclean-target: maybe-distclean-target-boehm-gc + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada ++distclean-target: maybe-distclean-target-libada-sjlj + distclean-target: maybe-distclean-target-libgnatvsn + distclean-target: maybe-distclean-target-libgnatprj + distclean-target: maybe-distclean-target-libgomp +@@ -2309,6 +2323,7 @@ maintainer-clean-target: maybe-maintaine + maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada ++maintainer-clean-target: maybe-maintainer-clean-target-libada-sjlj + maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn + maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj + maintainer-clean-target: maybe-maintainer-clean-target-libgomp +@@ -2454,6 +2469,7 @@ check-target: \ + maybe-check-target-boehm-gc \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libada-sjlj \ + maybe-check-target-libgnatvsn \ + maybe-check-target-libgnatprj \ + maybe-check-target-libgomp \ +@@ -2631,6 +2647,7 @@ install-target: \ + maybe-install-target-boehm-gc \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libada-sjlj \ + maybe-install-target-libgnatvsn \ + maybe-install-target-libgnatprj \ + maybe-install-target-libgomp \ +@@ -2741,6 +2758,7 @@ install-strip-target: \ + maybe-install-strip-target-boehm-gc \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ ++ maybe-install-strip-target-libada-sjlj \ + maybe-install-strip-target-libgnatvsn \ + maybe-install-strip-target-libgnatprj \ + maybe-install-strip-target-libgomp \ +@@ -45650,6 +45668,352 @@ maintainer-clean-target-libada: --../stamp-gnatlib-$(RTSDIR): -- @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \ -- then \ -- $(ECHO) You must first build the GNAT library: make gnatlib; \ -- false; \ -- else \ -- true; \ -- fi -+libgnat = libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) --install-gnatlib: ../stamp-gnatlib-$(RTSDIR) -+install-gnatlib: $(GNATLIB_SHARED) - # Create the directory before deleting it, in case the directory is - # a list of directories (as it may be on VMS). This ensures we are - # deleting the right one. -- -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) -- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) -- $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) -- $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) -- -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) -- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) -- for file in $(RTSDIR)/*.ali; do \ -- $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ -+ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) -+ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) -+ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) -+ -+ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) -+ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) -+ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) -+ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) -+ -+ for file in rts-shared-zcx/*.ali; do \ -+ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ -+ done -+ for file in rts-static-sjlj/*.ali; do \ -+ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ -+ done + ++.PHONY: configure-target-libada-sjlj maybe-configure-target-libada-sjlj ++maybe-configure-target-libada-sjlj: ++@if gcc-bootstrap ++configure-target-libada-sjlj: stage_current ++@endif gcc-bootstrap ++@if target-libada-sjlj ++maybe-configure-target-libada-sjlj: configure-target-libada-sjlj ++configure-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libada-sjlj..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libada-sjlj/Makefile; \ ++ mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libada-sjlj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libada-sjlj; \ ++ cd "$(TARGET_SUBDIR)/libada-sjlj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libada-sjlj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libada-sjlj; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) \ ++ $$s/$$module_srcdir/configure \ ++ --srcdir=$${topdir}/$$module_srcdir \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} \ ++ || exit 1 ++@endif target-libada-sjlj + -+ -cd rts-static-zcx; for file in *$(arext);do \ -+ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ -+ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)/$$file; \ - done -- -cd $(RTSDIR); for file in *$(arext);do \ -- $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ -- $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ -+ -cd rts-static-sjlj; for file in *$(arext);do \ -+ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ -+ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)/$$file; \ - done -+ -+ -$(foreach file, $(EXTRA_ADALIB_FILES), \ -+ $(INSTALL_DATA_DATE) rts-static-zcx/$(file) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) && \ -+ ) true - -$(foreach file, $(EXTRA_ADALIB_FILES), \ -- $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \ -+ $(INSTALL_DATA_DATE) rts-static-sjlj/$(file) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) && \ - ) true - # Install the shared libraries, if any, using $(INSTALL) instead - # of $(INSTALL_DATA). The latter may force a mode inappropriate - # for shared libraries on some targets, e.g. on HP-UX where the x - # permission is required. --# 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).1 ]; then \ -- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -- $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ -- 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); \ -+ if [ -f rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ -+ $(INSTALL) rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -+ $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ - fi; \ - done - # This copy must be done preserving the date on the original file. -- for file in $(RTSDIR)/*.ad?; do \ -- $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \ -+ for file in rts-shared-zcx/*.adb rts-shared-zcx/*.ads; do \ -+ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR); \ - done -- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb -- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads -+ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.adb -+ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.ads -+ for file in rts-static-sjlj/*.adb rts-static-sjlj/*.ads; do \ -+ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR); \ -+ done -+ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.adb -+ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.ads + -+ (cd $(DESTDIR)$(libsubdir); \ -+ ln -s rts-native/adainclude adainclude; \ -+ ln -s rts-native/adalib adalib;) + -+replace_zcx_by_default=\ -+'s/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := $(zcx_by_default);/' + -+gnatlib-sources-zcx/a-except.ads: dir=$(dir $@) -+gnatlib-sources-zcx/a-except.ads: zcx_by_default=True + -+gnatlib-sources-sjlj/a-except.ads: dir=$(dir $@) -+gnatlib-sources-sjlj/a-except.ads: zcx_by_default=False - --../stamp-gnatlib1-$(RTSDIR): Makefile -- $(RMDIR) $(RTSDIR) -- $(MKDIR) $(RTSDIR) -- $(CHMOD) u+w $(RTSDIR) -+gnatlib-sources-zcx/a-except.ads gnatlib-sources-sjlj/a-except.ads: -+ $(MKDIR) $(dir) -+ $(CHMOD) u+w $(dir) - # Copy target independent sources - $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \ -- $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true -+ $(LN_S) $(fsrcpfx)ada/$(f) $(dir) ;) true - # Remove files not used -- $(RM) $(patsubst %,$(RTSDIR)/%,$(ADA_EXCLUDE_FILES)) -+ $(RM) $(patsubst %,$(dir)/%,$(ADA_EXCLUDE_FILES)) - # Remove files to be replaced by target dependent sources - $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ -- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)))) -- for f in $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb; do \ -+ $(dir)/$(word 1,$(subst <, ,$(PAIR)))) -+ for f in $(dir)/*-*-*.ads $(dir)/*-*-*.adb; do \ - case "$$f" in \ -- $(RTSDIR)/s-stratt-*) ;; \ -+ $(dir)/s-stratt-*) ;; \ - *) $(RM) $$f ;; \ - esac; \ - done - # Copy new target dependent sources - $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ - $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ -- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));) -+ $(dir)/$(word 1,$(subst <, ,$(PAIR)));) -+ sed -e $(replace_zcx_by_default) $(dir)/system.ads > $(dir)/s.ads - # Copy tsystem.h -- $(CP) $(srcdir)/tsystem.h $(RTSDIR) -- $(RM) ../stamp-gnatlib-$(RTSDIR) -- touch ../stamp-gnatlib1-$(RTSDIR) -+ $(CP) $(srcdir)/tsystem.h $(dir) ++.PHONY: all-target-libada-sjlj maybe-all-target-libada-sjlj ++maybe-all-target-libada-sjlj: ++@if gcc-bootstrap ++all-target-libada-sjlj: stage_current ++@endif gcc-bootstrap ++@if target-libada-sjlj ++TARGET-target-libada-sjlj=all ++maybe-all-target-libada-sjlj: all-target-libada-sjlj ++all-target-libada-sjlj: configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libada-sjlj)) ++@endif target-libada-sjlj ++ ++ ++ ++ ++ ++.PHONY: check-target-libada-sjlj maybe-check-target-libada-sjlj ++maybe-check-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-check-target-libada-sjlj: check-target-libada-sjlj ++ ++# Dummy target for uncheckable module. ++check-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: install-target-libada-sjlj maybe-install-target-libada-sjlj ++maybe-install-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-target-libada-sjlj: install-target-libada-sjlj ++ ++# Dummy target for uninstallable. ++install-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: install-strip-target-libada-sjlj maybe-install-strip-target-libada-sjlj ++maybe-install-strip-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-strip-target-libada-sjlj: install-strip-target-libada-sjlj ++ ++# Dummy target for uninstallable. ++install-strip-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libada-sjlj info-target-libada-sjlj ++maybe-info-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-info-target-libada-sjlj: info-target-libada-sjlj ++ ++# libada-sjlj doesn't support info. ++info-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-dvi-target-libada-sjlj dvi-target-libada-sjlj ++maybe-dvi-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-dvi-target-libada-sjlj: dvi-target-libada-sjlj ++ ++# libada-sjlj doesn't support dvi. ++dvi-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-pdf-target-libada-sjlj pdf-target-libada-sjlj ++maybe-pdf-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-pdf-target-libada-sjlj: pdf-target-libada-sjlj ++ ++pdf-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-html-target-libada-sjlj html-target-libada-sjlj ++maybe-html-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-html-target-libada-sjlj: html-target-libada-sjlj ++ ++# libada-sjlj doesn't support html. ++html-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-TAGS-target-libada-sjlj TAGS-target-libada-sjlj ++maybe-TAGS-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-TAGS-target-libada-sjlj: TAGS-target-libada-sjlj ++ ++# libada-sjlj doesn't support TAGS. ++TAGS-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-install-info-target-libada-sjlj install-info-target-libada-sjlj ++maybe-install-info-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-info-target-libada-sjlj: install-info-target-libada-sjlj ++ ++# libada-sjlj doesn't support install-info. ++install-info-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-install-pdf-target-libada-sjlj install-pdf-target-libada-sjlj ++maybe-install-pdf-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-pdf-target-libada-sjlj: install-pdf-target-libada-sjlj ++ ++install-pdf-target-libada-sjlj: \ ++ configure-target-libada-sjlj \ ++ pdf-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-install-html-target-libada-sjlj install-html-target-libada-sjlj ++maybe-install-html-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-html-target-libada-sjlj: install-html-target-libada-sjlj ++ ++install-html-target-libada-sjlj: \ ++ configure-target-libada-sjlj \ ++ html-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-installcheck-target-libada-sjlj installcheck-target-libada-sjlj ++maybe-installcheck-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-installcheck-target-libada-sjlj: installcheck-target-libada-sjlj ++ ++# libada-sjlj doesn't support installcheck. ++installcheck-target-libada-sjlj: ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-mostlyclean-target-libada-sjlj mostlyclean-target-libada-sjlj ++maybe-mostlyclean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-mostlyclean-target-libada-sjlj: mostlyclean-target-libada-sjlj ++ ++mostlyclean-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-clean-target-libada-sjlj clean-target-libada-sjlj ++maybe-clean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-clean-target-libada-sjlj: clean-target-libada-sjlj ++ ++clean-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-distclean-target-libada-sjlj distclean-target-libada-sjlj ++maybe-distclean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-distclean-target-libada-sjlj: distclean-target-libada-sjlj ++ ++distclean-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++.PHONY: maybe-maintainer-clean-target-libada-sjlj maintainer-clean-target-libada-sjlj ++maybe-maintainer-clean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-maintainer-clean-target-libada-sjlj: maintainer-clean-target-libada-sjlj ++ ++maintainer-clean-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libada-sjlj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libada-sjlj ++ ++ ++ ++ ++ + .PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn + maybe-configure-target-libgnatvsn: + @if gcc-bootstrap +@@ -50496,6 +50860,7 @@ configure-target-zlib: stage_last + configure-target-boehm-gc: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libada-sjlj: stage_last + configure-target-libgnatvsn: stage_last + configure-target-libgnatprj: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc +@@ -50533,6 +50898,7 @@ configure-target-zlib: maybe-all-gcc + configure-target-boehm-gc: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libada-sjlj: maybe-all-gcc + configure-target-libgnatvsn: maybe-all-gcc + configure-target-libgnatprj: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc +@@ -50875,6 +51241,7 @@ all-stage4-fixincludes: maybe-all-stage4 + all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty + all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty + all-target-libada: maybe-all-gcc ++all-target-libada-sjlj: maybe-all-target-libada + all-gnattools: maybe-all-target-libada + all-gnattools: maybe-all-target-libgnatvsn + all-gnattools: maybe-all-target-libgnatprj +@@ -51452,6 +51819,7 @@ configure-target-zlib: maybe-all-target- + configure-target-boehm-gc: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc ++configure-target-libada-sjlj: maybe-all-target-libgcc + configure-target-libgnatvsn: maybe-all-target-libgcc + configure-target-libgnatprj: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc +@@ -51507,6 +51875,8 @@ configure-target-rda: maybe-all-target-n - ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%, $(host_cpu) $(host_os))),) - OSCONS_CPP=../../$(DECC) -E /comment=as_is -DNATIVE \ -@@ -2563,9 +2586,11 @@ - $(CP) $^ ./bldtools/oscons - (cd ./bldtools/oscons ; gnatmake -q xoscons) + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss --$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons -- $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s -- (cd $(RTSDIR) ; \ -+.PRECIOUS: %/s-oscons.ads -+%/s-oscons.ads: dir = $(dir $@) -+%/s-oscons.ads: s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons -+ $(RM) $(dir)/s-oscons-tmplt.i $(dir)/s-oscons-tmplt.s -+ (cd $(dir) ; \ - $(OSCONS_CPP) ; \ - $(OSCONS_EXTRACT) ; \ - ../bldtools/oscons/xoscons s-oscons) -@@ -2576,9 +2601,12 @@ - # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS) - # is guaranteed to overflow the buffer. ++configure-target-libada-sjlj: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss --gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads -+%/libgnat$(arext): build_dir = $(dir $@) -+%/libgnat$(arext): libgnarl = $(subst libgnat,libgnarl,$@) -+%/libgnat$(arext): libgnala = $(subst libgnat,libgnala,$@) -+%/libgnat$(arext): % %/s-oscons.ads - # C files -- $(MAKE) -C $(RTSDIR) \ -+ $(MAKE) -C $(build_dir) \ - CC="`echo \"$(GCC_FOR_TARGET)\" \ - | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ - INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ -@@ -2587,7 +2615,7 @@ - srcdir=$(fsrcdir) \ - -f ../Makefile $(LIBGNAT_OBJS) - # Ada files -- $(MAKE) -C $(RTSDIR) \ -+ $(MAKE) -C $(build_dir) \ - CC="`echo \"$(GCC_FOR_TARGET)\" \ - | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ - ADA_INCLUDES="" \ -@@ -2596,24 +2624,24 @@ - FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ - srcdir=$(fsrcdir) \ - -f ../Makefile $(GNATRTL_OBJS) -- $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext) -- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \ -- $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) -- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext) -- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \ -- $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) -- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext) -+ $(RM) $@ $(libgnarl) -+ $(AR_FOR_TARGET) $(AR_FLAGS) $@ \ -+ $(addprefix $(build_dir),$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o) -+ $(RANLIB_FOR_TARGET) $@ -+ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnarl) \ -+ $(addprefix $(build_dir),$(GNATRTL_TASKING_OBJS)) -+ $(RANLIB_FOR_TARGET) $(libgnarl) - ifeq ($(GMEM_LIB),gmemlib) -- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \ -- $(RTSDIR)/memtrack.o -- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) -+ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgmem$(arext) \ -+ $(build_dir)memtrack.o -+ $(RANLIB_FOR_TARGET) $(build_dir)libgmem$(arext) - endif -- $(CHMOD) a-wx $(RTSDIR)/*.ali -- touch ../stamp-gnatlib-$(RTSDIR) + configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -175,6 +175,7 @@ target_libraries="target-libgcc \ + ${libgcj} \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ + target-libgnatprj \ +@@ -447,7 +448,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools target-libada-sjlj" + fi - # Warning: this target assumes that LIBRARY_VERSION has been set correctly. --gnatlib-shared-default: -- $(MAKE) -C $(RTSDIR) \ -+%/$(libgnat): build_dir = $(dir $@) -+%/$(libgnat): libgnarl = $(notdir $(subst libgnat,libgnarl,$@)) -+%/$(libgnat): % %/s-oscons.ads -+ $(MAKE) -C $(build_dir) \ - CC="`echo \"$(GCC_FOR_TARGET)\" \ - | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ - INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ -@@ -2621,7 +2649,7 @@ - FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ - srcdir=$(fsrcdir) \ - -f ../Makefile $(LIBGNAT_OBJS) -- $(MAKE) -C $(RTSDIR) \ -+ $(MAKE) -C $(build_dir) \ - CC="`echo \"$(GCC_FOR_TARGET)\" \ - | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ - ADA_INCLUDES="" \ -@@ -2631,176 +2659,46 @@ - 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) \ -+ $(RM) $(build_dir)/libgna*$(soext) $(build_dir)/libgna*$(soext).1 -+ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ - $(PICFLAG_FOR_TARGET) \ -- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -+ -o $(notdir $@).1 \ - $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ -- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -+ $(SO_OPTS)$(notdir $@).1 \ - $(MISCLIB) -lm -- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ -- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ -+ cd $(build_dir); $(LN_S) $(notdir $@).1 $(notdir $@) -+ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ - $(PICFLAG_FOR_TARGET) \ -- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -+ -o $(libgnarl).1 \ - $(GNATRTL_TASKING_OBJS) \ -- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ -+ $(SO_OPTS)$(libgnarl).1 \ - $(THREADSLIB) -- cd $(RTSDIR); for lib in gnat gnarl; do \ -- l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ -- $(LN_S) $$l.1 $$l; \ -- done --# Delete the object files, lest they be linked statically into the tools --# executables. Only the .ali, .a and .so files must remain. -- rm -f $(RTSDIR)/*.o -- $(CHMOD) a-wx $(RTSDIR)/*.ali -+ cd $(build_dir); $(LN_S) $(libgnarl).1 $(libgnarl) + AC_ARG_ENABLE(libssp, +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 +@@ -208,7 +208,7 @@ TOOLSCASE = --gnatlib-shared-dual: -- $(MAKE) $(FLAGS_TO_PASS) \ -- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ -- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ -- MULTISUBDIR="$(MULTISUBDIR)" \ -- THREAD_KIND="$(THREAD_KIND)" \ -- 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-shared-default -+gnatlib-shared-dual: gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx + # Multilib handling + MULTISUBDIR = +-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) ++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) --gnatlib-shared-dual-win32: -- $(MAKE) $(FLAGS_TO_PASS) \ -- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ -- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ -- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ -- MULTISUBDIR="$(MULTISUBDIR)" \ -- THREAD_KIND="$(THREAD_KIND)" \ -- 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-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 --# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on --# Windows. --gnatlib-shared-win32: -- $(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) -- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ -- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ -- $(PICFLAG_FOR_TARGET) \ -- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ -- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) -- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ -- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \ -- $(PICFLAG_FOR_TARGET) \ -- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(GNATRTL_TASKING_OBJS) \ -- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) -- --gnatlib-shared-darwin: -- $(MAKE) $(FLAGS_TO_PASS) \ -- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ -- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-common" \ -- MULTISUBDIR="$(MULTISUBDIR)" \ -- THREAD_KIND="$(THREAD_KIND)" \ -- gnatlib -- $(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext) -- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ -- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \ -- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ -- $(SO_OPTS) \ -- -Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(MISCLIB) -- cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ -- | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \ -- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(GNATRTL_TASKING_OBJS) \ -- $(SO_OPTS) \ -- -Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) -- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- libgnat$(soext) -- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- libgnarl$(soext) -- cd $(RTSDIR); dsymutil libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) -- cd $(RTSDIR); dsymutil libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) -- --gnatlib-shared-vms: -- $(MAKE) $(FLAGS_TO_PASS) \ -- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ -- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ -- MULTISUBDIR="$(MULTISUBDIR)" \ -- THREAD_KIND="$(THREAD_KIND)" \ -- gnatlib -- $(RM) $(RTSDIR)/libgna*$(soext) -- cd $(RTSDIR) && \ -- ../../gnatsym -s SYMVEC_$$$$.opt \ -- $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \ -- ../../xgcc -g -B../../ -shared -shared-libgcc \ -- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \ -- sys\$$library:trace.exe \ -- --for-linker=/noinform \ -- --for-linker=SYMVEC_$$$$.opt \ -- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) -- cd $(RTSDIR) && \ -- ../../gnatsym -s SYMVEC_$$$$.opt \ -- $(GNATRTL_TASKING_OBJS) && \ -- ../../xgcc -g -B../../ -shared -shared-libgcc \ -- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ -- sys\$$library:trace.exe \ -- --for-linker=/noinform \ -- --for-linker=SYMVEC_$$$$.opt \ -- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) -- --gnatlib-shared: -+gnatlib-shared-zcx: rts = $(subst gnatlib,rts,$@) -+gnatlib-shared-zcx: gnatlib-sources-zcx/a-except.ads -+ if [ ! -d $(rts) ] ; then \ -+ cp -a gnatlib-sources-zcx $(rts); \ -+ $(MV) $(rts)/s.ads $(rts)/system.ads; \ -+ fi - $(MAKE) $(FLAGS_TO_PASS) \ -+ EH_MECHANISM="-gcc" \ - GNATLIBFLAGS="$(GNATLIBFLAGS)" \ - GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ - GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ - MULTISUBDIR="$(MULTISUBDIR)" \ - THREAD_KIND="$(THREAD_KIND)" \ - PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ -- $(GNATLIB_SHARED) -+ $(rts)/$(libgnat) + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky +@@ -2567,6 +2567,27 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads --# When building a SJLJ runtime for VxWorks, in addition to forcing --# ZCX_By_default to False, we need to ensure that extra linker options --# are not passed to prevent the inclusion of useless objects and --# potential troubles from the presence of extra symbols and references --# in some configurations. The inhibition is performed by commenting --# the pragma instead of deleting the line, as the latter might result --# in getting multiple blank lines, hence a style check error, as a --# result. --gnatlib-sjlj: ++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR) ++# Create the directory before deleting it, in case the directory is ++# a list of directories (as it may be on VMS). This ensures we are ++# deleting the right one. ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ for file in $(RTSDIR)/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \ ++ done ++ # This copy must be done preserving the date on the original file. ++ for file in $(RTSDIR)/*.ad?; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \ ++ done ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads ++ ++ + ../stamp-gnatlib1-$(RTSDIR): Makefile + $(RMDIR) $(RTSDIR) + $(MKDIR) $(RTSDIR) +@@ -2820,13 +2841,14 @@ gnatlib-shared: + # in getting multiple blank lines, hence a style check error, as a + # result. + gnatlib-sjlj: - $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \ -- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) -- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads -- sed -e 's/\(pragma Linker.*crtbe.*\)/-- \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads -- $(RM) $(RTSDIR)/s.ads -- $(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads -+gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@) -+gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads -+ if [ ! -d $(rts) ] ; then \ -+ cp -a gnatlib-sources-sjlj $(rts); \ -+ $(MV) $(rts)/s.ads $(rts)/system.ads; \ -+ fi ++ $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" RTSDIR="$(RTSDIR)" \ + THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) + sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads + sed -e 's/\(pragma Linker.*crtbe.*\)/-- \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads + $(RM) $(RTSDIR)/s.ads + $(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads $(MAKE) $(FLAGS_TO_PASS) \ ++ RTSDIR="$(RTSDIR)" \ EH_MECHANISM="" \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -@@ -2809,13 +2707,15 @@ - FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ - MULTISUBDIR="$(MULTISUBDIR)" \ - THREAD_KIND="$(THREAD_KIND)" \ -- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib -+ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ -+ $(rts)/libgnat.a - --gnatlib-zcx: -- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \ -- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) -- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads -- $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads -+gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@) -+gnatlib-static-zcx: gnatlib-sources-zcx/a-except.ads -+ if [ ! -d $(rts) ] ; then \ -+ cp -a gnatlib-sources-zcx $(rts); \ -+ $(MV) $(rts)/s.ads $(rts)/system.ads; \ -+ fi - $(MAKE) $(FLAGS_TO_PASS) \ - EH_MECHANISM="-gcc" \ - GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -@@ -2824,10 +2724,15 @@ - FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ - MULTISUBDIR="$(MULTISUBDIR)" \ - THREAD_KIND="$(THREAD_KIND)" \ -- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib -+ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ -+ $(rts)/libgnat$(arext) + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -2875,6 +2897,8 @@ b_gnatm.o : b_gnatm.adb ADA_INCLUDE_DIR = $(libsubdir)/adainclude ADA_RTL_OBJ_DIR = $(libsubdir)/adalib -+ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude -+ADA_NATIVE_RTL_OBJ_DIR = $(libsubdir)/rts-native/adalib -+ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude -+ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib # Special flags -Index: b/src/gnattools/Makefile.in +Index: b/src/gcc/ada/gcc-interface/config-lang.in =================================================================== ---- a/src/gnattools/Makefile.in -+++ b/src/gnattools/Makefile.in -@@ -44,15 +44,16 @@ - -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ - -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs - -+RTS=../gcc/ada/rts-shared-zcx - CFLAGS=-O2 -Wall - ADA_CFLAGS=-O2 -gnatn --ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj -+ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj - LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ - ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) --SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -+SHARED_ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) - SHARED_ADA_LIBS += -L../libgnatvsn -lgnatvsn - SHARED_ADA_LIBS += -L../libgnatprj -lgnatprj --STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a -+STATIC_ADA_LIBS := ../gcc/ada/rts-static-zcx/libgnat.a - STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ - ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a - -@@ -126,6 +127,7 @@ +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad - .PHONY: gnattools gnattools-native gnattools-cross regnattools - gnattools: @default_gnattools_target@ -+ (cd $(RTS); if [ -d obj ]; then mv obj/* .; rmdir obj; fi) + outputs="ada/gcc-interface/Makefile ada/Makefile" - BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) - SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) -@@ -141,9 +143,12 @@ - rm -f $(word 1,$(subst <, ,$(PAIR)));\ - $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ - $(word 1,$(subst <, ,$(PAIR)));) -+# Move the RTS object files away lest they be linked statically into the -+# tools. Only the .ali, .a and .so files must remain. -+ (cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali) - touch $@ +-target_libs="target-libada target-libgnatvsn target-libgnatprj" +-lang_dirs="libada libgnatvsn libgnatprj gnattools" ++target_libs="target-libada target-libgnatvsn target-libgnatprj target-libada-sjlj" ++lang_dirs="libada libgnatvsn libgnatprj gnattools libada-sjlj" --gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so -+gnattools-native: $(RTS)/libgnat-$(LIB_VERSION).so - gnattools-native: ../libgnatvsn/libgnatvsn.so - gnattools-native: stamp-gnattools-sources - gnattools-native: $(TOOLS) -@@ -159,7 +164,7 @@ - $(GCC) -o $@ $^ \ - ../libgnatprj/libgnatprj.a \ - ../libgnatvsn/libgnatvsn.a \ -- ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) -+ $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) - - gnatlink: $(GNATLINK_OBJS) b_gnatl.o - $(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) -Index: b/src/libgnatprj/Makefile.in -=================================================================== ---- a/src/libgnatprj/Makefile.in -+++ b/src/libgnatprj/Makefile.in -@@ -26,7 +26,8 @@ - sed -e 's/.*"\(.*\)".*/\1/')) - GCC=$(CC) - GPP=$(CXX) --LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts -+RTS:=../gcc/ada/rts-shared-zcx -+LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) - LIBGNATVSN := -I../libgnatvsn - CFLAGS := -g -O2 - ADAFLAGS := -g -O2 -gnatn -@@ -76,7 +77,7 @@ - : # Make libgnatprj.so - $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ -Wl,--no-allow-shlib-undefined \ - $^ $(addprefix ../libiberty/pic/,$(LIBIBERTY_OBJECTS)) \ -- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ -+ -L$(RTS) -lgnat-$(LIB_VERSION) \ - -L../libgnatvsn -lgnatvsn - $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so - chmod a=r obj-shared/*.ali -Index: b/src/libgnatvsn/Makefile.in -=================================================================== ---- a/src/libgnatvsn/Makefile.in -+++ b/src/libgnatvsn/Makefile.in -@@ -25,7 +25,8 @@ - @srcdir@/../gcc/ada/gnatvsn.ads | \ - sed -e 's/.*"\(.*\)".*/\1/')) - GCC:=../gcc/xgcc -B../gcc/ --LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts -+RTS:=../gcc/ada/rts-shared-zcx -+LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) - CFLAGS := -g -O2 -gnatn - BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) - DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) -@@ -66,7 +67,7 @@ - libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) - : # Make libgnatvsn.so - $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ -- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -+ -L$(RTS) -lgnat-$(LIB_VERSION) - ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so - chmod a=r obj-shared/*.ali - # Make the .ali files, but not the .o files, visible to the gnat tools. + # Ada is not enabled by default for the time being. + build_by_default=no Index: b/src/gcc/ada/gcc-interface/Make-lang.in =================================================================== --- a/src/gcc/ada/gcc-interface/Make-lang.in +++ b/src/gcc/ada/gcc-interface/Make-lang.in -@@ -85,7 +85,8 @@ - "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ -- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" -+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ -+ "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" +@@ -783,6 +783,7 @@ ada.install-common: + + install-gnatlib: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) - # Say how to compile Ada programs. - .SUFFIXES: .ada .adb .ads + install-gnatlib-obj: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj diff --git a/debian/rules.d/binary-ada.mk b/debian/rules.d/binary-ada.mk index 08d1d58..05967c4 100644 --- a/debian/rules.d/binary-ada.mk +++ b/debian/rules.d/binary-ada.mk @@ -48,7 +48,7 @@ GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatlink \ gnatls gnatmake gnatname gnatprep gnatxref gnathtml ifeq ($(with_gnatsjlj),yes) - rts_subdir = rts-native/ + rts_subdir = endif dirs_gnat = \ @@ -63,12 +63,6 @@ files_gnat = \ $(gcc_lib_dir)/{adalib,adainclude} \ $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) -ifeq ($(with_gnatsjlj),yes) -files_gnat += \ - $(gcc_lib_dir)/$(rts_subdir) -endif -# rts-sjlj moved to a separate package - dirs_lgnat = \ $(docdir) \ $(PF)/lib @@ -295,15 +289,7 @@ endif ifeq ($(with_gnatsjlj),yes) dh_installdirs -p$(p_gnsjlj) $(gcc_lib_dir) - dh_movefiles -p$(p_gnsjlj) $(gcc_lib_dir)/rts-sjlj - dh_link -p$(p_gnsjlj) \ - $(gcc_lib_dir)/rts-sjlj usr/share/ada/adainclude/rts-sjlj - dh_link -p$(p_gnsjlj) \ - $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ - $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a - dh_link -p$(p_gnsjlj) \ - $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ - $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + dh_movefiles -p$(p_gnsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude endif ifeq ($(with_libgnat),yes) diff --git a/debian/rules.defs b/debian/rules.defs index 9ffdc63..89e6f1e 100644 --- a/debian/rules.defs +++ b/debian/rules.defs @@ -637,7 +637,7 @@ endif ifeq ($(with_ada),yes) enabled_languages += ada with_libgnat := yes - with_gnatsjlj := disabled # FIXME + with_gnatsjlj := yes endif # C++ ------------------------- diff --git a/debian/rules.patch b/debian/rules.patch index d147709..3c8ef05 100644 --- a/debian/rules.patch +++ b/debian/rules.patch @@ -171,9 +170,7 @@ ifeq ($(with_ada),yes) endif ifeq ($(with_gnatsjlj),yes) debian_patches += \ - ada-acats-sjlj - debian_patches += \ - ada-sjlj FIXME needs update + ada-sjlj endif debian_patches += ada-link-shlib
diff --git a/debian/control.m4 b/debian/control.m4 index 35da8ea..e434941 100644 --- a/debian/control.m4 +++ b/debian/control.m4 @@ -4866,7 +4866,7 @@ Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ifdef(`MULTIARCH', `Multi-Arch: same Pre-Depends: multiarch-support ')`'dnl -Priority: PRI(optional) +Priority: ifdef(`TARGET',`extra',`PRI(optional)') Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} BUILT_USING`'dnl Description: runtime for applications compiled with GNAT (shared library) @@ -4919,7 +4919,7 @@ Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ifdef(`MULTIARCH', `Multi-Arch: same Pre-Depends: multiarch-support ')`'dnl -Priority: PRI(optional) +Priority: ifdef(`TARGET',`extra',`PRI(optional)') Section: ifdef(`TARGET',`devel',`libs') Depends: BASEDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} BUILT_USING`'dnl @@ -4980,7 +4980,7 @@ Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ifdef(`MULTIARCH', `Multi-Arch: same Pre-Depends: multiarch-support ')`'dnl -Priority: PRI(optional) +Priority: ifdef(`TARGET',`extra',`PRI(optional)') Section: ifdef(`TARGET',`devel',`libs') Depends: BASEDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} BUILT_USING`'dnl diff --git a/debian/patches/ada-gnattools-cross.diff b/debian/patches/ada-gnattools-cross.diff index bb3cc27..6dc6853 100644 --- a/debian/patches/ada-gnattools-cross.diff +++ b/debian/patches/ada-gnattools-cross.diff @@ -44,8 +44,8 @@ Index: b/src/gcc/ada/gcc-interface/Makefile.in - ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \ - ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB) + -+TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../version.o ../../errors.o ../../../libiberty/pic/lrealpath.o \ -+ ../../libbackend.a ../$(LIBBACKTRACE) ../../libcommon-target.a ../$(LIBIBERTY) ../../libcommon.a ../../../libcpp/libcpp.a ++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-5 \ diff --git a/debian/patches/ada-libgnatprj.diff b/debian/patches/ada-libgnatprj.diff index ed31a0a..f6c5bfa 100644 --- a/debian/patches/ada-libgnatprj.diff +++ b/debian/patches/ada-libgnatprj.diff @@ -238,7 +238,7 @@ Index: b/src/Makefile.def target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; target_modules = { module= libitm; lib_path=.libs; }; target_modules = { module= libatomic; lib_path=.libs; }; -@@ -379,7 +386,10 @@ dependencies = { module=all-fixincludes; +@@ -379,8 +386,12 @@ dependencies = { module=all-fixincludes; dependencies = { module=all-target-libada; on=all-gcc; }; dependencies = { module=all-gnattools; on=all-target-libada; }; dependencies = { module=all-gnattools; on=all-target-libgnatvsn; }; @@ -247,8 +247,10 @@ Index: b/src/Makefile.def +dependencies = { module=all-target-libgnatprj; on=all-target-libgnatvsn; }; +dependencies = { module=all-target-libgnatprj; on=all-target-libiberty; }; dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++dependencies = { module=all-target-libgnatvsn; on=all-target-libstdc++-v3; }; // Depending on the specific configuration, the LTO plugin will either use the + // generic libiberty build or the specific build for linker plugins. Index: b/src/configure.ac =================================================================== --- a/src/configure.ac @@ -948,7 +950,7 @@ Index: b/src/Makefile.in configure-target-libgomp: maybe-all-gcc configure-target-libitm: maybe-all-gcc configure-target-libatomic: maybe-all-gcc -@@ -50501,7 +50877,10 @@ all-stagefeedback-fixincludes: maybe-all +@@ -50501,8 +50877,12 @@ all-stagefeedback-fixincludes: maybe-all all-target-libada: maybe-all-gcc all-gnattools: maybe-all-target-libada all-gnattools: maybe-all-target-libgnatvsn @@ -957,9 +959,11 @@ Index: b/src/Makefile.in +all-target-libgnatprj: maybe-all-target-libgnatvsn +all-target-libgnatprj: maybe-all-target-libiberty all-gnattools: maybe-all-target-libstdc++-v3 ++all-target-libgnatvsn: maybe-all-target-libstdc++-v3 all-lto-plugin: maybe-all-libiberty -@@ -51074,6 +51453,7 @@ configure-target-boehm-gc: maybe-all-tar + all-stage1-lto-plugin: maybe-all-stage1-libiberty +@@ -51074,6 +51454,7 @@ configure-target-boehm-gc: maybe-all-tar configure-target-rda: maybe-all-target-libgcc configure-target-libada: maybe-all-target-libgcc configure-target-libgnatvsn: maybe-all-target-libgcc @@ -967,7 +971,7 @@ Index: b/src/Makefile.in configure-target-libgomp: maybe-all-target-libgcc configure-target-libitm: maybe-all-target-libgcc configure-target-libatomic: maybe-all-target-libgcc -@@ -51129,6 +51509,8 @@ configure-target-libada: maybe-all-targe +@@ -51129,6 +51510,8 @@ configure-target-libada: maybe-all-targe configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss diff --git a/debian/rules.defs b/debian/rules.defs index 7931cc7..d1aa87b 100644 --- a/debian/rules.defs +++ b/debian/rules.defs @@ -561,7 +561,7 @@ ifneq (,$(filter $(distrelease),trusty)) ada_no_cpus += arm64 endif ada_no_systems := -ada_no_cross := yes +ada_no_cross := no ada_no_snap := no ifeq ($(single_package),yes) ada_no_cpus += m68k powerpcspe sh4 sparc64