This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] add CC_STATIC_LIBSTDCXX option for gcc-4.4 and newer


add CC_STATIC_LIBSTDCXX option 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>

diff -r 8ed7bda0e44d config/cc/gcc.in
--- a/config/cc/gcc.in	Thu Jul 29 14:38:58 2010 +0200
+++ b/config/cc/gcc.in	Thu Jul 29 16:44:29 2010 +0200
@@ -183,6 +183,18 @@
     default "4.0.4" if CC_V_4_0_4
     default "3.4.6" if CC_V_3_4_6
 
+config CC_STATIC_LIBSTDCXX
+    bool
+    prompt "link libstdc++ statically into the gcc binary"
+    default y
+    depends on CC_GCC_4_4_or_later
+    help
+      Newer gcc versions use the PPL library which is C++ code.  Statically
+      linking libstdc++ increases the likeliness that the gcc binary will
+      run on machines other than the one which it was built on, without
+      having to worry about distributing the matching version of libstdc++
+      along with it.
+
 config CC_CXA_ATEXIT
     bool
     prompt "Use __cxa_atexit"
diff -r 8ed7bda0e44d scripts/build/cc/gcc.sh
--- a/scripts/build/cc/gcc.sh	Thu Jul 29 14:38:58 2010 +0200
+++ b/scripts/build/cc/gcc.sh	Thu Jul 29 16:44:29 2010 +0200
@@ -338,10 +338,16 @@
         extra_config+=("--enable-cxx-flags=${CC_ENABLE_CXX_FLAGS}")
     fi
 
-    # When companion libraries are build static (eg !shared),
-    # the libstdc++ is not pulled automatically, although it
-    # is needed. Shoe-horn it in our LDFLAGS
-    if [ "${CT_COMPLIBS_SHARED}" != "y" ]; then
+    if [ "${CT_CC_STATIC_LIBSTDCXX}" = "y" ]; then
+        # this is from CodeSourcery arm-2010q1-202-arm-none-linux-gnueabi.src.tar.bz2
+        # build script
+        # FIXME: if the host gcc is gcc-4.5 then presumably we could use -static-libstdc++,
+        # see http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01635.html
+        extra_config+=("--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm")
+    elif [ "${CT_COMPLIBS_SHARED}" != "y" ]; then
+        # When companion libraries are build static (eg !shared),
+        # the libstdc++ is not pulled automatically, although it
+        # is needed. Shoe-horn it in our LDFLAGS
         final_LDFLAGS='-lstdc++'
     fi
     if [ "${CT_CC_GCC_USE_GMP_MPFR}" = "y" ]; then

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]