from Sebastian
[sxemacs] / m4 / sxe-linker.m4
index ec8966d..06d5ac0 100644 (file)
@@ -3,6 +3,8 @@ dnl needed for emodules for one
 
 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:
@@ -10,13 +12,13 @@ dnl just like SXE_CHECK_COMPILER_FLAGS but calls the linker
        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")
@@ -37,8 +39,11 @@ AC_DEFUN([SXE_CHECK_LD_ZFLAG], [dnl
        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])
@@ -49,44 +54,30 @@ AC_DEFUN([_SXE_CHECK_LD_ZFLAG], [dnl
        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])
@@ -100,13 +91,6 @@ AC_DEFUN([SXE_CHECK_LDFLAGS], [dnl
        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}])