4577654 [rkeene@sledge /home/rkeene/devel/autoconf]$ cat -n versionscript.m4
 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 ])
4577655 [rkeene@sledge /home/rkeene/devel/autoconf]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2014-11-24 22:10:39