@@ -1,20 +1,32 @@ AC_DEFUN(DC_SETVERSIONSCRIPT, [ VERSIONSCRIPT="$1" + SYMFILE="$2" + + delete_symfile='0' + if test ! -f "${SYMFILE}"; then + delete_symfile='1' + + echo '' > "${SYMFILE}" + fi SAVE_LDFLAGS="${LDFLAGS}" AC_MSG_CHECKING([for how to set version script]) - for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}"; do + for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}" "-Wl,-exported_symbols_list -Wl,${SYMFILE}"; do LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}" AC_TRY_LINK([], [], [ addldflags="${tryaddldflags}" break ]) done + + if test "${delete_symfile}" = "1"; then + rm -f "${SYMFILE}" + fi if test -n "${addldflags}"; then LDFLAGS="${SAVE_LDFLAGS} ${addldflags}" AC_MSG_RESULT($addldflags) else @@ -34,14 +46,16 @@ STRIP="${OBJCOPY}" fi WEAKENSYMS='true' REMOVESYMS='true' + SYMPREFIX='' case $host_os in darwin*) - REMOVESYMS="${STRIP} -s ${SYMFILE}" + REMOVESYMS="${STRIP} -i -u -s ${SYMFILE}" + SYMPREFIX="_" ;; *) if test "x${OBJCOPY}" != "xfalse"; then WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}" REMOVESYMS="${OBJCOPY} --discard-all" @@ -51,6 +65,7 @@ ;; esac AC_SUBST(WEAKENSYMS) AC_SUBST(REMOVESYMS) + AC_SUBST(SYMPREFIX) ])