source: zzuf/trunk/configure.ac @ 4656

Last change on this file since 4656 was 4656, checked in by sam, 4 years ago

CreateFile?() diversion proof of concept.

File size: 6.8 KB
Line 
1# $Id: configure.ac 98 2006-09-22 16:27:37Z sam $
2
3AC_INIT(zzuf, 0.13)
4AC_CONFIG_AUX_DIR(.auto)
5AM_CONFIG_HEADER(config.h)
6AM_INIT_AUTOMAKE([no-define tar-ustar])
7
8AC_PREREQ(2.50)
9
10AM_PROG_CC_C_O
11AC_PROG_CPP
12AC_PROG_LIBTOOL
13
14AC_C_INLINE
15AC_C_FUNC
16
17# Library suffix
18AC_MSG_CHECKING(for libzzuf full name)
19case "$shrext_cmds" in
20  "") SONAME="libzzuf.so" ;;
21  *) eval SONAME="libzzuf$shrext_cmds" ;;
22esac
23AC_MSG_RESULT($SONAME)
24AC_DEFINE_UNQUOTED(SONAME, "$SONAME", [Define to the libzzuf full name])
25
26# Optimizations
27AC_TRY_CFLAGS(-g -O2, CFLAGS="${CFLAGS} -g -O2")
28# Code qui fait des warnings == code de porc == deux baffes dans ta gueule
29AC_TRY_CFLAGS(-Wall, CFLAGS="${CFLAGS} -Wall")
30AC_TRY_CFLAGS(-W, CFLAGS="${CFLAGS} -W")
31AC_TRY_CFLAGS(-Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare, CFLAGS="${CFLAGS} -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare")
32
33case "${host_os}" in
34  *mingw32*)
35    DLL_LDFLAGS="-Wl,-l,imagehlp" # Trick libtool here
36    WINSOCK2_LIBS="-lws2_32"
37    ac_cv_func_recv=yes
38    ac_cv_func_recvfrom=yes
39    ac_cv_func_socket=yes
40    ac_cv_func_accept=yes
41    ac_cv_func_bind=yes
42    ac_cv_func_connect=yes
43    ;;
44esac
45AC_SUBST(WINSOCK2_LIBS)
46AC_SUBST(DLL_LDFLAGS)
47
48AC_CHECK_HEADERS(windows.h winsock2.h io.h process.h unistd.h inttypes.h stdint.h getopt.h libc.h malloc.h dlfcn.h regex.h sys/cdefs.h sys/socket.h netinet/in.h arpa/inet.h sys/uio.h aio.h sys/mman.h sys/wait.h sys/resource.h sys/time.h endian.h mach/task.h)
49
50AC_CHECK_FUNCS(setenv waitpid setrlimit gettimeofday fork kill pipe _pipe)
51AC_CHECK_FUNCS(dup dup2 ftello fseeko _IO_getc getline getdelim fgetln map_fd memalign posix_memalign aio_read accept bind connect socket readv pread recv recvfrom recvmsg mmap valloc sigaction getpagesize)
52AC_CHECK_FUNCS(getc_unlocked getchar_unlocked fgetc_unlocked fread_unlocked fgets_unlocked)
53AC_CHECK_FUNCS(__getdelim __srefill __filbuf __srget __uflow)
54AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 freopen64 ftello64 fseeko64 fsetpos64)
55AC_CHECK_FUNCS(__open64 __lseek64 __fopen64 __freopen64 __ftello64 __fseeko64 __fsetpos64)
56AC_CHECK_FUNCS(__fgets_chk __fgets_unlocked_chk __fread_chk __fread_unlocked_chk __read_chk __recv_chk __recvfrom_chk)
57AC_CHECK_FUNCS(CreateFile)
58
59AC_CHECK_TYPES(sighandler_t, [], [],
60  [#define _GNU_SOURCE
61   #include <signal.h>])
62AC_CHECK_TYPES(sig_t, [], [],
63  [#include <signal.h>])
64AC_CHECK_TYPES(socklen_t, [], [],
65  [#include <sys/types.h>
66   #include <sys/socket.h>])
67
68AC_MSG_CHECKING(for connect() second argument)
69AC_TRY_COMPILE([#include <sys/types.h>
70                #include <sys/socket.h>],
71 [#if defined HAVE_SOCKLEN_T
72  int connect(int, const struct sockaddr *, socklen_t);
73  #else
74  int connect(int, const struct sockaddr *, int);
75  #endif],
76 [AC_MSG_RESULT(const struct sockaddr *)
77  AC_DEFINE(CONNECT_USES_STRUCT_SOCKADDR, 1, [Define to 1 if connect() uses struct sockaddr.])],
78 [AC_MSG_RESULT(const void *)])
79
80AC_MSG_CHECKING(for read() prototype)
81AC_TRY_COMPILE([#define _INCLUDE_POSIX_SOURCE
82                #include <unistd.h>],
83 [ssize_t read(int fd, void *buf, size_t count);],
84 [AC_MSG_RESULT(ssize_t read(... size_t);)
85  AC_DEFINE(READ_USES_SSIZE_T, 1, [Define to 1 if read() uses ssize_t.])],
86 [AC_MSG_RESULT(int read(... unsigned int);)])
87
88AC_MSG_CHECKING(for recv() return value)
89ac_v_recv_t="int"
90AC_TRY_COMPILE([#define _XOPEN_SOURCE_EXTENDED
91                #include <sys/types.h>
92                #include <sys/socket.h>],
93 [ssize_t recv(int s, void *buf, size_t len, int flags);],
94 [ac_v_recv_t="ssize_t"])
95AC_MSG_RESULT($ac_v_recv_t)
96AC_DEFINE_UNQUOTED(RECV_T, $ac_v_recv_t, [Define to the recv() return type])
97
98AC_MSG_CHECKING([for _IO_read_ptr and _IO_read_end in FILE (glibc-style)])
99AC_TRY_COMPILE([#include <stdio.h>],
100 [FILE *fp; fp->_IO_read_ptr++; fp->_IO_read_end++],
101 [ac_cv_have_glibc_file=yes],
102 [ac_cv_have_glibc_file=no])
103AC_MSG_RESULT($ac_cv_have_glibc_file)
104if test "$ac_cv_have_glibc_file" != "no"; then
105  AC_DEFINE(HAVE_GLIBC_FILE, 1, [Define to 1 if FILE has glibc-style members])
106fi
107
108AC_MSG_CHECKING([for _bf._base, _r and _p in FILE (FreeBSD-style)])
109AC_TRY_COMPILE([#include <stdio.h>],
110 [FILE *fp; fp->_bf._base++; fp->_r++; fp->_p++],
111 [ac_cv_have_freebsd_file=yes],
112 [ac_cv_have_freebsd_file=no])
113AC_MSG_RESULT($ac_cv_have_freebsd_file)
114if test "$ac_cv_have_freebsd_file" != "no"; then
115  AC_DEFINE(HAVE_FREEBSD_FILE, 1, [Define to 1 if FILE has FreeBSD-style members])
116fi
117
118AC_MSG_CHECKING([for _base, _cnt and _ptr in FILE (Solaris-style)])
119AC_TRY_COMPILE([#include <stdio.h>],
120 [FILE *fp; fp->_base++; fp->_cnt++; fp->_ptr++],
121 [ac_cv_have_solaris_file=yes],
122 [ac_cv_have_solaris_file=no])
123AC_MSG_RESULT($ac_cv_have_solaris_file)
124if test "$ac_cv_have_solaris_file" != "no"; then
125  AC_DEFINE(HAVE_SOLARIS_FILE, 1, [Define to 1 if FILE has Solaris-style members])
126fi
127
128dnl  On HP-UX, fpos64_t == int64_t, but on Linux it's a compound object.
129AC_MSG_CHECKING(how to access fpos64_t x)
130ac_v_fpos64_t="unknown"
131AC_TRY_COMPILE(
132 [#define _LARGEFILE64_SOURCE
133  #define _LARGEFILE_SOURCE
134  #include <stdio.h>],
135 [fpos64_t x; long long int y = x.__pos;],
136 [ac_v_fpos64_t="(x).__pos"])
137AC_TRY_COMPILE(
138 [#define _LARGEFILE64_SOURCE
139  #define _LARGEFILE_SOURCE
140  #include <stdio.h>],
141 [fpos64_t x; long long int y = (long long int)x;],
142 [ac_v_fpos64_t="(x)"])
143AC_MSG_RESULT($ac_v_fpos64_t)
144AC_DEFINE_UNQUOTED(FPOS_CAST(x), $ac_v_fpos64_t, [Define to a macro for accessing an fpos64_t variable])
145
146AC_MSG_CHECKING(for pragma INIT/FINI)
147AC_TRY_COMPILE([],
148 [#pragma INIT "my_init"
149  void my_init(void)],
150 [AC_MSG_RESULT(yes)
151  AC_DEFINE(HAVE_PRAGMA_INIT, 1, [Define to 1 if you have pragma INIT])],
152 [AC_MSG_RESULT(no)])
153
154AC_MSG_CHECKING(for __printf__ attribute)
155ac_v_attribute_printf=""
156AC_TRY_COMPILE([],
157 [extern void foo(const char *, ...)
158     __attribute__((__format__(__printf__, 1, 2)));],
159 [AC_MSG_RESULT(yes)
160  ac_v_attribute_printf="__attribute__((__format__(__printf__, x, y)))"],
161 [AC_MSG_RESULT(no)])
162AC_DEFINE_UNQUOTED(ATTRIBUTE_PRINTF(x,y), $ac_v_attribute_printf, [Define to the __printf__ attribute if present])
163
164ac_cv_have_getopt_long="no"
165AC_CHECK_FUNCS(getopt_long,
166 [ac_cv_have_getopt_long="yes"],
167 [AC_CHECK_LIB(gnugetopt, getopt_long,
168   [ac_cv_have_getopt_long="yes"
169    GETOPT_LIBS="${GETOPT_LIBS} -lgnugetopt"])])
170if test "$ac_cv_have_getopt_long" != "no"; then
171  AC_DEFINE(HAVE_GETOPT_LONG, 1, Define to 1 if you have the `getopt_long' function.)
172fi
173AM_CONDITIONAL(NEED_GETOPT_LONG, test "$ac_cv_have_getopt_long" = "no")
174AC_SUBST(GETOPT_LIBS)
175
176AC_CHECK_LIB(m, log, [MATH_LIBS="-lm"])
177AC_SUBST(MATH_LIBS)
178AC_CHECK_LIB(dl, dlopen, [DL_LIBS="-ldl"])
179AC_SUBST(DL_LIBS)
180
181AC_CONFIG_FILES([
182  Makefile
183  src/Makefile
184  doc/Makefile
185  test/Makefile
186])
187AC_CONFIG_FILES([
188  doc/zzat.1
189  doc/zzuf.1
190  doc/libzzuf.3
191])
192AC_OUTPUT
193
Note: See TracBrowser for help on using the repository browser.