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