Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-09-01 Thread Iain Sandoe

On 31 Aug 2013, at 22:42, Gabriel Dos Reis wrote:

 Eric Botcazou ebotca...@adacore.com writes:
 
 |  This patch fixes that by introducing GXX_LINK which is GCC_LINK except
 |  that CXX (e.g. xg++) instead of CC (e.g. xgcc) is invoked.
 |  
 |  Eric, are there other executables that need to be linked with GXX_LINK
 |  too but aren't triggered yet?
 | 
 | Yes, all not covered executables linking with TOOLS_LIBS since it contains 
 | libcommon.a which now drags the C++ library.  So the simplest solution is 
 to 
 | change GCC_LINK (there is one potential problematic case, vxaddr2line, but 
 it 
 | probably didn't link before so let's forget it for now).
 | 
 | I'll attach a patch to the PR so that the Darwin folks can test it.
 
 Thank you; that is very much appreciated.

yes, indeed, thanks Eric,
It seems the patch needs a couple of minor amendments to work with Darwin - and 
I've added an updated version to the PR which passes bootstrap and make 
check-ada on x86_64-darwin12.
Iain



Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-09-01 Thread Eric Botcazou
 It seems the patch needs a couple of minor amendments to work with Darwin -
 and I've added an updated version to the PR which passes bootstrap and make
 check-ada on x86_64-darwin12. Iain

Thanks, here is the final patch I just installed.


2013-09-01  Eric Botcazou  ebotca...@adacore.com
Iain Sandoe  i...@codesourcery.com

PR ada/58239
gnattools/
* Makefile.in (CXX_LFLAGS): New.
(TOOLS_FLAGS_TO_PASS_NATIVE): Pass CXX and CXX_LFLAGS.
(TOOLS_FLAGS_TO_PASS_RE): Likewise.
(TOOLS_FLAGS_TO_PASS_CROSS): Pass CXX.
gcc/ada/
* gcc-interface/Makefile.in (GCC_LINK_FLAGS): Add -static-libstdc++.
(GCC_LINK): Use CXX instead of CC.
* gcc-interface/Make-lang.in (CXX_LFLAGS): New.
(ADA_TOOLS_FLAGS_TO_PASS): Pass CXX, and CXX_LFLAGS for native.


-- 
Eric BotcazouIndex: gnattools/Makefile.in
===
--- gnattools/Makefile.in	(revision 202141)
+++ gnattools/Makefile.in	(working copy)
@@ -63,9 +63,16 @@ INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -
 	-I$(fsrcdir)/../include -I$(fsrcdir)
 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
+
 # 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) \
@@ -83,6 +90,7 @@ TOOLS_FLAGS_TO_PASS_NATIVE= \
 # Variables for regnattools
 TOOLS_FLAGS_TO_PASS_RE= \
 	CC=../../xgcc -B../../ \
+	CXX=../../xg++ -B../../ $(CXX_LFLAGS) \
 	CFLAGS=$(CFLAGS) \
 	ADAFLAGS=$(ADAFLAGS) \
 	ADA_CFLAGS=$(ADA_CFLAGS) \
@@ -99,6 +107,7 @@ TOOLS_FLAGS_TO_PASS_RE= \
 # Variables for gnattools, cross
 TOOLS_FLAGS_TO_PASS_CROSS= \
 	CC=$(CC) \
+	CXX=$(CXX) \
 	CFLAGS=$(CFLAGS) $(WARN_CFLAGS) \
 	LDFLAGS=$(LDFLAGS) \
 	ADAFLAGS=$(ADAFLAGS)	\
Index: gcc/ada/gcc-interface/Makefile.in
===
--- gcc/ada/gcc-interface/Makefile.in	(revision 202141)
+++ gcc/ada/gcc-interface/Makefile.in	(working copy)
@@ -198,7 +198,7 @@ RTSDIR = rts$(subst /,_,$(MULTISUBDIR))
 # 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
 # to deal with as it may conflict with the libgcc provided by the system).
-GCC_LINK_FLAGS=-static-libgcc
+GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc
 
 # End of variables for you to override.
 
@@ -2275,7 +2275,7 @@ ifeq ($(strip $(filter-out darwin%,$(osy
   GMEM_LIB = gmemlib
   LIBRARY_VERSION := $(LIB_VERSION)
   soext = .dylib
-  GCC_LINK_FLAGS=
+  GCC_LINK_FLAGS=-static-libstdc++
 endif
 
 # ARM Nucleus
@@ -2397,7 +2397,7 @@ TOOLS_FLAGS_TO_PASS=		\
 	GNATLINK=$(GNATLINK)	\
 	GNATBIND=$(GNATBIND)
 
-GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES)
+GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES)
 
 # Build directory for the tools. Let's copy the target-dependent
 # sources using the same mechanism as for gnatlib. The other sources are
Index: gcc/ada/gcc-interface/Make-lang.in
===
--- gcc/ada/gcc-interface/Make-lang.in	(revision 202141)
+++ gcc/ada/gcc-interface/Make-lang.in	(working copy)
@@ -111,6 +111,12 @@ ada: gnat1$(exeext) gnatbind$(exeext)
 # Tell GNU Make to ignore these, if they exist.
 .PHONY: 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
+
 # There are too many Ada sources to check against here.  Let's
 # always force the recursive make.
 ifeq ($(build), $(host))
@@ -119,6 +125,7 @@ ifeq ($(build), $(host))
 # tree.
 ADA_TOOLS_FLAGS_TO_PASS=\
 CC=../../xgcc -B../../ \
+CXX=../../xg++ -B../../ $(CXX_LFLAGS) \
 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
 ADA_INCLUDES=-I- -I../rts \
 GNATMAKE=../../gnatmake \
@@ -136,6 +143,7 @@ ifeq ($(build), $(host))
 
 ADA_TOOLS_FLAGS_TO_PASS=\
 CC=$(CC) \
+CXX=$(CXX) \
 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
 ADA_INCLUDES=-I$(RTS_DIR)../adainclude -I$(RTS_DIR) \
 GNATMAKE=gnatmake \
@@ -158,6 +166,7 @@ else
 # built runtime.
 ADA_TOOLS_FLAGS_TO_PASS=\
 CC=$(CC) \
+CXX=$(CXX) \
 $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS)  \
 ADA_INCLUDES=-I../rts\
 GNATMAKE=$(GNATMAKE_FOR_HOST)  \
@@ -172,6 +181,7 @@ else
 endif
 ADA_TOOLS_FLAGS_TO_PASS=\
 CC=$(CC) \
+   

Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-09-01 Thread Gabriel Dos Reis
Eric Botcazou ebotca...@adacore.com writes:

|  It seems the patch needs a couple of minor amendments to work with Darwin -
|  and I've added an updated version to the PR which passes bootstrap and make
|  check-ada on x86_64-darwin12. Iain
| 
| Thanks, here is the final patch I just installed.


Thanks!

-- Gaby



Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-08-31 Thread Eric Botcazou
 This patch fixes that by introducing GXX_LINK which is GCC_LINK except
 that CXX (e.g. xg++) instead of CC (e.g. xgcc) is invoked.
 
 Eric, are there other executables that need to be linked with GXX_LINK
 too but aren't triggered yet?

Yes, all not covered executables linking with TOOLS_LIBS since it contains 
libcommon.a which now drags the C++ library.  So the simplest solution is to 
change GCC_LINK (there is one potential problematic case, vxaddr2line, but it 
probably didn't link before so let's forget it for now).

I'll attach a patch to the PR so that the Darwin folks can test it.

-- 
Eric Botcazou


Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-08-31 Thread Gabriel Dos Reis
Eric Botcazou ebotca...@adacore.com writes:

|  This patch fixes that by introducing GXX_LINK which is GCC_LINK except
|  that CXX (e.g. xg++) instead of CC (e.g. xgcc) is invoked.
|  
|  Eric, are there other executables that need to be linked with GXX_LINK
|  too but aren't triggered yet?
| 
| Yes, all not covered executables linking with TOOLS_LIBS since it contains 
| libcommon.a which now drags the C++ library.  So the simplest solution is to 
| change GCC_LINK (there is one potential problematic case, vxaddr2line, but it 
| probably didn't link before so let's forget it for now).
| 
| I'll attach a patch to the PR so that the Darwin folks can test it.

Thank you; that is very much appreciated.

-- Gaby


Re: Ada PATCH: Fix ada/58239 by linking with xg++, not xgcc

2013-08-30 Thread Rainer Orth
Gabriel Dos Reis g...@axiomatics.org writes:

 My earlier patch that formally desclared pretty_printer as polymorphic
 uncovered a latent bug in the existing build machinery of the Ada
 component.  It had been using xgcc to link against C++ source files.  It
 should use xg++ instead.

 This patch fixes that by introducing GXX_LINK which is GCC_LINK except
 that CXX (e.g. xg++) instead of CC (e.g. xgcc) is invoked.

 Eric, are there other executables that need to be linked with GXX_LINK
 too but aren't triggered yet? 

It would be good to have this patch approved and committed: right now,
Ada bootstrap is broken without it.

Rainer

-- 
-
Rainer Orth, Center for Biotechnology, Bielefeld University