1540949 [rkeene@sledge /home/rkeene/devel/autoconf]$ cat -n shobj.m4
  1 dnl Usage:
  2 dnl    DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
  3 dnl
  4 AC_DEFUN(DC_TEST_SHOBJFLAGS, [
  5   AC_SUBST(SHOBJFLAGS)
  6   AC_SUBST(SHOBJLDFLAGS)
  7 
  8   OLD_LDFLAGS="$LDFLAGS"
  9   SHOBJFLAGS=""
 10 
 11   LDFLAGS="$OLD_LDFLAGS $1 $2"
 12 
 13   AC_TRY_LINK([#include <stdio.h>
 14 int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
 15     LDFLAGS="$OLD_LDFLAGS"
 16     $3
 17   ])
 18 
 19   LDFLAGS="$OLD_LDFLAGS"
 20 ])
 21 
 22 AC_DEFUN(DC_GET_SHOBJFLAGS, [
 23   AC_SUBST(SHOBJFLAGS)
 24   AC_SUBST(SHOBJLDFLAGS)
 25 
 26   AC_MSG_CHECKING(how to create shared objects)
 27 
 28   if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
 29     DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
 30       DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
 31     DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
 32       DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
 33         DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
 34           DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
 35         DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
 36           DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
 37             DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress
	-Wl,-bind_at_load], [
 38               DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
 39                 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
 40                   AC_MSG_RESULT(cant)
 41                   AC_MSG_ERROR([We are unable to make shared objects.])
 42                         ])
 43               ])
 44             ])
 45           ])
 46         ])
 47           ])
 48         ])
 49       ])
 50     ])
 51       ])
 52     ])
 53   fi
 54 
 55   AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
 56 
 57   DC_SYNC_SHLIBOBJS
 58 ])
 59 
 60 AC_DEFUN(DC_SYNC_SHLIBOBJS, [
 61   AC_SUBST(SHLIBOBJS)
 62   SHLIBOBJS=""
 63   for obj in $LIB@&t@OBJS; do
 64     SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`"
 65   done
 66 ])
 67 
 68 AC_DEFUN(DC_SYNC_RPATH, [
 69   OLD_LDFLAGS="$LDFLAGS"
 70 
 71   for tryrpath in "-Wl,-rpath" "-Wl,--rpath" "-Wl,-R"; do
 72     LDFLAGS="$OLD_LDFLAGS $tryrpath -Wl,/tmp"
 73     AC_LINK_IFELSE(AC_LANG_PROGRAM([], [ return(0); ]), [
 74       rpathldflags="$tryrpath"
 75       break
 76     ])
 77   done
 78   unset tryrpath
 79 
 80   LDFLAGS="$OLD_LDFLAGS"
 81   unset OLD_LDFLAGS
 82 
 83   ADDLDFLAGS=""
 84   for opt in $LDFLAGS; do
 85     if echo "$opt" | grep '^-L' >/dev/null; then
 86       rpathdir=`echo "$opt" | sed 's@^-L *@@'`
 87       ADDLDFLAGS="$ADDLDFLAGS $rpathldflags -Wl,$rpathdir"
 88     fi
 89   done
 90   unset opt rpathldflags
 91 
 92   LDFLAGS="$LDFLAGS $ADDLDFLAGS"
 93 
 94   unset ADDLDFLAGS
 95 ])
 96 
 97 AC_DEFUN(DC_CHK_OS_INFO, [
 98     AC_CANONICAL_HOST
 99     AC_SUBST(SHOBJEXT)
100     AC_SUBST(SHOBJFLAGS)
101     AC_SUBST(SHOBJLDFLAGS)
102     AC_SUBST(CFLAGS)
103     AC_SUBST(CPPFLAGS)
104     AC_SUBST(AREXT)
105 
106     AC_MSG_CHECKING(host operating system)
107     AC_MSG_RESULT($host_os)
108 
109     SHOBJEXT="so"
110     AREXT="a"
111 
112     case $host_os in
113         darwin*)
114             SHOBJEXT="dylib"
115             ;;
116         hpux*)
117             SHOBJEXT="sl"
118             ;;
119         mingw32msvc*)
120             SHOBJEXT="dll"
121             SHOBJFLAGS="-DPIC"
122             CFLAGS="$CFLAGS -mno-cygwin -mms-bitfields"
123             CPPFLAGS="$CPPFLAGS -mno-cygwin -mms-bitfields"
124             SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a'
125             ;;
126         cygwin*)
127             SHOBJEXT="dll"
128             SHOBJFLAGS="-fPIC -DPIC"
129             CFLAGS="$CFLAGS -mms-bitfields"
130             CPPFLAGS="$CPPFLAGS -mms-bitfields"
131             SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a'
132             ;;
133     esac
134 ])
1540950 [rkeene@sledge /home/rkeene/devel/autoconf]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2011-12-21 14:08:07