AC_DEFUN([SXE_CHECK_LINKER_FLAGS], [dnl
dnl just like SXE_CHECK_COMPILER_FLAGS but calls the linker
+dnl SXE_CHECK_LINKER_FLAGS(<FLAG>, <ACTION-IF-FOUND>, <ACTION-IF-NOT-FOUND>,
+dnl <ADDITIONAL-FLAGS>)
AC_MSG_CHECKING([whether linker accepts $1])
dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
AS_LITERAL_IF([$1], [
AC_CACHE_VAL(AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1), [
sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
- _AC_LANG_PREFIX[]FLAGS="${XFLAG} $1"
+ _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} $1"
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
_AC_LANG_PREFIX[]FLAGS=$sxe_save_FLAGS])], [
sxe_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
- _AC_LANG_PREFIX[]FLAGS="$1"
+ _AC_LANG_PREFIX[]FLAGS="$4 ${XFLAG} $1"
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="yes",
eval AS_TR_SH(sxe_cv_[]_AC_LANG_ABBREV[]_flags_$1)="no")
pushdef([LD_ZFLAG], [$1])
pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
- AC_CACHE_CHECK([whether linker supports -z ]LD_ZFLAG[],
- []cv_zflag[], [_SXE_CHECK_LD_ZFLAG(LD_ZFLAG)])
+ SXE_CHECK_LINKER_FLAGS([-z ]LD_ZFLAG[])
+
+dnl Use the check that actually calls the compiler/linker to examine the flags
+dnl AC_CACHE_CHECK([whether linker supports -z ]LD_ZFLAG[],
+dnl []cv_zflag[], [_SXE_CHECK_LD_ZFLAG(LD_ZFLAG)])
popdef([cv_zflag])
popdef([LD_ZFLAG])
pushdef([LD_ZFLAG], [$1])
pushdef([cv_zflag], [sxe_cv_ld__z_]translit(LD_ZFLAG,[-.=],[___]))
- SXE_CHECK_LINKER_FLAGS([-z ]LD_ZFLAG[])
-
-dnl if test "$GCC" = "yes"; then
-dnl if test "($CC -Xlinker --help 2>&1 | \
-dnl grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 ) "; then
-dnl cv_zflag="yes"
-dnl else
-dnl cv_zflag="no"
-dnl fi
-dnl elif test -n "$LD"; then
-dnl if test "($LD --help 2>&1 | \
-dnl grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 )"; then
-dnl cv_zflag="yes"
-dnl else
-dnl cv_zflag="no"
-dnl fi
-dnl else
-dnl cv_zflag="no"
-dnl fi
+ if test "$GCC" = "yes"; then
+ if test "($CC -Xlinker --help 2>&1 | \
+ grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 ) "; then
+ cv_zflag="yes"
+ else
+ cv_zflag="no"
+ fi
+ elif test -n "$LD"; then
+ if test "($LD --help 2>&1 | \
+ grep \"-z []LD_ZFLAG[]\" > /dev/null 2>&1 )"; then
+ cv_zflag="yes"
+ else
+ cv_zflag="no"
+ fi
+ else
+ cv_zflag="no"
+ fi
popdef([cv_zflag])
popdef([LD_ZFLAG])
])dnl _SXE_CHECK_LD_ZFLAG
-
AC_DEFUN([SXE_CHECK_LDFLAGS], [dnl
- ## if libtool then
- case "${LD}" in
- *"libtool"*)
- XFLAG="-XCClinker"
- ;;
- *"ld"*)
- ## no XFLAG needed
- ;;
- *)
- XFLAG="-Xlinker"
- ;;
- esac
+ AC_REQUIRE([SXE_CHECK_COMPILER_XFLAG])
## relocation
SXE_CHECK_LD_ZFLAG([combreloc])
SXE_CHECK_LD_ZFLAG([lazy])
SXE_CHECK_LD_ZFLAG([now])
- ## icc related
- ## default flags for needed features
- SXE_CHECK_LINKER_FLAGS([-static-intel], [
- ldflags="${ldflags} ${XFLAG} -static-intel"])
- SXE_CHECK_LINKER_FLAGS([-static-libgcc], [
- ldflags="${ldflags} ${XFLAG} -static-libgcc"])
-
LDFLAGS="${ldflags} ${ac_cv_env_LDFLAGS_value}"
AC_MSG_CHECKING([for preferred LDFLAGS])
AC_MSG_RESULT([${LDFLAGS}])