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