auto-detect when strip -S works for archives

Otherwise, don't try to strip archives such as "libracket3m.a".
This commit is contained in:
Matthew Flatt 2015-09-20 20:57:45 -06:00
parent b37c07a280
commit 1d5b34f48b
3 changed files with 60 additions and 11 deletions

38
racket/src/configure vendored
View File

@ -712,6 +712,7 @@ PLAIN_CC
MZLINKER
REZ
CC_FOR_BUILD
STRIP_LIB_DEBUG
STRIP_DEBUG
ARFLAGS
STATIC_AR
@ -3177,6 +3178,7 @@ INSTALL_SETUP_RACKET_FLAGS=
INSTALL_LIBS_ENABLE=no-install
STRIP_DEBUG=":"
STRIP_LIB_DEBUG=":"
strip_debug_flags=""
enable_strip_by_default=yes
@ -4743,9 +4745,6 @@ $as_echo "#define HAVE_STDINT_H 1" >>confdefs.h
PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT"
try_kqueue_syscall=yes
# Needed when stripping ".a"s:
strip_debug_flags=" -S"
# ".a" is typically not useful, since we always build a ".dylib":
if test "${enable_libs}" == "" ; then
INSTALL_LIBS_ENABLE=no-install
@ -4855,6 +4854,11 @@ if test "${enable_strip}" = "" ; then
fi
fi
try_archive_conftest()
{
$AR $ARFLAGS conftest.a conftest.$OBJEXT > /dev/null 2>&1
}
if test "${enable_strip}" = "yes" ; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@ -4949,7 +4953,32 @@ else
fi
# Used to add -S flag, but not all `strip' variants support it:
STRIP_DEBUG="${STRIP}${strip_debug_flags}"
STRIP_DEBUG="${STRIP}"
if test "${INSTALL_LIBS_ENABLE}" = "install" ; then
# Can only support library stripping if something like "-S" is available:
msg="for strip -S"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5
$as_echo_n "checking $msg... " >&6; }
set_strip_lib=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int f() { return 0; }
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
try_archive_conftest
else
set_strip_lib=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test conftest.a ; then
if "${STRIP_DEBUG}" -S conftest.a > /dev/null 2>&1 ; then
STRIP_LIB_DEBUG="${STRIP_DEBUG} -S"
set_strip_lib=yes
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $set_strip_lib" >&5
$as_echo "$set_strip_lib" >&6; }
fi
fi
############## C flags ################
@ -6880,6 +6909,7 @@ LIBS="$LIBS $EXTRALIBS"
mk_needed_dir()

View File

@ -37,6 +37,7 @@ ARFLAGS = @ARFLAGS@
RANLIB = @RANLIB@
STRIP_DEBUG = @STRIP_DEBUG@
STRIP_LIB_DEBUG = @STRIP_LIB_DEBUG@
ARLIBFLAGS = @LDFLAGS@ @LIBS@
@ -406,8 +407,8 @@ unix-install-cgc:
unix-install-libs-cgc:
cd ..; $(ICP) racket/libmzgc.@LIBSFX@ "$(DESTDIR)$(libdir)/libmzgc.@LIBSFX@"
cd ..; $(ICP) racket/libracket.@LIBSFX@ "$(DESTDIR)$(libdir)/libracket.@LIBSFX@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/libmzgc.@LIBSFX@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/libracket.@LIBSFX@"
cd ..; $(STRIP_LIB_DEBUG) "$(DESTDIR)$(libdir)/libmzgc.@LIBSFX@"
cd ..; $(STRIP_LIB_DEBUG) "$(DESTDIR)$(libdir)/libracket.@LIBSFX@"
unix-no-install-libs-cgc:
$(NOOP)
@ -424,7 +425,7 @@ unix-install-3m:
unix-install-libs-3m:
cd ..; $(ICP) racket/libracket3m.@LIBSFX@ "$(DESTDIR)$(libdir)/libracket3m.@LIBSFX@"
cd ..; $(STRIP_DEBUG) "$(DESTDIR)$(libdir)/libracket3m.@LIBSFX@"
cd ..; $(STRIP_LIB_DEBUG) "$(DESTDIR)$(libdir)/libracket3m.@LIBSFX@"
unix-no-install-libs-3m:
$(NOOP)

View File

@ -450,6 +450,7 @@ INSTALL_SETUP_RACKET_FLAGS=
INSTALL_LIBS_ENABLE=no-install
STRIP_DEBUG=":"
STRIP_LIB_DEBUG=":"
strip_debug_flags=""
enable_strip_by_default=yes
@ -867,9 +868,6 @@ case "$host_os" in
PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT"
try_kqueue_syscall=yes
# Needed when stripping ".a"s:
strip_debug_flags=" -S"
# ".a" is typically not useful, since we always build a ".dylib":
if test "${enable_libs}" == "" ; then
INSTALL_LIBS_ENABLE=no-install
@ -979,10 +977,29 @@ if test "${enable_strip}" = "" ; then
fi
fi
try_archive_conftest()
{
$AR $ARFLAGS conftest.a conftest.$OBJEXT > /dev/null 2>&1
}
if test "${enable_strip}" = "yes" ; then
AC_CHECK_TOOL([STRIP], [strip])
# Used to add -S flag, but not all `strip' variants support it:
STRIP_DEBUG="${STRIP}${strip_debug_flags}"
STRIP_DEBUG="${STRIP}"
if test "${INSTALL_LIBS_ENABLE}" = "install" ; then
# Can only support library stripping if something like "-S" is available:
[ msg="for strip -S" ]
AC_MSG_CHECKING($msg)
set_strip_lib=no
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int f() { return 0; }])], try_archive_conftest, set_strip_lib=no )
if test conftest.a ; then
if "${STRIP_DEBUG}" -S conftest.a > /dev/null 2>&1 ; then
STRIP_LIB_DEBUG="${STRIP_DEBUG} -S"
set_strip_lib=yes
fi
fi
AC_MSG_RESULT($set_strip_lib)
fi
fi
############## C flags ################
@ -1692,6 +1709,7 @@ AC_SUBST(AR)
AC_SUBST(STATIC_AR)
AC_SUBST(ARFLAGS)
AC_SUBST(STRIP_DEBUG)
AC_SUBST(STRIP_LIB_DEBUG)
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(REZ)
AC_SUBST(MZLINKER)