mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-23 22:33:28 +00:00
Use -Wl,-r to do partial linking with clang, and -r to do partial linking with GCC. Hopefully this fixes building with GCC 4.6.0 while still working with GCC on sparc, and with clang on all platforms
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@32835 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
2a8870194a
commit
a70a23a808
5 changed files with 81 additions and 13 deletions
|
@ -1,3 +1,12 @@
|
|||
2011-04-11 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
* configure.ac: Set OBJ_MERGE_CMD_FLAG to -r or -Wl,-r depending
|
||||
on whether we're using GCC or clang.
|
||||
* configure: Regenerated.
|
||||
* config.make.in (OBJ_MERGE_CMD_FLAG): New.
|
||||
* target.make: Use OBJ_MERGE_CMD_FLAG instead of -Wl,-r
|
||||
-mno-relax.
|
||||
|
||||
2011-04-09 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
* common.make: Updated comments.
|
||||
|
|
|
@ -229,3 +229,8 @@ GCC_WITH_PRECOMPILED_HEADERS = @GCC_WITH_PRECOMPILED_HEADERS@
|
|||
# be an absolute path.
|
||||
#
|
||||
GNUSTEP_ABSOLUTE_INSTALL_PATHS = @GNUSTEP_ABSOLUTE_INSTALL_PATHS@
|
||||
|
||||
#
|
||||
# Whether to use -r or -Wl,-r when doing partial linking
|
||||
#
|
||||
OBJ_MERGE_CMD_FLAG = @OBJ_MERGE_CMD_FLAG@
|
||||
|
|
29
configure
vendored
29
configure
vendored
|
@ -587,6 +587,7 @@ SOLARIS_SHARED
|
|||
GCC_WITH_PRECOMPILED_HEADERS
|
||||
AUTO_DEPENDENCIES
|
||||
USE_OBJC_EXCEPTIONS
|
||||
OBJ_MERGE_CMD_FLAG
|
||||
USE_NONFRAGILE_ABI
|
||||
OBJCXX
|
||||
ac_cv_objc_threaded
|
||||
|
@ -5655,6 +5656,34 @@ fi
|
|||
# Keep LIBS and CFLAGS as they are for a while - we need them in
|
||||
# the following Objective-C tests!
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Check if we should use -r or -Wl,-r when doing partial linking
|
||||
#--------------------------------------------------------------------
|
||||
|
||||
# Ideally, we'd use -r or -Wl,-r everywhere and that would work with
|
||||
# both GCC and clang. But -r doesn't work with clang on some
|
||||
# platforms, while using -Wl,-r is a problem with GCC on some Sparc
|
||||
# systems, where GCC automatically passes --relax to the linker unless
|
||||
# you specify -r. If you specify -Wl,-r, it still passes --relax,
|
||||
# producing the error
|
||||
#
|
||||
# ld: --relax and -r may not be used together
|
||||
#
|
||||
# To work around this, we use -Wl,-r with clang, and -r with GCC.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the flag to use to do partial linking" >&5
|
||||
$as_echo_n "checking for the flag to use to do partial linking... " >&6; }
|
||||
if test ${GCC} = "yes" ; then
|
||||
OBJ_MERGE_CMD_FLAG=-r
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: -r" >&5
|
||||
$as_echo "-r" >&6; }
|
||||
else
|
||||
OBJ_MERGE_CMD_FLAG=-Wl,-r
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: -Wl,-r" >&5
|
||||
$as_echo "-Wl,-r" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Check for the GCC version - this is used in the following tests
|
||||
#--------------------------------------------------------------------
|
||||
|
|
25
configure.ac
25
configure.ac
|
@ -1365,6 +1365,31 @@ AC_SUBST(USE_NONFRAGILE_ABI)
|
|||
# Keep LIBS and CFLAGS as they are for a while - we need them in
|
||||
# the following Objective-C tests!
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Check if we should use -r or -Wl,-r when doing partial linking
|
||||
#--------------------------------------------------------------------
|
||||
|
||||
# Ideally, we'd use -r or -Wl,-r everywhere and that would work with
|
||||
# both GCC and clang. But -r doesn't work with clang on some
|
||||
# platforms, while using -Wl,-r is a problem with GCC on some Sparc
|
||||
# systems, where GCC automatically passes --relax to the linker unless
|
||||
# you specify -r. If you specify -Wl,-r, it still passes --relax,
|
||||
# producing the error
|
||||
#
|
||||
# ld: --relax and -r may not be used together
|
||||
#
|
||||
# To work around this, we use -Wl,-r with clang, and -r with GCC.
|
||||
AC_MSG_CHECKING(for the flag to use to do partial linking)
|
||||
if test ${GCC} = "yes" ; then
|
||||
OBJ_MERGE_CMD_FLAG=-r
|
||||
AC_MSG_RESULT([-r])
|
||||
else
|
||||
OBJ_MERGE_CMD_FLAG=-Wl,-r
|
||||
AC_MSG_RESULT([-Wl,-r])
|
||||
fi
|
||||
|
||||
AC_SUBST(OBJ_MERGE_CMD_FLAG)
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# Check for the GCC version - this is used in the following tests
|
||||
#--------------------------------------------------------------------
|
||||
|
|
26
target.make
26
target.make
|
@ -231,7 +231,7 @@ SHARED_LIB_LINK_CMD = \
|
|||
endif # OBJC_COMPILER
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
STATIC_LIB_LINK_CMD = \
|
||||
/usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
|
||||
|
@ -375,7 +375,7 @@ AFTER_INSTALL_SHARED_LIB_CMD = \
|
|||
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE) )
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) -d $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
STATIC_LIB_LINK_CMD = \
|
||||
/usr/bin/libtool $(STATIC_LD_PREFLAGS) -static $(ARCH_FLAGS) $(ALL_LDFLAGS) -o $@ $^ \
|
||||
|
@ -563,7 +563,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
|
|||
chown $(CHOWN_TO) $(LIB_LINK_FILE))
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -641,7 +641,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
|
|||
chown $(CHOWN_TO) $(LIB_LINK_SONAME_FILE); \
|
||||
chown $(CHOWN_TO) $(LIB_LINK_FILE))
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -683,7 +683,7 @@ SHARED_LIB_LINK_CMD = \
|
|||
$(RM_LN_S) $(LIB_LINK_FILE); \
|
||||
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -716,7 +716,7 @@ SHARED_LIB_LINK_CMD = \
|
|||
$(RM_LN_S) $(LIB_LINK_FILE); \
|
||||
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -762,7 +762,7 @@ AFTER_INSTALL_SHARED_LIB_CMD = \
|
|||
)
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -794,7 +794,7 @@ SHARED_LIB_LINK_CMD = \
|
|||
$(RM_LN_S) $(LIB_LINK_FILE); \
|
||||
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fPIC
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -851,7 +851,7 @@ SHARED_CFLAGS += -fPIC
|
|||
SHARED_LIBEXT = .so
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -Wl,-r -mno-relax $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
ADDITIONAL_LDFLAGS +=
|
||||
STATIC_LDFLAGS +=
|
||||
|
@ -906,7 +906,7 @@ DLL_LIBEXT = .dll
|
|||
#SHARED_CFLAGS +=
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
HAVE_BUNDLES = yes
|
||||
BUNDLE_LD = $(LD)
|
||||
|
@ -956,7 +956,7 @@ CYGWIN_LD_FLAGS = -Wl,--export-all-symbols -Wl,--enable-auto-import
|
|||
#SHARED_CFLAGS +=
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r $(ALL_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) $(CYGWIN_LD_FLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
HAVE_BUNDLES = yes
|
||||
BUNDLE_LD = $(LD)
|
||||
|
@ -1017,7 +1017,7 @@ AFTER_INSTALL_SHARED_LIB_CHOWN = \
|
|||
chown $(CHOWN_TO) $(LIB_LINK_FILE))
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
SHARED_CFLAGS += -fpic -fPIC -std=gnu99
|
||||
SHARED_LIBEXT = .so
|
||||
|
@ -1077,7 +1077,7 @@ SHARED_LIB_LINK_CMD = \
|
|||
$(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE))
|
||||
|
||||
OBJ_MERGE_CMD = \
|
||||
$(LD) -nostdlib -Wl,-r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
$(LD) -nostdlib $(OBJ_MERGE_CMD_FLAG) $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ;
|
||||
|
||||
ifeq ($(CC), cc)
|
||||
SHARED_CFLAGS += +z
|
||||
|
|
Loading…
Reference in a new issue