From 1a0d7c068814999743320e623bff7d0e75f94851 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 11 May 2010 20:01:16 -0700 Subject: [PATCH] Move LIB_GCC from cpp to configure. * configure.in (LIB_GCC): New output variable. * src/Makefile.in (LIB_GCC): Set using configure, not cpp. (GNULIB_VAR) [!ORDINARY_LINK]: Always set to $LIB_GCC. * src/m/arm.h (LIB_GCC) [GNU_LINUX]: * src/s/cygwin.h (LIB_GCC): * src/s/freebsd.h (LIB_GCC): * src/s/gnu-linux.h (LIB_GCC): * src/s/msdos.h (LIB_GCC): * src/s/netbsd.h (LIB_GCC): Move to configure. * msdos/sed1v2.inp (LIB_GCC): Edit to -Lgcc. --- ChangeLog | 4 ++++ configure.in | 29 +++++++++++++++++++++++++++++ msdos/ChangeLog | 4 ++++ msdos/sed1v2.inp | 1 + src/ChangeLog | 12 ++++++++++++ src/Makefile.in | 16 +++++----------- src/m/arm.h | 6 ------ src/s/cygwin.h | 3 --- src/s/freebsd.h | 3 --- src/s/gnu-linux.h | 6 ------ src/s/msdos.h | 1 - src/s/netbsd.h | 3 --- 12 files changed, 55 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6bc657783c8..831fc2263f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-05-12 Glenn Morris + + * configure.in (LIB_GCC): New output variable. + 2010-05-11 Glenn Morris * make-dist (msdos): No more mainmake. diff --git a/configure.in b/configure.in index d634262a0fc..3a0067ecece 100644 --- a/configure.in +++ b/configure.in @@ -3234,6 +3234,35 @@ fi AC_SUBST(LD_SWITCH_SYSTEM_EXTRA) +LIB_GCC= +if test "x$GCC" = "xyes"; then + + case "$opsys" in + ## cygwin: don't link against static libgcc. + cygwin|freebsd|netbsd|openbsd) LIB_GCC= ;; + + gnu-*) + ## armin76@gentoo.org reported that the lgcc_s flag is necessary to + ## build on ARM EABI under GNU/Linux. (Bug#5518) + ## Note that m/arm.h never bothered to undefine LIB_GCC first. + if test "$machine" = "arm"; then + LIB_GCC="-lgcc_s" + else + ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then + ## immediately undefine it again and redefine it to empty. + ## Was the C_SWITCH_X_SITE part really necessary? +## LIB_GCC=`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name` + LIB_GCC= + fi + ;; + + ## Ask GCC where to find libgcc.a. + *) LIB_GCC=`$(CC) -print-libgcc-file-name 2> /dev/null` ;; + esac +fi dnl if $GCC +AC_SUBST(LIB_GCC) + + AH_TOP([/* GNU Emacs site configuration template file. Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. diff --git a/msdos/ChangeLog b/msdos/ChangeLog index bed87472907..8ce1b625fc6 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,7 @@ +2010-05-12 Glenn Morris + + * sed1v2.inp (LIB_GCC): Edit to -Lgcc. + 2010-05-11 Glenn Morris * sed1x.inp (LIBS_SYSTEM): Edit to -lxext -lsys. diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index db6944ec135..f0e057c6b28 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -51,6 +51,7 @@ s/@LIB_MATH@/-lm/ /^LD_SWITCH_SYSTEM *=/s/@LD_SWITCH_SYSTEM@// /^LD_SWITCH_SYSTEM_EXTRA *=/s/@LD_SWITCH_SYSTEM_EXTRA@// /^LIBS_SYSTEM *=/s/@LIBS_SYSTEM@// +/^LIB_GCC *=/s/@LIB_GCC@/-Lgcc/ /^LIBTIFF *=/s/@LIBTIFF@// /^LIBJPEG *=/s/@LIBJPEG@// /^LIBPNG *=/s/@LIBPNG@// diff --git a/src/ChangeLog b/src/ChangeLog index 35b5153649a..7bf067e2427 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2010-05-12 Glenn Morris + + * Makefile.in (LIB_GCC): Set using configure, not cpp. + (GNULIB_VAR) [!ORDINARY_LINK]: Always set to $LIB_GCC. + * m/arm.h (LIB_GCC) [GNU_LINUX]: + * s/cygwin.h (LIB_GCC): + * s/freebsd.h (LIB_GCC): + * s/gnu-linux.h (LIB_GCC): + * s/msdos.h (LIB_GCC): + * s/netbsd.h (LIB_GCC): + Move to configure. + 2010-05-11 Karel Klic * ftfont.c: Fix incorrect parentheses of #if condition for diff --git a/src/Makefile.in b/src/Makefile.in index 292429fc7b4..9476254e48d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -91,6 +91,9 @@ TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_EXTRA) $(LD_SWITCH_SYSTE ## Some systems define this to request special libraries. LIBS_SYSTEM=@LIBS_SYSTEM@ +## Where to find libgcc.a, if using gcc and necessary. +LIB_GCC=@LIB_GCC@ + LIBTIFF=@LIBTIFF@ LIBJPEG=@LIBJPEG@ LIBPNG=@LIBPNG@ @@ -258,6 +261,8 @@ LIBX_OTHER=@LIBX_OTHER@ #endif /* not HAVE_X_WINDOWS */ #ifndef ORDINARY_LINK +GNULIB_VAR = $(LIB_GCC) + /* Fix linking if compiled with GCC. */ #ifdef __GNUC__ @@ -278,13 +283,6 @@ LIBX_OTHER=@LIBX_OTHER@ #define LINKER $(CC) -nostdlib #endif -#ifndef LIB_GCC -/* Ask GCC where to find libgcc.a. */ -#define LIB_GCC `$(CC) -print-libgcc-file-name` -#endif /* not LIB_GCC */ - -GNULIB_VAR = LIB_GCC - #ifndef LINKER_WAS_SPECIFIED /* GCC passes any argument prefixed with -Xlinker directly to the linker. See prefix-args.c for an explanation of why we do not do @@ -296,10 +294,6 @@ GNULIB_VAR = LIB_GCC #define YMF_PASS_LDFLAGS(flags) flags #endif -#else /* not __GNUC__ */ -GNULIB_VAR = - -#endif /* not __GNUC__ */ #endif /* not ORDINARY_LINK */ #ifdef ORDINARY_LINK diff --git a/src/m/arm.h b/src/m/arm.h index c3a5d6e4ad5..cf30e2e1b19 100644 --- a/src/m/arm.h +++ b/src/m/arm.h @@ -24,11 +24,5 @@ along with GNU Emacs. If not, see . */ #define NO_REMAP -/* armin76@gentoo.org reported that the lgcc_s flag is necessary to - build on ARM EABI under GNU/Linux (Bug#5518). */ -#ifdef GNU_LINUX -#define LIB_GCC -lgcc_s -#endif - /* arch-tag: 07856f0c-f0c8-4bd8-99af-0b7fa1e5ee42 (do not change this comment) */ diff --git a/src/s/cygwin.h b/src/s/cygwin.h index 296b1970a97..4a5add787f4 100644 --- a/src/s/cygwin.h +++ b/src/s/cygwin.h @@ -127,9 +127,6 @@ along with GNU Emacs. If not, see . */ returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */ #define G_SLICE_ALWAYS_MALLOC -/* Don't link against static libgcc */ -#define LIB_GCC - /* the end */ /* arch-tag: 5ae7ba00-83b0-4ab3-806a-3e845779191b diff --git a/src/s/freebsd.h b/src/s/freebsd.h index 78c7dfdf6bb..2bce3ad63be 100644 --- a/src/s/freebsd.h +++ b/src/s/freebsd.h @@ -30,9 +30,6 @@ along with GNU Emacs. If not, see . */ #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) -#undef LIB_GCC -#define LIB_GCC - #define HAVE_GETLOADAVG 1 #define DECLARE_GETPWUID_WITH_UID_T diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index 5c94a4369ce..a42bbaadf62 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h @@ -140,9 +140,6 @@ along with GNU Emacs. If not, see . */ #endif /* !_IO_STDIO_H && ! __UCLIBC__ */ #endif /* emacs */ -/* Ask GCC where to find libgcc.a. */ -#define LIB_GCC `$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name` - #ifdef emacs #define INTERRUPT_INPUT #endif @@ -151,9 +148,6 @@ along with GNU Emacs. If not, see . */ #define POSIX /* affects getpagesize.h and systty.h */ -#undef LIB_GCC -#define LIB_GCC - #define UNEXEC unexelf.o /* This is to work around mysterious gcc failures in some system versions. diff --git a/src/s/msdos.h b/src/s/msdos.h index 4d7ca08d3c0..efed104e958 100644 --- a/src/s/msdos.h +++ b/src/s/msdos.h @@ -95,7 +95,6 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #define ORDINARY_LINK /* command.com does not understand `...` so we define this. */ -#define LIB_GCC -Lgcc #define SEPCHAR ';' #define NULL_DEVICE "nul" diff --git a/src/s/netbsd.h b/src/s/netbsd.h index fa6d1141c8c..2511dc1c1e7 100644 --- a/src/s/netbsd.h +++ b/src/s/netbsd.h @@ -26,9 +26,6 @@ along with GNU Emacs. If not, see . */ #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) -#undef LIB_GCC -#define LIB_GCC - #define AMPERSAND_FULL_NAME /* On post 1.3 releases of NetBSD, gcc -nostdlib also clears -- 2.39.2