1 AC_DEFUN([DC_SETUP_STABLE_API], [ 2 VERSIONSCRIPT="$1" 3 SYMFILE="$2" 4 5 DC_FIND_STRIP_AND_REMOVESYMS([$SYMFILE]) 6 DC_SETVERSIONSCRIPT([$VERSIONSCRIPT], [$SYMFILE]) 7 ]) 8 9 10 AC_DEFUN([DC_SETVERSIONSCRIPT], [ 11 VERSIONSCRIPT="$1" 12 SYMFILE="$2" 13 TMPSYMFILE="${SYMFILE}.tmp" 14 TMPVERSIONSCRIPT="${VERSIONSCRIPT}.tmp" 15 16 echo "${SYMPREFIX}Test_Symbol" > "${TMPSYMFILE}" 17 18 echo '{' > "${TMPVERSIONSCRIPT}" 19 echo ' local:' >> "${TMPVERSIONSCRIPT}" 20 echo " ${SYMPREFIX}Test_Symbol;" >> "${TMPVERSIONSCRIPT}" 21 echo '};' >> "${TMPVERSIONSCRIPT}" 22 23 SAVE_LDFLAGS="${LDFLAGS}" 24 25 AC_MSG_CHECKING([for how to set version script]) 26 27 for tryaddldflags in "-Wl,--version-script,${TMPVERSIONSCRIPT}" "-Wl,-exported_symbols_list,${TMPSYMFILE}"; do 28 LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}" 29 AC_TRY_LINK([void Test_Symbol(void) { return; }], [], [ 30 addldflags="`echo "${tryaddldflags}" | sed 's/\.tmp$//'`" 31 32 break 33 ]) 34 done 35 36 rm -f "${TMPSYMFILE}" 37 rm -f "${TMPVERSIONSCRIPT}" 38 39 LDFLAGS="${SAVE_LDFLAGS}" 40 41 if test -n "${addldflags}"; then 42 SHOBJLDFLAGS="${SHOBJLDFLAGS} ${addldflags}" 43 44 AC_MSG_RESULT($addldflags) 45 else 46 AC_MSG_RESULT([don't know]) 47 fi 48 49 AC_SUBST(SHOBJLDFLAGS) 50 ]) 51 52 AC_DEFUN([DC_FIND_STRIP_AND_REMOVESYMS], [ 53 SYMFILE="$1" 54 55 dnl Determine how to strip executables 56 AC_CHECK_TOOLS(OBJCOPY, objcopy gobjcopy, [false]) 57 AC_CHECK_TOOLS(STRIP, strip gstrip, [false]) 58 59 if test "x${STRIP}" = "xfalse"; then 60 STRIP="${OBJCOPY}" 61 fi 62 63 WEAKENSYMS='true' 64 REMOVESYMS='true' 65 SYMPREFIX='' 66 67 case $host_os in 68 darwin*) 69 SYMPREFIX="_" 70 REMOVESYMS="${STRIP} -u -x" 71 ;; 72 *) 73 if test "x${OBJCOPY}" != "xfalse"; then 74 WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}" 75 REMOVESYMS="${OBJCOPY} --discard-all" 76 elif test "x${STRIP}" != "xfalse"; then 77 REMOVESYMS="${STRIP} -x" 78 fi 79 ;; 80 esac 81 82 AC_SUBST(WEAKENSYMS) 83 AC_SUBST(REMOVESYMS) 84 AC_SUBST(SYMPREFIX) 85 ]) |