root/1.8.3/branches/devel/configure.in

Revision 1332, 10.5 KB (checked in by shawnw, 7 weeks ago)

Add --enable-sse3 option, support sse2 and sse3 autodetection (Based on -march).

Line 
1### autoconf file for PennMUSH
2### This file uses tests from the Autoconf Macro Archive.
3### It is available at http://autoconf-archive.cryp.to/
4### The actual tests used are in ./aclocal.m4. DO NOT AUTO-GENERATE
5### that file with aclocal.
6
7AC_INIT(configure.in)
8AC_CONFIG_HEADERS(config.h)
9AC_CANONICAL_BUILD
10
11if test "x$CFLAGS" = "x"; then
12CFLAGS="-O"
13DEFAULT_CFLAGS=yes
14else
15DEFAULT_CFLAGS=no
16fi
17
18AC_LANG(C)
19
20### Programs
21
22AC_PATH_PROG(CAT, cat)
23AC_PROG_CC
24AC_PROG_CC_C99
25AC_PATH_PROG(GDB, gdb)
26AC_PATH_PROG(CHMOD, chmod)
27AC_PATH_PROG(CP, cp)
28AC_PATH_PROG(ECHO, echo)
29AC_PROG_INSTALL
30AC_PROG_LN_S
31AC_PATH_PROG(MAKE, make)
32
33AX_WITH_PERL
34if test "${PERL+set}" != "set"; then
35   AC_MSG_ERROR([perl is required to build and run PennMUSH])
36fi
37
38AC_PATH_PROG(TEST, test)
39AC_PATH_PROG(TOUCH, touch)
40AC_PATH_PROG(RM, rm)
41AC_PATH_PROG(INDENT, indent)
42AC_PATH_PROG(CTAGS, ctags)
43AC_PATH_PROG(ETAGS, etags)
44AC_PATH_PROG(EXCTAGS, exctags)
45
46# Set good debug and warning options if using gcc
47# and custom CFLAGS aren't being used.
48# Todo: Look into the warnings setting macros in the autoconf archive,
49# maybe use them instead?
50if test $DEFAULT_CFLAGS = yes; then
51 if test "${GDB+set}" = "set"; then
52  if test "${ac_cv_c_compiler_gnu+set}" = "set"; then
53CFLAGS="-ggdb $CFLAGS -W -Wall -pedantic -Wno-comment"
54   else
55CFLAGS="-g $CFLAGS -W"
56  fi
57 else
58CFLAGS="-g $CFLAGS -W"
59 fi
60fi
61
62AX_GCC_OPTION([-fstack-protector], [], [], [
63   CFLAGS="$CFLAGS -fstack-protector"
64], [])
65
66case "${build_cpu}-${build_os}" in
67  powerpc*-darwin*)
68   AX_GCC_OPTION([-mdynamic-no-pic], [], [], [
69      CFLAGS="$CFLAGS -mdynamic-no-pic"
70   ], [])
71  ;;
72esac
73
74if test "${CTAGS+set}" != "set" -a "${EXCTAGS+set}" = "set"; then
75    CTAGS=$EXCTAGS
76fi
77
78if test "${ETAGS+set}" != "set" -a "${EXCTAGS+set}" = "set"; then
79    ETAGS="$EXCTAGS -e"
80fi
81
82AC_PATH_PROG(UPTIME, uptime)
83if test "${UPTIME+set}" = "set"; then
84 AC_DEFINE([HAVE_UPTIME])
85 AC_DEFINE_UNQUOTED([UPTIME], "$UPTIME")
86fi
87
88AC_ARG_VAR(SENDMAIL, [Path to sendmail])
89AC_PATH_PROG(SENDMAIL, sendmail)
90if test "${SENDMAIL+set}" = "set"; then
91 AC_DEFINE([HAVE_SENDMAIL])
92 AC_DEFINE_UNQUOTED([SENDMAIL], "$SENDMAIL")
93fi
94
95AC_ARG_VAR(ED, [Path to ed])
96AC_PATH_PROG(ED, ed)
97if test "${ED+set}" = "set"; then
98   AC_DEFINE([HAVE_ED])
99   AC_DEFINE_UNQUOTED([ED_PATH], "$ED -s")
100fi
101
102### Headers
103# Usually there's no need to check for standard C89 headers.
104
105# <stdint.h> is checked by this.
106AC_HEADER_STDC
107AC_HEADER_STDBOOL
108AC_HEADER_SYS_WAIT
109AC_HEADER_TIME
110AC_CHECK_HEADER(sys/time.h, [AC_DEFINE(I_SYS_TIME)])
111AC_CHECK_HEADER(arpa/inet.h, [AC_DEFINE(I_ARPA_INET)])
112AC_CHECK_HEADER(arpa/nameser.h, [AC_DEFINE(I_ARPA_NAMESER)])
113AC_CHECK_HEADER(fcntl.h, [AC_DEFINE(I_FCNTL)])
114AC_CHECK_HEADER(floatingpoint.h, [AC_DEFINE(I_FLOATINGPOINT)])
115AC_CHECK_HEADER(libintl.h, [AC_DEFINE(I_LIBINTL)])
116AC_CHECK_HEADER(malloc.h, [AC_DEFINE(I_MALLOC)])
117AC_CHECK_HEADER(netdb.h, [AC_DEFINE(I_NETDB)])
118AC_CHECK_HEADER(netinet/in.h, [AC_DEFINE(I_NETINET_IN)])
119AC_CHECK_HEADER(netinet/tcp.h, [AC_DEFINE(I_NETINET_TCP)])
120AC_CHECK_HEADER(sys/errno.h, [AC_DEFINE(I_SYS_ERRNO)])
121AC_CHECK_HEADER(sys/file.h, [AC_DEFINE(I_SYS_FILE)])
122AC_CHECK_HEADER(sys/in.h, [AC_DEFINE(I_SYS_IN)])
123AC_CHECK_HEADER(sys/mman.h, [AC_DEFINE(I_SYS_MMAN)])
124AC_CHECK_HEADER(sys/page.h, [AC_DEFINE(I_SYS_PAGE)])
125AC_CHECK_HEADER(sys/param.h, [AC_DEFINE(I_SYS_PARAM)])
126AC_CHECK_HEADER(sys/socket.h, [AC_DEFINE(I_SYS_SOCKET)])
127AC_CHECK_HEADER(sys/stat.h, [AC_DEFINE(I_SYS_STAT)])
128AC_CHECK_HEADER(sys/types.h, [AC_DEFINE(I_SYS_TYPES)])
129AC_CHECK_HEADERS([sys/un.h ieeefp.h sys/resource.h sys/event.h sys/uio.h])
130AC_CHECK_HEADERS([poll.h sys/epoll.h sys/select.h sys/inotify.h fam.h])
131### C language support
132# Only need to check C99 and GNU extensions
133
134AC_C_RESTRICT
135AC_C_INLINE
136AX_C___ATTRIBUTE__
137
138if test "$ax_cv___attribute__" = "yes"; then
139 AX_GCC_MALLOC_CALL
140fi
141
142### Types
143# Again, no need to check for standard C89 types.
144
145AC_TYPE_SSIZE_T
146AC_TYPE_PID_T
147TYPE_SOCKLEN_T
148AC_TYPE_UINT8_T
149AC_TYPE_UINT16_T
150AC_TYPE_INT32_T
151AC_TYPE_UINT32_T
152AC_TYPE_INT64_T
153AC_TYPE_UINT64_T
154AC_TYPE_INTMAX_T
155AC_TYPE_UINTMAX_T
156
157AC_CHECK_SIZEOF([int])
158AC_CHECK_SIZEOF([long])
159AC_CHECK_SIZEOF([int64_t])
160AC_CHECK_SIZEOF([intmax_t])
161AC_CHECK_SIZEOF([time_t])
162AC_CHECK_SIZEOF([void *])
163
164### Libraries
165AC_CHECK_LIB(m, sin)
166AC_CHECK_LIB(intl, gettext)
167AC_CHECK_LIB(crypt, crypt)
168LIB_SOCKET_NSL
169AC_CHECK_LIB(fam, FAMOpen)
170
171# with_ssl=set
172CHECK_SSL
173if test "$HAVE_SSL" = "yes"; then
174   AC_DEFINE(HAVE_SSL)
175fi
176
177# system libpcre
178AX_PATH_LIB_PCRE()
179if test "${PCRE_LIBS+set}" = "set"; then
180   AC_DEFINE(HAVE_PCRE)
181fi
182
183### Databases
184
185AC_ARG_ENABLE(sql, AS_HELP_STRING([--disable-sql],
186[Don't use SQL support]), enable_sql=$enableval, enable_sql=yes)
187
188if test "$enable_sql" = "yes"; then
189AC_MSG_NOTICE([Looking for supported SQL servers])
190AX_LIB_MYSQL()
191AX_LIB_POSTGRESQL()
192AX_LIB_SQLITE3()
193else
194AC_MSG_NOTICE([Skipping SQL server checks])
195fi
196
197### Functions
198AC_CHECK_FUNC(bindtextdomain, [AC_DEFINE(HAS_BINDTEXTDOMAIN)])
199AC_CHECK_FUNC(crypt, [AC_DEFINE(HAS_CRYPT)])
200AC_CHECK_FUNCS([fpsetmask fpsetround])
201AC_MSG_CHECKING([for isnormal])
202AC_LINK_IFELSE([
203#include <math.h>
204int main(void) {
205 return !isnormal(1.0);
206}
207],
208[AC_MSG_RESULT(yes)]
209[AC_DEFINE(HAVE_ISNORMAL)],
210AC_MSG_RESULT(no))
211
212AC_CHECK_FUNC(gai_strerror, [AC_DEFINE(HAS_GAI_STRERROR)])
213AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAS_GETADDRINFO)])
214AC_CHECK_FUNC(getdate, [AC_DEFINE(HAS_GETDATE)])
215AC_CHECK_FUNC(gethostbyname2, [AC_DEFINE(HAS_GETHOSTBYNAME2)])
216AC_CHECK_FUNC(getnameinfo, [AC_DEFINE(HAS_GETNAMEINFO)])
217AC_CHECK_FUNC(getpagesize, [AC_DEFINE(HAS_GETPAGESIZE)])
218AC_CHECK_FUNC(getrlimit, [AC_DEFINE(HAS_GETRLIMIT)])
219AC_CHECK_FUNC(getrusage, [AC_DEFINE(HAS_GETRUSAGE)])
220AC_CHECK_FUNCS([gettext getpid getppid])
221AC_CHECK_FUNC(inet_pton, [AC_DEFINE(HAS_INET_PTON)])
222AC_CHECK_FUNC(setitimer, [AC_DEFINE(HAS_ITIMER)])
223AC_CHECK_FUNC(setlocale, [AC_DEFINE(HAS_SETLOCALE)])
224AC_FUNC_FORK
225AC_CHECK_FUNCS([setsid setpgid setpgrp])
226if test $ac_cv_func_setpgrp = yes; then
227AC_FUNC_SETPGRP
228fi
229AC_CHECK_FUNCS([cbrt log2 round imaxdiv])
230AC_CHECK_FUNCS([getuid geteuid seteuid getpriority setpriority])
231AC_CHECK_FUNCS([socketpair sigaction sigprocmask posix_memalign writev])
232AC_CHECK_FUNCS([fcntl pselect poll ppoll pollts kqueue epoll_ctl inotify_init])
233AC_CHECK_FUNCS([pread pwrite posix_fadvise posix_fallocate])
234
235AC_FUNC_SNPRINTF
236if test "x$ac_cv_have_working_snprintf" = xyes; then
237AC_DEFINE(HAS_SNPRINTF)
238fi
239if test "x$ac_cv_have_working_vsnprintf" = xyes; then
240AC_DEFINE(HAS_VSNPRINTF)
241fi
242AC_CHECK_FUNCS(_vsnprintf_s)
243
244AC_CHECK_FUNCS([strcasecmp strncasecmp _stricmp _strnicmp strdup])
245AC_FUNC_STRCOLL
246AC_CHECK_FUNCS([strxfrm _strncoll _stricoll _strnicoll strchrnul])
247AC_CHECK_FUNC(sysconf, [AC_DEFINE(HAS_SYSCONF)])
248AC_CHECK_FUNC(textdomain, [AC_DEFINE(HAS_TEXTDOMAIN)])
249
250AC_CHECK_FUNCS(waitpid)
251
252if test $ac_cv_func_waitpid = no; then
253
254AC_CHECK_FUNCS([wait3 wait])
255AC_MSG_CHECKING([for union wait])
256AC_CHECK_TYPES([union wait], [AC_DEFINE(UNION_WAIT)
257 AC_MSG_RESULT(yes)], AC_MSG_RESULT(no),
258 [AC_INCLUDES_DEFAULT
259 #ifdef I_SYS_WAIT
260 #include <sys/wait.h>
261 #endif
262 ])
263
264fi
265
266
267### Variables, constants, defines and other misc. stuff
268
269AC_CHECK_DECLS(h_errno, [AC_DEFINE(HAVE_H_ERRNO)],,[AC_INCLUDES_DEFAULT
270#ifdef I_NETDB
271#include <netdb.h>
272#endif
273])
274
275AC_CHECK_TYPES([struct sockaddr_in6], [AC_DEFINE(HAVE_SOCKADDR_IN6)],,
276[AC_INCLUDES_DEFAULT
277#ifdef I_NETINET_IN
278#include <netinet/in.h>
279#endif
280])
281
282# Will toupper()ing an already uppercase character be a problem?
283AC_MSG_CHECKING([if it is safe to toupper uppers])
284AC_TRY_COMPILE(
285[#include <ctype.h>],
286[
287if (toupper('A') == 'A')
288    return 0;
289else
290    return 1;
291], ac_safe_toupper=yes, ac_safe_toupper=no)
292AC_MSG_RESULT([$ac_safe_toupper])
293if test "x$ac_safe_toupper" = xyes; then
294    AC_DEFINE(HAVE_SAFE_TOUPPER)
295fi
296
297
298
299# Which flavor of child killing to use? Prefer SIGCHLD.
300
301AC_CHECK_DECLS(SIGCHLD, [AC_DEFINE(HAVE_SIGCHLD)],,[AC_INCLUDES_DEFAULT
302#include <signal.h>
303])
304
305AC_CHECK_DECLS(SIGCLD, [AC_DEFINE(HAVE_SIGCLD)],,[AC_INCLUDES_DEFAULT
306#include <signal.h>
307])
308
309
310### Files
311AC_CHECK_FILE(/dev/urandom, [AC_DEFINE(HAS_DEV_URANDOM)])
312
313### Misc features
314AC_ARG_ENABLE(ipv6,  AS_HELP_STRING([--disable-ipv6],
315      [Don't use IPv6 networking]), enable_ipv6=$enableval, enable_ipv6=yes)
316
317if test "$enable_ipv6" = "no"; then
318AC_DEFINE(FORCE_IPV4)
319fi
320
321AC_ARG_ENABLE(nls, AS_HELP_STRING([--disable-nls],
322  [Don't use message-translation]), enable_nls=$enableval, enable_nls=yes)
323
324if test "$enable_nls" = "no"; then
325AC_DEFINE(DONT_TRANSLATE)
326fi
327
328AC_ARG_ENABLE(info_slave, AS_HELP_STRING([--disable-info_slave],
329              [Don't use a separate process for hostname lookups]),
330              enable_info_slave=$enableval, enable_info_slave=yes)
331if test "$enable_info_slave" = yes; then
332   AC_SUBST(INFO_SLAVE_TARGET, info_slave)
333   AC_DEFINE(INFO_SLAVE)
334fi
335
336AC_ARG_ENABLE(sse2, AS_HELP_STRING([--enable-sse2],
337  [Use SSE2 instructions (Requires a CPU that supports SSE2)]))
338AC_ARG_ENABLE(sse3, AS_HELP_STRING([--enable-sse3],
339  [Use SSE3 instructions (Requires a CPU that supports SSE3)]))
340AC_ARG_ENABLE(altivec, AS_HELP_STRING([--enable-altivec],
341  [Use PowerPC Altivec instructions (Requires a CPU that supports Altivec)]))
342
343if test "$enable_sse2" = yes; then
344   AC_DEFINE(HAVE_SSE2)
345   CFLAGS="$CFLAGS -msse2"
346fi
347
348if test "$enable_sse3" = yes; then
349   AC_DEFINE(HAVE_SSE2)
350   AC_DEFINE(HAVE_SSE3)
351   CFLAGS="$CFLAGS -msse2 -msse3"
352fi
353
354if test "$enable_altivec" = yes; then
355   AC_DEFINE(HAVE_ALTIVEC)
356   CFLAGS="$CFLAGS -maltivec -faltivec"
357fi
358
359### Output
360
361if test ${PCRE_LIBS+set} = set; then
362   which_pcre="System"
363else
364   which_pcre="Local (Consider getting your sysadmin to install pcre)"
365fi
366
367
368echo "Configuration summary:"
369echo "* Compiler: $CC"
370echo "* Compiler flags: $CFLAGS"
371echo "* PCRE: $which_pcre"
372if test "$enable_sql" = yes; then
373 sql_servers=""
374 if test "$found_mysql" = yes; then
375  sql_servers+="MySQL "
376 fi
377 if test "$found_postgresql" = yes; then
378  sql_servers+="Postgres "
379 fi
380 if test "$found_sqlite" = yes; then
381  sql_servers+="Sqlite3 "
382 fi
383 echo "* SQL support: ${sql_servers:-No}"
384else
385 echo "* SQL support: No"
386fi
387
388if test "$HAVE_SSL" = yes; then
389 echo "* SSL support: Yes"
390else
391 echo "* SSL support: No"
392fi
393
394if test "$enable_info_slave" = yes; then
395   echo "* Info slave will be used for hostname lookups."
396else
397   echo "* Hostname lookups will be done by the mush process."
398fi
399
400if test "$enable_nls" = yes -a "${ac_cv_lib_intl_gettext:+set}" = set; then
401   echo "* Translation support: Yes"
402else
403   echo "* Translation support: No"
404fi
405
406if test "$enable_ipv6" = yes; then
407  echo "* IPv6 sockets will be used if possible."
408else
409  echo "* Sockets are limited to IPv4"
410fi
411
412
413
414AC_CONFIG_FILES([Makefile src/Makefile])
415AC_CONFIG_FILES([game/txt/compose.sh], [chmod +x game/txt/compose.sh])
416AC_CONFIG_FILES([test/alltests.sh], [chmod +x test/alltests.sh])
417AC_OUTPUT
418
Note: See TracBrowser for help on using the browser.