patches/gcc/4.1.2/300-libstdc++-pic.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun May 20 13:48:26 2007 +0000 (2007-05-20)
changeset 112 ea15433daba0
parent 1 eeea35fbf182
permissions -rw-r--r--
Ah! I finally have a progress bar that doesn't stall the build!
- pipe size in Linux is only 8*512=4096 bytes
- pipe size is not setable
- when the feeding process spits out data faster than the eating
process can read it, then the feeding process stalls after 4KiB
of data sent to the pipe
- for us, the progress bar would spawn a sub-shell every line,
and the sub-shell would in turn spawn a 'date' command.
Which was sloooww as hell, and would cause some kind of a
starvation: the pipe was full most of the time, and the
feeding process was stalled all this time.

Now, we use internal variables and a little hack based onan offset
to determine the elapsed time. Much faster this way, but still
CPU-intensive.
     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: