patches/gcc/4.1.2/130-libstdc++-pic.patch
author Johannes Stezenbach <js@sig21.net>
Thu Jul 29 19:47:16 2010 +0200 (2010-07-29)
changeset 2045 fdaa6c7f6dea
parent 13 068dce39f687
permissions -rw-r--r--
cc/gcc: add option to compile against static libstdc++, for gcc-4.4 and newer

Idea and know-how taken from CodeSourcery build script.

Normal build:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb77f3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76e8000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75a1000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb757a000)
/lib/ld-linux.so.2 (0xb77f4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb755c000)

CC_STATIC_LIBSTDCXX=y:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb7843000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb76e6000)
/lib/ld-linux.so.2 (0xb7844000)

I made CC_STATIC_LIBSTDCXX default=y since I think
it is always desirable.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
     1 --- gcc-4.1.2.orig/libstdc++-v3/src/Makefile.am	2006-01-10 05:01:00.000000000 +0100
     2 +++ gcc-4.1.2/libstdc++-v3/src/Makefile.am	2007-03-04 23:32:40.000000000 +0100
     3 @@ -234,6 +234,12 @@
     4  	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
     5  
     6  
     7 +install-exec-local:
     8 +ifeq ($(enable_shared),yes)
     9 +	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
    10 +	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
    11 +endif
    12 +
    13  # Added bits to build debug library.
    14  if GLIBCXX_BUILD_DEBUG
    15  all-local: build_debug
    16 --- gcc-4.1.2.orig/libstdc++-v3/src/Makefile.in	2006-01-10 18:14:00.000000000 +0100
    17 +++ gcc-4.1.2/libstdc++-v3/src/Makefile.in	2007-03-04 23:32:40.000000000 +0100
    18 @@ -627,7 +627,7 @@
    19  
    20  install-data-am: install-data-local
    21  
    22 -install-exec-am: install-toolexeclibLTLIBRARIES
    23 +install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
    24  
    25  install-info: install-info-am
    26  
    27 @@ -660,6 +660,7 @@
    28  	distclean-libtool distclean-tags distdir dvi dvi-am html \
    29  	html-am info info-am install install-am install-data \
    30  	install-data-am install-data-local install-exec \
    31 +	install-exec-local \
    32  	install-exec-am install-info install-info-am install-man \
    33  	install-strip install-toolexeclibLTLIBRARIES installcheck \
    34  	installcheck-am installdirs maintainer-clean \
    35 @@ -760,6 +761,13 @@
    36  install_debug:
    37  	(cd ${debugdir} && $(MAKE) \
    38  	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
    39 +
    40 +install-exec-local:
    41 +ifeq ($(enable_shared),yes)
    42 +	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
    43 +	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
    44 +endif
    45 +
    46  # Tell versions [3.59,3.63) of GNU make to not export all variables.
    47  # Otherwise a system limit (for SysV at least) may be exceeded.
    48  .NOEXPORT: