patches/gcc/4.3.1/190-libstdc++-pic.patch
author Anthony Foiani <anthony.foiani@gmail.com>
Thu May 19 23:06:16 2011 +0200 (2011-05-19)
changeset 2461 ec30b191f0e3
parent 746 b150d6f590fc
permissions -rw-r--r--
complibs/ppl: build only C and C++ interfaces for PPL

By default, PPL wants to build interfaces for any of a variety of
langauges it finds on the local host (python, java, possibly perl, also
more esoteric languages such as ocaml and prolog).

These extra interfaces can double the compile time for the library. For
single-process builds, I found a savings of more than 40%:

default / j1: 716s total, 143.2s avg, 0.52s stdev
just_c / j1: 406s total, 81.2s avg, 0.33s stdev
just_c_cpp / j1: 413s total, 82.6s avg, 0.22s stdev

And for multi-process builds, it approached 50%:

default / j4: 625s total, 125.0s avg, 0.57s stdev
just_c / j4: 338s total, 67.6s avg, 1.25s stdev
just_c_cpp / j4: 327s total, 65.4s avg, 0.36s stdev

Since the PPL we build within ct-ng is only used by GCC, we only need to
build the C and C++ interfaces.

Signed-Off-By: Anthony Foiani <anthony.foiani@gmail.com>
yann@552
     1
Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.1/gentoo/54_all_300-libstdc++-pic.patch
yann@552
     2
install libstdc++_pic.a if we have pic objs
yann@552
     3
yann@552
     4
diff -durN gcc-4.3.1.orig/libstdc++-v3/src/Makefile.am gcc-4.3.1/libstdc++-v3/src/Makefile.am
yann@552
     5
--- gcc-4.3.1.orig/libstdc++-v3/src/Makefile.am	2008-02-29 19:26:50.000000000 +0100
yann@552
     6
+++ gcc-4.3.1/libstdc++-v3/src/Makefile.am	2008-06-10 14:58:09.000000000 +0200
yann@552
     7
@@ -289,6 +289,13 @@
yann@552
     8
 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
yann@552
     9
 
yann@552
    10
 
yann@552
    11
+install-exec-local:
yann@552
    12
+	pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
yann@552
    13
+	if [ x"$$pic_objs" != x ]; then \
yann@552
    14
+		$(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
yann@552
    15
+		$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
yann@552
    16
+	fi
yann@552
    17
+
yann@552
    18
 # Added bits to build debug library.
yann@552
    19
 if GLIBCXX_BUILD_DEBUG
yann@552
    20
 all-local: build_debug
yann@552
    21
diff -durN gcc-4.3.1.orig/libstdc++-v3/src/Makefile.in gcc-4.3.1/libstdc++-v3/src/Makefile.in
yann@552
    22
--- gcc-4.3.1.orig/libstdc++-v3/src/Makefile.in	2008-02-29 19:26:50.000000000 +0100
yann@552
    23
+++ gcc-4.3.1/libstdc++-v3/src/Makefile.in	2008-06-10 14:58:09.000000000 +0200
yann@552
    24
@@ -693,7 +693,7 @@
yann@552
    25
 
yann@552
    26
 install-data-am: install-data-local
yann@552
    27
 
yann@552
    28
-install-exec-am: install-toolexeclibLTLIBRARIES
yann@552
    29
+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
yann@552
    30
 
yann@552
    31
 install-info: install-info-am
yann@552
    32
 
yann@552
    33
@@ -732,7 +732,7 @@
yann@552
    34
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
yann@552
    35
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
yann@552
    36
 	tags uninstall uninstall-am uninstall-info-am \
yann@552
    37
-	uninstall-toolexeclibLTLIBRARIES
yann@552
    38
+	uninstall-toolexeclibLTLIBRARIES install-exec-local
yann@552
    39
 
yann@552
    40
 
yann@552
    41
 # Symbol versioning for shared libraries.
yann@552
    42
@@ -858,6 +858,14 @@
yann@552
    43
 install_debug:
yann@552
    44
 	(cd ${debugdir} && $(MAKE) \
yann@552
    45
 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
yann@552
    46
+
yann@552
    47
+install-exec-local:
yann@552
    48
+	pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
yann@552
    49
+	if [ x"$$pic_objs" != x ]; then \
yann@552
    50
+		$(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
yann@552
    51
+		$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
yann@552
    52
+	fi
yann@552
    53
+
yann@552
    54
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
yann@552
    55
 # Otherwise a system limit (for SysV at least) may be exceeded.
yann@552
    56
 .NOEXPORT: