1AC_DEFUN(DC_PROG_GCC, [ 2 AC_SUBST(DEPEND) 3 4 if test -n "$GCC"; then 5 CFLAGS="$CFLAGS -Wall" 6 DEPEND="Makefile.dep" 7 fi 8]) 9 10AC_DEFUN(DC_CHK_URANDOM, [ 11 if test "$cross_compiling" = "no"; then 12 AC_MSG_CHECKING(to see if you have /dev/urandom) 13 if test -r "/dev/urandom"; then 14 AC_MSG_RESULT(yes) 15 AC_DEFINE([HAVE_DEV_URANDOM], [], [Have random device?]) 16 else 17 AC_MSG_RESULT(no) 18 fi 19 fi 20]) 21 22AC_DEFUN(DC_CHK_MODULE, [ 23 AC_SUBST(ALGO) 24 AC_SUBST(MODLIBS) 25 26 AC_CHECK_LIB($1, main, [ 27 ALGO="$2 $ALGO" 28 MODLIBS="-l$1 $MODLIBS" 29 AC_DEFINE($3, [], [Something]) 30 ]) 31]) 32 33AC_DEFUN(DC_CHK_MODULE_VAR, [ 34 AC_SUBST(ALGO) 35 AC_SUBST($4) 36 37 AC_CHECK_LIB($1, main, [ 38 ALGO="$2 $ALGO" 39 $4="-l$1 $(eval echo $(echo \$$4))" 40 AC_DEFINE($3, [], [Also something]) 41 ]) 42]) 43 44AC_DEFUN(DC_DO_WIN32, [ 45 AC_CHECK_HEADERS(windows.h windowsx.h winsock2.h) 46 AC_CHECK_LIB(wsock32, main, [ 47 AC_DEFINE(HAVE_LIBWSOCK32, [], [Have libwsock32]) 48 LIBS="${LIBS} -lwsock32" 49 ]) 50]) 51 52AC_DEFUN(DC_DO_NETSET, [ 53 AC_SEARCH_LIBS(socket, socket nsl ws2_32 wsock32, AC_DEFINE(HAVE_SOCKET, [], [Have socket()])) 54 AC_SEARCH_LIBS(gethostbyname, nsl ws2_32 wsock32, AC_DEFINE(HAVE_GETHOSTBYNAME, [], [Have gethostbyname()])) 55 AC_SEARCH_LIBS(inet_aton, xnet ws2_32 wsock32, AC_DEFINE(HAVE_INET_ATON, [], [Have inet_aton()]), AC_SEARCH_LIBS(inet_addr, nsl ws2_32 wsock32, AC_DEFINE(HAVE_INET_ADDR, [], [Have inet_addr()]))) 56]) 57 58 59AC_DEFUN(DC_ASK_CHKVERS, [ 60 AC_ARG_ENABLE(chkvers, [ --disable-chkvers Completely disable the ability to check for new versions], [ 61 case "$enableval" in 62 no) 63 ;; 64 *) 65 AC_DEFINE(CHECK_VERSION, [], [Check for new versions over the network?]) 66 ;; 67 esac 68 ], AC_DEFINE(CHECK_VERSION, [], [Check for new versions over the network?])) 69]) 70 71AC_DEFUN(DC_ASK_DEBIAN, [ 72 AC_ARG_ENABLE(debianupgrade, [ --enable-debianupgrade Use the Debian upgrade procedure instead of the DACT one], [ 73 case "$enableval" in 74 no) 75 ;; 76 *) 77 AC_DEFINE(DACT_DEBIAN_UPGRADE_PROC, [], [Use the Debian upgrade procedure instead of DACTs internal one]) 78 ;; 79 esac 80 ]) 81]) 82 83AC_DEFUN(DC_ASK_NETWORK, [ 84 AC_ARG_ENABLE(network, [ --disable-network Disable DACT's network activity completely], [ 85 case "$enableval" in 86 no) 87 AC_DEFINE(NO_NETWORK, [], [Disable all network support]) 88 ;; 89 *) 90 DC_DO_NETSET 91 ;; 92 esac 93 ], DC_DO_NETSET ) 94]) 95 96AC_DEFUN(DC_DO_DEBUG, [ 97 ALGO="$ALGO \$(DEBUGALGO)" 98 AC_DEFINE(DEBUG, [1], [Debug]) 99]) 100 101AC_DEFUN(DC_ASK_DEBUG, [ 102 AC_ARG_ENABLE(debug, [ --enable-debug Enable developmental code], [ 103 if test "$enable_version" != "no"; then 104 DC_DO_DEBUG 105 fi 106 ], [ 107 case "`uname -n`" in 108 rkeene | unleaded | *.saurik.com ) 109 DC_DO_DEBUG 110 ;; 111 esac 112 ]) 113]) 114 115AC_DEFUN(DC_NO_MODULE, [ 116 DEFAULT="static" 117 MODS="# " 118]) 119 120AC_DEFUN(DC_ASK_MODULE, [ 121 AC_SUBST(DEFAULT) 122 AC_SUBST(MODS) 123 AC_SUBST(NOMODS) 124 125 DC_CHK_DLOPEN 126 AC_MSG_CHECKING(to use modules) 127 AC_ARG_ENABLE(modules, [ --disable-modules Disable use of modules], [ 128 case "$enableval" in 129 no) 130 AC_MSG_RESULT(no) 131 DC_NO_MODULE 132 ;; 133 *) 134 if test "$HAVEDLOPEN" = yes; then 135 AC_MSG_RESULT(yes) 136 AC_DEFINE(USE_MODULES, [1], [Enable use of dynamically loadable modules?]) 137 NOMODS="#" 138 DEFAULT="module" 139 else 140 AC_MSG_RESULT(can't) 141 DC_NO_MODULE 142 fi 143 ;; 144 esac 145 ], [ 146 if test "$HAVEDLOPEN" = yes; then 147 AC_MSG_RESULT(yes) 148 AC_DEFINE(USE_MODULES, [1], [Enable use of dynamically loadable modules?]) 149 NOMODS="#" 150 DEFAULT="module" 151 else 152 AC_MSG_RESULT(can't) 153 DC_NO_MODULE 154 fi 155 ]) 156]) 157 158AC_DEFUN(DC_DO_TYPE, [ 159 if test -z "$ac_cv_sizeof_long"; then 160 AC_C_INLINE 161 AC_CHECK_SIZEOF(long long, 8) 162 AC_CHECK_SIZEOF(long, 4) 163 AC_CHECK_SIZEOF(int, 4) 164 AC_CHECK_SIZEOF(short, 2) 165 fi 166 FOUND=0 167 for dc_cv_loop in \$ac_cv_sizeof_long_long \$ac_cv_sizeof_int \$ac_cv_sizeof_long \$ac_cv_sizeof_short; do 168 dc_cv_size=`eval echo $dc_cv_loop` 169 dc_cv_name=`echo $dc_cv_loop | sed s/\\\$ac_cv_sizeof_//` 170 if test "$dc_cv_size" = "$3"; then 171 if test "$dc_cv_name" = "int"; then 172 AC_CHECK_TYPE($1, $2 int) 173 fi 174 if test "$dc_cv_name" = "long"; then 175 AC_CHECK_TYPE($1, $2 long) 176 fi 177 if test "$dc_cv_name" = "long_long"; then 178 AC_CHECK_TYPE($1, $2 long long) 179 fi 180 if test "$dc_cv_name" = "short"; then 181 AC_CHECK_TYPE($1, $2 short) 182 fi 183 FOUND=1 184 break 185 fi 186 done 187]) 188 189AC_DEFUN(DC_CHK_DLOPEN, [ 190 AC_CHECK_FUNC(dlopen, [ 191 AC_DEFINE(HAVE_DLOPEN, [1], [Have dlopen()?]) 192 HAVEDLOPEN=yes 193 ]) 194 if test "$ac_cv_func_dlopen" = "no"; then 195 AC_CHECK_LIB(dl, dlopen, [ 196 AC_DEFINE(HAVE_DLOPEN, [1], [Have dlopen()?]) 197 ALLMODLIBS=-ldl 198 AC_SUBST(ALLMODLIBS) 199 HAVEDLOPEN=yes 200 ]) 201 fi 202]) 203 204 205 206 207dnl Usage: 208dnl DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found) 209dnl 210AC_DEFUN(DC_TEST_SHOBJFLAGS, [ 211 AC_SUBST(SHOBJFLAGS) 212 AC_SUBST(SHOBJLDFLAGS) 213 214 OLD_LDFLAGS="$LDFLAGS" 215 SHOBJFLAGS="" 216 217 LDFLAGS="$OLD_LDFLAGS $1 $2" 218 219 AC_TRY_LINK([#include <stdio.h> 220int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [ 221 LDFLAGS="$OLD_LDFLAGS" 222 $3 223]) 224 225 LDFLAGS="$OLD_LDFLAGS" 226]) 227 228AC_DEFUN(DC_GET_SHOBJFLAGS, [ 229 AC_SUBST(SHOBJFLAGS) 230 AC_SUBST(SHOBJLDFLAGS) 231 232 AC_MSG_CHECKING(how to create shared objects) 233 234 if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then 235 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [ 236 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [ 237 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [ 238 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [ 239 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [ 240 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [ 241 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ 242 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ 243 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [ 244 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [ 245 DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [ 246 AC_MSG_RESULT(cant) 247 AC_MSG_ERROR([We are unable to make shared objects.]) 248 ]) 249 ]) 250 ]) 251 ]) 252 ]) 253 ]) 254 ]) 255 ]) 256 ]) 257 ]) 258 ]) 259 fi 260 261 AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS) 262 263 DC_SYNC_SHLIBOBJS 264]) 265 266AC_DEFUN(DC_SYNC_SHLIBOBJS, [ 267 AC_SUBST(SHLIBOBJS) 268 SHLIBOBJS="" 269 for obj in $LIB@&t@OBJS; do 270 SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`" 271 done 272]) 273 274AC_DEFUN(DC_CHK_OS_INFO, [ 275 AC_CANONICAL_HOST 276 AC_SUBST(SHOBJEXT) 277 AC_SUBST(SHOBJFLAGS) 278 AC_SUBST(SHOBJLDFLAGS) 279 AC_SUBST(CFLAGS) 280 AC_SUBST(CPPFLAGS) 281 AC_SUBST(AREXT) 282 283 AC_MSG_CHECKING(host operating system) 284 AC_MSG_RESULT($host_os) 285 286 SHOBJEXT="so" 287 AREXT="a" 288 289 case $host_os in 290 darwin*) 291 SHOBJEXT="dylib" 292 ;; 293 hpux*) 294 SHOBJEXT="sl" 295 ;; 296 mingw32msvc*) 297 SHOBJEXT="dll" 298 SHOBJFLAGS="-DPIC" 299 CFLAGS="$CFLAGS -mno-cygwin -mms-bitfields" 300 CPPFLAGS="$CPPFLAGS -mno-cygwin -mms-bitfields" 301 SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' 302 ;; 303 cygwin*) 304 SHOBJEXT="dll" 305 SHOBJFLAGS="-fPIC -DPIC" 306 CFLAGS="$CFLAGS -mms-bitfields" 307 CPPFLAGS="$CPPFLAGS -mms-bitfields" 308 SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' 309 ;; 310 311 esac 312]) 313