📄 check_ld.m4
字号:
dnl SMB Build Environment LD Checksdnl -------------------------------------------------------dnl Copyright (C) Stefan (metze) Metzmacher 2004dnl Copyright (C) Jelmer Vernooij 2006dnl Released under the GNU GPLdnl -------------------------------------------------------dnlAC_PATH_PROG(PROG_LD,ld)LD=${PROG_LD}AC_PROG_LD_GNULD=""AC_SUBST(BLDSHARED)AC_SUBST(LD)AC_SUBST(SYS_LDFLAGS)AC_SUBST(LDFLAGS)# Assume non-shared by default and override below# these are the defaults, good for lots of systemsBLDSHARED="false"LD="${CC}"PICFLAG=""# allow for --with-hostld=gccAC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker],[HOSTLD=$withval],[HOSTLD=$HOSTCC])AC_MSG_CHECKING([whether to try to build shared libraries on $host_os])# and these are for particular systemscase "$host_os" in *linux*) BLDSHARED="true" SYS_LDFLAGS="-Wl,--export-dynamic" ;; *solaris*) BLDSHARED="true" if test "${GCC}" = "yes"; then if test "${ac_cv_prog_gnu_ld}" = "yes"; then SYS_LDFLAGS="-Wl,-E" fi fi ;; *sunos*) BLDSHARED="true" ;; *netbsd* | *freebsd* | *dragonfly* ) BLDSHARED="true" SYS_LDFLAGS="-Wl,--export-dynamic" ;; *openbsd*) BLDSHARED="true" SYS_LDFLAGS="-Wl,-Bdynamic" ;; *irix*) BLDSHARED="true" ;; *aix*) BLDSHARED="true" SYS_LDFLAGS="-Wl,-brtl,-bexpall,-bbigtoc" ;; *hpux*) # Use special PIC flags for the native HP-UX compiler. BLDSHARED="true" # I hope this is correct if test "$host_cpu" = "ia64"; then SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32" else SYS_LDFLAGS="-Wl,-E,+b/usr/local/lib:/usr/lib" fi ;; *osf*) BLDSHARED="true" ;; *unixware*) BLDSHARED="true" ;; *darwin*) BLDSHARED="true" ;;esacAC_MSG_RESULT($BLDSHARED)AC_MSG_CHECKING([LD])AC_MSG_RESULT([$LD])AC_MSG_CHECKING([LDFLAGS])AC_MSG_RESULT([$LDFLAGS])AC_MSG_CHECKING([SYS_LDFLAGS])AC_MSG_RESULT([$SYS_LDFLAGS])AC_SUBST(HOSTLD)AC_LIBREPLACE_STLDAC_LIBREPLACE_STLD_FLAGSAC_MSG_CHECKING([STLD])AC_MSG_RESULT([$STLD])AC_MSG_CHECKING([STLD_FLAGS])AC_MSG_RESULT([$STLD_FLAGS])AC_LD_PICFLAGAC_LD_EXPORT_DYNAMICAC_LD_SHLIBEXTAC_LD_SONAMEFLAGAC_LIBREPLACE_SHLDAC_LIBREPLACE_SHLD_FLAGSAC_LIBREPLACE_MDLDAC_LIBREPLACE_MDLD_FLAGSAC_LIBREPLACE_RUNTIME_LIB_PATH_VAR######################################################## test whether building a shared library actually worksif test $BLDSHARED = true; then AC_MSG_CHECKING([SHLD]) AC_MSG_RESULT([$SHLD]) AC_MSG_CHECKING([SHLD_FLAGS]) AC_MSG_RESULT([$SHLD_FLAGS]) AC_MSG_CHECKING([MDLD]) AC_MSG_RESULT([$MDLD]) AC_MSG_CHECKING([MDLD_FLAGS]) AC_MSG_RESULT([$MDLD_FLAGS]) AC_MSG_CHECKING([SHLIBEXT]) AC_MSG_RESULT([$SHLIBEXT]) AC_MSG_CHECKING([SONAMEFLAG]) AC_MSG_RESULT([$SONAMEFLAG]) AC_MSG_CHECKING([PICFLAG]) AC_MSG_RESULT([$PICFLAG]) AC_CACHE_CHECK([whether building shared libraries actually works], [ac_cv_shlib_works],[ ac_cv_shlib_works=no # try building a trivial shared library # TODO: also test SONAMEFLAG ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o && ${SHLD} ${SHLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o && ac_cv_shlib_works=yes rm -f shlib.${SHLIBEXT} shlib.o ]) AC_CACHE_CHECK([whether building shared modules actually works], [ac_cv_shmod_works],[ ac_cv_shmod_works=no # try building a trivial shared library ${CC} ${CFLAGS} ${PICFLAG} -c ${srcdir-.}/build/tests/shlib.c -o shlib.o && ${MDLD} ${MDLD_FLAGS} -o shlib.${SHLIBEXT} shlib.o && ac_cv_shmod_works=yes rm -f shlib.${SHLIBEXT} shlib.o ]) if test $ac_cv_shlib_works = no; then AC_MSG_ERROR(unable to build shared libraries) fi if test $ac_cv_shmod_works = no; then AC_MSG_ERROR(unable to build shared modules) fifiAC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])AC_MSG_CHECKING([if we can link using the selected flags])AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"], AC_MSG_RESULT(yes), AC_MSG_ERROR([we cannot link with the selected cc and ld flags. Aborting configure]), AC_MSG_WARN([cannot run when cross-compiling]))USESHARED=falseAC_SUBST(USESHARED)AC_ARG_ENABLE(dso,[ --enable-dso Enable using shared libraries internally (experimental)],[],[enable_dso=no])if test x"$enable_dso" = x"yes" -a x"$BLDSHARED" != x"true"; then AC_MSG_ERROR([--enable-dso: no support for shared libraries])fiif test x"$enable_dso" != x"no"; then USESHARED=$BLDSHAREDfiAC_MSG_CHECKING([if binaries will use shared libraries])AC_MSG_RESULT([$USESHARED])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -