source: zzuf/trunk/configure.ac @ 4888

Last change on this file since 4888 was 4888, checked in by Sam Hocevar, 5 years ago

win32: update to newer mingw compiler version.

File size: 7.2 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([subdir-objects no-define tar-ustar silent-rules])
7
8AC_PREREQ(2.50)
9
10AM_PROG_CC_C_O
11AC_PROG_CPP
12AC_PROG_LIBTOOL
13
14dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
15dnl now otherwise it might be set in an obscure if statement. Same thing for
16dnl PKG_PROG_PKG_CONFIG which needs to be called first.
17AC_EGREP_CPP(yes, foo)
18PKG_PROG_PKG_CONFIG()
19
20dnl Don't let pkg-config fuck our cross-compilation environment
21m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
22if test "$build" != "$host" -a "${PKG_CONFIG_LIBDIR}" = ""; then
23  export PKG_CONFIG_LIBDIR=/dev/null
24fi
25
26AC_C_INLINE
27AC_C_FUNC
28
29# Library suffix
30AC_MSG_CHECKING(for libzzuf full name)
31case "$shrext_cmds" in
32  "") SONAME="libzzuf.so" ;;
33  *) eval SONAME="libzzuf$shrext_cmds" ;;
34esac
35AC_MSG_RESULT($SONAME)
36AC_DEFINE_UNQUOTED(SONAME, "$SONAME", [Define to the libzzuf full name])
37
38# Optimizations
39AC_TRY_CFLAGS(-g -O2, CFLAGS="${CFLAGS} -g -O2")
40# Code qui fait des warnings == code de porc == deux baffes dans ta gueule
41AC_TRY_CFLAGS(-Wall, CFLAGS="${CFLAGS} -Wall")
42AC_TRY_CFLAGS(-W, CFLAGS="${CFLAGS} -W")
43AC_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")
44
45case "${host_os}" in
46  *mingw32*)
47    DLL_LDFLAGS="-Wl,-l,imagehlp" # Trick libtool here
48    WINSOCK2_LIBS="-lws2_32"
49    ac_cv_func_recv=yes
50    ac_cv_func_recvfrom=yes
51    ac_cv_func_socket=yes
52    ac_cv_func_accept=yes
53    ac_cv_func_bind=yes
54    ac_cv_func_connect=yes
55    ;;
56esac
57AC_SUBST(WINSOCK2_LIBS)
58AC_SUBST(DLL_LDFLAGS)
59
60AC_CHECK_HEADERS(windows.h winsock2.h io.h process.h unistd.h inttypes.h stdint.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)
61
62AC_CHECK_FUNCS(setenv waitpid setrlimit gettimeofday fork kill pipe _pipe)
63AC_CHECK_FUNCS(regexec regwexec)
64AC_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)
65AC_CHECK_FUNCS(getc_unlocked getchar_unlocked fgetc_unlocked fread_unlocked fgets_unlocked)
66AC_CHECK_FUNCS(__getdelim __srefill __filbuf __srget __uflow)
67AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 freopen64 ftello64 fseeko64 fsetpos64)
68AC_CHECK_FUNCS(__open64 __lseek64 __fopen64 __freopen64 __ftello64 __fseeko64 __fsetpos64)
69AC_CHECK_FUNCS(__fgets_chk __fgets_unlocked_chk __fread_chk __fread_unlocked_chk __read_chk __recv_chk __recvfrom_chk)
70AC_CHECK_FUNCS(CreateFileA CreateFileW ReOpenFile ReadFile CloseHandle)
71AC_CHECK_FUNCS(AllocConsole AttachConsole SetConsoleMode WriteConsoleOutputA WriteConsoleOutputW)
72
73AC_CHECK_TYPES(sighandler_t, [], [],
74  [#define _GNU_SOURCE
75   #include <signal.h>])
76AC_CHECK_TYPES(sig_t, [], [],
77  [#include <signal.h>])
78AC_CHECK_TYPES(socklen_t, [], [],
79  [#include <sys/types.h>
80   #include <sys/socket.h>])
81AC_CHECK_TYPES(fpos64_t, [], [],
82  [#define _LARGEFILE64_SOURCE
83   #define _LARGEFILE_SOURCE
84   #include <stdio.h>])
85
86AC_MSG_CHECKING(for connect() second argument)
87AC_TRY_COMPILE([#include <sys/types.h>
88                #include <sys/socket.h>],
89 [#if defined HAVE_SOCKLEN_T
90  int connect(int, const struct sockaddr *, socklen_t);
91  #else
92  int connect(int, const struct sockaddr *, int);
93  #endif],
94 [AC_MSG_RESULT(const struct sockaddr *)
95  AC_DEFINE(CONNECT_USES_STRUCT_SOCKADDR, 1, [Define to 1 if connect() uses struct sockaddr.])],
96 [AC_MSG_RESULT(const void *)])
97
98AC_MSG_CHECKING(for read() prototype)
99AC_TRY_COMPILE([#define _INCLUDE_POSIX_SOURCE
100                #include <unistd.h>],
101 [ssize_t read(int fd, void *buf, size_t count);],
102 [AC_MSG_RESULT(ssize_t read(... size_t);)
103  AC_DEFINE(READ_USES_SSIZE_T, 1, [Define to 1 if read() uses ssize_t.])],
104 [AC_MSG_RESULT(int read(... unsigned int);)])
105
106AC_MSG_CHECKING(for recv() return value)
107ac_v_recv_t="int"
108AC_TRY_COMPILE([#define _XOPEN_SOURCE_EXTENDED
109                #include <sys/types.h>
110                #include <sys/socket.h>],
111 [ssize_t recv(int s, void *buf, size_t len, int flags);],
112 [ac_v_recv_t="ssize_t"])
113AC_MSG_RESULT($ac_v_recv_t)
114AC_DEFINE_UNQUOTED(RECV_T, $ac_v_recv_t, [Define to the recv() return type])
115
116AC_MSG_CHECKING([for _IO_read_ptr and _IO_read_end in FILE (glibc-style)])
117AC_TRY_COMPILE([#include <stdio.h>],
118 [FILE *fp; fp->_IO_read_ptr++; fp->_IO_read_end++],
119 [ac_cv_have_glibc_file=yes],
120 [ac_cv_have_glibc_file=no])
121AC_MSG_RESULT($ac_cv_have_glibc_file)
122if test "$ac_cv_have_glibc_file" != "no"; then
123  AC_DEFINE(HAVE_GLIBC_FILE, 1, [Define to 1 if FILE has glibc-style members])
124fi
125
126AC_MSG_CHECKING([for _bf._base, _r and _p in FILE (FreeBSD-style)])
127AC_TRY_COMPILE([#include <stdio.h>],
128 [FILE *fp; fp->_bf._base++; fp->_r++; fp->_p++],
129 [ac_cv_have_freebsd_file=yes],
130 [ac_cv_have_freebsd_file=no])
131AC_MSG_RESULT($ac_cv_have_freebsd_file)
132if test "$ac_cv_have_freebsd_file" != "no"; then
133  AC_DEFINE(HAVE_FREEBSD_FILE, 1, [Define to 1 if FILE has FreeBSD-style members])
134fi
135
136AC_MSG_CHECKING([for _base, _cnt and _ptr in FILE (Solaris-style)])
137AC_TRY_COMPILE([#include <stdio.h>],
138 [FILE *fp; fp->_base++; fp->_cnt++; fp->_ptr++],
139 [ac_cv_have_solaris_file=yes],
140 [ac_cv_have_solaris_file=no])
141AC_MSG_RESULT($ac_cv_have_solaris_file)
142if test "$ac_cv_have_solaris_file" != "no"; then
143  AC_DEFINE(HAVE_SOLARIS_FILE, 1, [Define to 1 if FILE has Solaris-style members])
144fi
145
146dnl  On HP-UX, fpos64_t == int64_t, but on Linux it's a compound object.
147AC_MSG_CHECKING(how to access fpos64_t x)
148ac_v_fpos64_t="unknown"
149AC_TRY_COMPILE(
150 [#define _LARGEFILE64_SOURCE
151  #define _LARGEFILE_SOURCE
152  #include <stdio.h>],
153 [fpos64_t x; long long int y = x.__pos;],
154 [ac_v_fpos64_t="(x).__pos"])
155AC_TRY_COMPILE(
156 [#define _LARGEFILE64_SOURCE
157  #define _LARGEFILE_SOURCE
158  #include <stdio.h>],
159 [fpos64_t x; long long int y = (long long int)x;],
160 [ac_v_fpos64_t="(x)"])
161AC_MSG_RESULT($ac_v_fpos64_t)
162AC_DEFINE_UNQUOTED(FPOS64_CAST(x), $ac_v_fpos64_t, [Define to a macro for accessing an fpos64_t variable])
163
164AC_MSG_CHECKING(for pragma INIT/FINI)
165AC_TRY_COMPILE([],
166 [#pragma INIT "my_init"
167  void my_init(void)],
168 [AC_MSG_RESULT(yes)
169  AC_DEFINE(HAVE_PRAGMA_INIT, 1, [Define to 1 if you have pragma INIT])],
170 [AC_MSG_RESULT(no)])
171
172AC_MSG_CHECKING(for __printf__ attribute)
173ac_v_attribute_printf=""
174AC_TRY_COMPILE([],
175 [extern void foo(const char *, ...)
176     __attribute__((__format__(__printf__, 1, 2)));],
177 [AC_MSG_RESULT(yes)
178  ac_v_attribute_printf="__attribute__((__format__(__printf__, x, y)))"],
179 [AC_MSG_RESULT(no)])
180AC_DEFINE_UNQUOTED(ATTRIBUTE_PRINTF(x,y), $ac_v_attribute_printf, [Define to the __printf__ attribute if present])
181
182AC_CHECK_LIB(dl, dladdr,
183 [AC_DEFINE(HAVE_DLADDR, 1, Define to 1 if you have the `dladdr' function.)])
184
185AC_CHECK_LIB(m, log, [MATH_LIBS="-lm"])
186AC_SUBST(MATH_LIBS)
187AC_CHECK_LIB(dl, dlopen, [DL_LIBS="-ldl"])
188AC_SUBST(DL_LIBS)
189
190AC_CONFIG_FILES([
191  Makefile
192  src/Makefile
193  doc/Makefile
194  test/Makefile
195])
196AC_CONFIG_FILES([
197  doc/zzat.1
198  doc/zzuf.1
199  doc/libzzuf.3
200])
201AC_OUTPUT
202
Note: See TracBrowser for help on using the repository browser.