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 | ||
f74f5f43 SE |
5 | AC_INIT(secnet,0.1.16+,secnet@chiark.greenend.org.uk) |
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 | ||
14 | AC_PROG_MAKE_SET | |
15 | AC_PROG_CC | |
974d0468 | 16 | AC_PROG_INSTALL |
2fe58dfd SE |
17 | AC_PATH_PROG(RM,rm) |
18 | AC_STDC_HEADERS | |
f74f5f43 SE |
19 | AC_CHECK_HEADERS([stdint.h inttypes.h]) |
20 | AC_CHECK_HEADERS([net/if.h net/route.h]) | |
21 | AC_CHECK_HEADERS([sys/socket.h]) | |
22 | AC_CHECK_HEADERS([linux/if.h], [], [], | |
23 | [#if HAVE_SYS_SOCKET_H | |
24 | # include <sys/socket.h> | |
25 | #endif | |
26 | ]) | |
27 | AC_CHECK_HEADERS([stropts.h sys/sockio.h net/if_tun.h]) | |
2fe58dfd | 28 | AC_C_BIGENDIAN |
8dea8d37 SE |
29 | AC_CHECK_SIZEOF(unsigned long long) |
30 | AC_CHECK_SIZEOF(unsigned long) | |
31 | AC_CHECK_SIZEOF(unsigned int) | |
32 | AC_CHECK_SIZEOF(unsigned short) | |
33 | AC_CHECK_SIZEOF(unsigned char) | |
fe5e9cc4 | 34 | AC_PROG_CC_NO_WRITEABLE_STRINGS(WRITESTRINGS) |
2fe58dfd | 35 | |
f74f5f43 SE |
36 | AC_DEFUN([REQUIRE_HEADER],[AC_CHECK_HEADER($1,,[AC_MSG_ERROR($1 not found)])]) |
37 | ||
469fd1d9 SE |
38 | dnl the order in which libraries is checked is important |
39 | dnl eg. adns on Solaris 2.5.1 depends on -lnsl and -lsocket | |
59635212 | 40 | AC_CHECK_LIB(gmp,mpz_init_set_str) |
2fe58dfd | 41 | AC_CHECK_LIB(gmp2,mpz_init_set_str) |
469fd1d9 | 42 | AC_CHECK_LIB(gmp,__gmpz_init_set_str) |
f74f5f43 SE |
43 | REQUIRE_HEADER([gmp.h]) |
44 | dnl Would love to barf if no gmp was found, but how to test? Requiring the header will do for now. | |
2fe58dfd | 45 | AC_CHECK_LIB(fl,yywrap) |
f74f5f43 SE |
46 | if test "$ac_cv_lib_fl_yywrap" != yes; then |
47 | AC_MSG_ERROR([A compatible libfl is required]) | |
48 | fi | |
469fd1d9 | 49 | AC_CHECK_LIB(nsl,inet_ntoa) |
59635212 SE |
50 | AC_CHECK_LIB(getopt,getopt_long) |
51 | AC_CHECK_LIB(gnugetopt,getopt_long) | |
469fd1d9 SE |
52 | AC_CHECK_LIB(socket,socket) |
53 | AC_CHECK_LIB(resolv,inet_aton) | |
54 | AC_CHECK_LIB(adns,adns_init) | |
f74f5f43 | 55 | REQUIRE_HEADER([adns.h]) |
2fe58dfd | 56 | |
8dea8d37 | 57 | dnl check for getopt in standard library |
f74f5f43 SE |
58 | AC_REPLACE_FUNCS([snprintf]) |
59 | AC_CHECK_FUNC([getopt_long], [], [AC_LIBOBJ([getopt]) | |
60 | AC_LIBOBJ([getopt1])]) | |
8dea8d37 | 61 | |
8689b3a9 | 62 | AC_OUTPUT(Makefile,echo timestamp >stamp-h) |
f74f5f43 SE |
63 | |
64 | AH_TOP([ | |
65 | #ifndef _CONFIG_H | |
66 | #define _CONFIG_H | |
67 | ]) | |
68 | ||
69 | AH_BOTTOM([ | |
70 | /* -*- c -*- */ | |
71 | ||
72 | /* These used to be in config.h.bot, but are now in configure.in. */ | |
73 | ||
74 | #ifdef HAVE_INTTYPES_H | |
75 | #include <inttypes.h> | |
76 | #else | |
77 | #ifdef HAVE_STDINT_H | |
78 | #include <stdint.h> | |
79 | #else | |
80 | #if SIZEOF_UNSIGNED_LONG_LONG==8 | |
81 | typedef unsigned long long uint64_t; | |
82 | typedef long long int64_t; | |
83 | #elif SIZEOF_UNSIGNED_LONG==8 | |
84 | typedef unsigned long uint64_t; | |
85 | typedef long int64_t; | |
86 | #else | |
87 | #error I do not know what to use for a uint64_t. | |
88 | #endif | |
89 | ||
90 | /* Give us an unsigned 32-bit data type. */ | |
91 | #if SIZEOF_UNSIGNED_LONG==4 | |
92 | typedef unsigned long uint32_t; | |
93 | typedef long int32_t; | |
94 | #elif SIZEOF_UNSIGNED_INT==4 | |
95 | typedef unsigned int uint32_t; | |
96 | typedef int int32_t; | |
97 | #else | |
98 | #error I do not know what to use for a uint32_t. | |
99 | #endif | |
100 | ||
101 | /* An unsigned 16-bit data type. */ | |
102 | #if SIZEOF_UNSIGNED_INT==2 | |
103 | typedef unsigned int uint16_t; | |
104 | typedef int int16_t; | |
105 | #elif SIZEOF_UNSIGNED_SHORT==2 | |
106 | typedef unsigned short uint16_t; | |
107 | typedef short int16_t; | |
108 | #else | |
109 | #error I do not know what to use for a uint16_t. | |
110 | #endif | |
111 | ||
112 | /* An unsigned 8-bit data type */ | |
113 | #if SIZEOF_UNSIGNED_CHAR==1 | |
114 | typedef unsigned char uint8_t; | |
115 | #else | |
116 | #error I do not know what to use for a uint8_t. | |
117 | #endif | |
118 | #endif | |
119 | #endif | |
120 | ||
121 | #ifndef HAVE_SNPRINTF | |
122 | #include <stdio.h> | |
123 | #include <stdarg.h> | |
124 | #include "snprintf.h" | |
125 | #endif | |
126 | ||
127 | #ifdef __GNUC__ | |
128 | #define NORETURN(_x) void _x __attribute__ ((noreturn)) | |
129 | #define FORMAT(_a,_b,_c) __attribute__ ((format (_a,_b,_c))) | |
130 | #else | |
131 | #define NORETURN(_x) _x | |
132 | #define FORMAT(_a,_b,_c) | |
133 | #endif | |
134 | ||
135 | #endif /* _CONFIG_H */ | |
136 | ]) |