Commit | Line | Data |
---|---|---|
2fe58dfd SE |
1 | dnl Process this file with autoconf to produce a configure script. |
2 | ||
fe5e9cc4 SE |
3 | sinclude(ac_prog_cc_no_writeable_strings.m4) |
4 | ||
00152558 | 5 | AC_INIT(secnet,0.1.18+,secnet@chiark.greenend.org.uk) |
f74f5f43 | 6 | AC_CONFIG_SRCDIR(secnet.c) |
2fe58dfd SE |
7 | AC_CONFIG_HEADER(config.h) |
8 | ||
f74f5f43 | 9 | AC_PREREQ(2.50) |
3b83c932 | 10 | AC_REVISION($Id: configure.in,v 1.4 2002/09/09 22:05:02 steve Exp $) |
2fe58dfd SE |
11 | |
12 | AC_LANG_C | |
13 | ||
44bdf5ac RK |
14 | # If fink is on the path then it is assumed we should use it. |
15 | AC_PATH_PROG([FINK],[fink]) | |
16 | if test "x$FINK" != x; then | |
17 | finkdir=`echo $FINK|sed 's,/[[^/]]*/[[^/]]*$,,'` | |
18 | CPPFLAGS="-I$finkdir/include ${CPPFLAGS}" | |
19 | LDFLAGS="-L$finkdir/lib ${LDFLAGS}" | |
20 | fi | |
21 | ||
2fe58dfd SE |
22 | AC_PROG_MAKE_SET |
23 | AC_PROG_CC | |
974d0468 | 24 | AC_PROG_INSTALL |
2fe58dfd SE |
25 | AC_PATH_PROG(RM,rm) |
26 | AC_STDC_HEADERS | |
f74f5f43 SE |
27 | AC_CHECK_HEADERS([stdint.h inttypes.h]) |
28 | AC_CHECK_HEADERS([net/if.h net/route.h]) | |
29 | AC_CHECK_HEADERS([sys/socket.h]) | |
30 | AC_CHECK_HEADERS([linux/if.h], [], [], | |
31 | [#if HAVE_SYS_SOCKET_H | |
32 | # include <sys/socket.h> | |
33 | #endif | |
34 | ]) | |
35 | AC_CHECK_HEADERS([stropts.h sys/sockio.h net/if_tun.h]) | |
2fe58dfd | 36 | AC_C_BIGENDIAN |
8dea8d37 SE |
37 | AC_CHECK_SIZEOF(unsigned long long) |
38 | AC_CHECK_SIZEOF(unsigned long) | |
39 | AC_CHECK_SIZEOF(unsigned int) | |
40 | AC_CHECK_SIZEOF(unsigned short) | |
41 | AC_CHECK_SIZEOF(unsigned char) | |
fe5e9cc4 | 42 | AC_PROG_CC_NO_WRITEABLE_STRINGS(WRITESTRINGS) |
2fe58dfd | 43 | |
e1b81bd6 IJ |
44 | AC_ARG_ENABLE(hacky-parallel, |
45 | [AS_HELP_STRING([--enable-hacky-parallel], | |
46 | [parallelise slow cryptography (default is no)])], [ | |
47 | case "$enableval" in | |
48 | n|0|no) ;; | |
49 | y|1|yes) CFLAGS="$CFLAGS -DHACKY_PARALLEL" ;; | |
50 | *) ;; | |
51 | esac | |
52 | ]) | |
53 | ||
f74f5f43 SE |
54 | AC_DEFUN([REQUIRE_HEADER],[AC_CHECK_HEADER($1,,[AC_MSG_ERROR($1 not found)])]) |
55 | ||
469fd1d9 SE |
56 | dnl the order in which libraries is checked is important |
57 | dnl eg. adns on Solaris 2.5.1 depends on -lnsl and -lsocket | |
59635212 | 58 | AC_CHECK_LIB(gmp,mpz_init_set_str) |
2fe58dfd | 59 | AC_CHECK_LIB(gmp2,mpz_init_set_str) |
469fd1d9 | 60 | AC_CHECK_LIB(gmp,__gmpz_init_set_str) |
f74f5f43 SE |
61 | REQUIRE_HEADER([gmp.h]) |
62 | dnl Would love to barf if no gmp was found, but how to test? Requiring the header will do for now. | |
2fe58dfd | 63 | AC_CHECK_LIB(fl,yywrap) |
f74f5f43 SE |
64 | if test "$ac_cv_lib_fl_yywrap" != yes; then |
65 | AC_MSG_ERROR([A compatible libfl is required]) | |
66 | fi | |
469fd1d9 | 67 | AC_CHECK_LIB(nsl,inet_ntoa) |
469fd1d9 SE |
68 | AC_CHECK_LIB(socket,socket) |
69 | AC_CHECK_LIB(resolv,inet_aton) | |
70 | AC_CHECK_LIB(adns,adns_init) | |
f74f5f43 | 71 | REQUIRE_HEADER([adns.h]) |
2fe58dfd | 72 | |
2b8aa340 IJ |
73 | AC_MSG_NOTICE([Checking requirements for IPv6 support...]) |
74 | enable_ipv6=true | |
75 | m4_define(NO_IPV6,[enable_ipv6=false]) | |
76 | AC_CHECK_DECL(AF_INET6, [],[NO_IPV6],[#include <netinet/in.h>]) | |
77 | AC_CHECK_FUNC(adns_addr2text, [],[NO_IPV6]) | |
78 | if $enable_ipv6; then | |
79 | AC_MSG_NOTICE([Enabling IPv6 support]) | |
80 | AC_DEFINE(CONFIG_IPV6, 1, | |
81 | [Define to 1 to use IPv6 support in system and adns]) | |
82 | else | |
83 | AC_MSG_WARN([Disabling IPv6 support]) | |
84 | fi | |
85 | ||
8689b3a9 | 86 | AC_OUTPUT(Makefile,echo timestamp >stamp-h) |
f74f5f43 SE |
87 | |
88 | AH_TOP([ | |
89 | #ifndef _CONFIG_H | |
90 | #define _CONFIG_H | |
91 | ]) | |
92 | ||
93 | AH_BOTTOM([ | |
94 | /* -*- c -*- */ | |
95 | ||
96 | /* These used to be in config.h.bot, but are now in configure.in. */ | |
97 | ||
98 | #ifdef HAVE_INTTYPES_H | |
99 | #include <inttypes.h> | |
100 | #else | |
101 | #ifdef HAVE_STDINT_H | |
102 | #include <stdint.h> | |
103 | #else | |
104 | #if SIZEOF_UNSIGNED_LONG_LONG==8 | |
105 | typedef unsigned long long uint64_t; | |
106 | typedef long long int64_t; | |
107 | #elif SIZEOF_UNSIGNED_LONG==8 | |
108 | typedef unsigned long uint64_t; | |
109 | typedef long int64_t; | |
110 | #else | |
111 | #error I do not know what to use for a uint64_t. | |
112 | #endif | |
113 | ||
114 | /* Give us an unsigned 32-bit data type. */ | |
115 | #if SIZEOF_UNSIGNED_LONG==4 | |
116 | typedef unsigned long uint32_t; | |
117 | typedef long int32_t; | |
118 | #elif SIZEOF_UNSIGNED_INT==4 | |
119 | typedef unsigned int uint32_t; | |
120 | typedef int int32_t; | |
121 | #else | |
122 | #error I do not know what to use for a uint32_t. | |
123 | #endif | |
124 | ||
125 | /* An unsigned 16-bit data type. */ | |
126 | #if SIZEOF_UNSIGNED_INT==2 | |
127 | typedef unsigned int uint16_t; | |
128 | typedef int int16_t; | |
129 | #elif SIZEOF_UNSIGNED_SHORT==2 | |
130 | typedef unsigned short uint16_t; | |
131 | typedef short int16_t; | |
132 | #else | |
133 | #error I do not know what to use for a uint16_t. | |
134 | #endif | |
135 | ||
136 | /* An unsigned 8-bit data type */ | |
137 | #if SIZEOF_UNSIGNED_CHAR==1 | |
138 | typedef unsigned char uint8_t; | |
139 | #else | |
140 | #error I do not know what to use for a uint8_t. | |
141 | #endif | |
142 | #endif | |
143 | #endif | |
144 | ||
f74f5f43 SE |
145 | #ifdef __GNUC__ |
146 | #define NORETURN(_x) void _x __attribute__ ((noreturn)) | |
147 | #define FORMAT(_a,_b,_c) __attribute__ ((format (_a,_b,_c))) | |
148 | #else | |
149 | #define NORETURN(_x) _x | |
150 | #define FORMAT(_a,_b,_c) | |
151 | #endif | |
152 | ||
153 | #endif /* _CONFIG_H */ | |
154 | ]) |