1 AC_INIT([zziplib.spec])
3 AC_COPYRIGHT([Guido Draheim <guido@gmx.de> for ZZipLib.SF.net])
4 AC_REVISION($Revision: 1.15 $)
5 AC_CONFIG_AUX_DIR([uses])
6 AC_CONFIG_MACRO_DIR([m4])
7 # =======================================================================
9 dnl AM_ENABLE_MULTILIB([Makefile],[$host])
10 AX_ENABLE_BUILDDIR_UNAME
11 AC_SET_DEFAULT_PATHS_SYSTEM
12 # -----------------------------------------------------------------------
13 AC_ARG_ENABLE([thread-safe],
14 AS_HELP_STRING([--disable-thread-safe],[disable thread-safe libtool option])
15 ,,[ enable_thread_safe="yes"])
17 test "$enable_thread_safe" = "yes" && THREAD_SAFE="-thread-safe"
18 test "$enable_thread_safe" = "$host_os" && THREAD_SAFE="-thread-safe"
20 if test -n "$THREAD_SAFE" ; then
21 AC_MSG_RESULT(...using thread-safe linkage)
23 AC_MSG_RESULT(disabled thread-safe linkage)
25 # ----------------------------------------------------------------
26 AC_MSG_CHECKING(zlib install prefix)
28 AS_HELP_STRING([--with-zlib],[zlib prefix (e.g. '$HOME/software')])
30 if test "${with_zlib}" = yes ; then # choose --prefix paths
31 if test "${prefix}" = NONE ; then
32 AC_MSG_RESULT([oops, but only itself...])
33 AC_MSG_ERROR(--with-zlib requires a path argument or a --prefix path set)
41 with_zlib="no, not configured" ;;
43 AC_MSG_RESULT([oops, ignored (may try --with-zlib=/usr/.)])
44 with_zlib="no, /usr ignored" ;;
45 *) if test ! -d "$with_zlib/include" ; then
46 AC_MSG_RESULT([oops, given but...])
47 AC_MSG_ERROR("$with_zlib/include" is not a directory)
49 if test ! -d "$with_zlib/lib" ; then
50 AC_MSG_RESULT([oops, given but...])
51 AC_MSG_ERROR("$with_zlib/lib" is not a directory)
53 AC_MSG_RESULT($with_zlib)
54 ZLIB_INCL="-I$with_zlib/include"
55 ZLIB_LDIR="-L$with_zlib/lib"
56 AC_MSG_RESULT(..adding CPPFLAGS $ZLIB_INCL)
57 AC_MSG_RESULT(..adding LDFLAGS $ZLIB_LDIR)
58 CPPFLAGS="$CPPFLAGS $ZLIB_INCL"
59 LDFLAGS="$LDFLAGS $ZLIB_LDIR"
64 # -----------------------------------------------------------------------
66 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
67 dnl test ".$CFLAGS" = "." && CFLAGS=""
69 dnl test ".$CFLAGS" = "." && test "$GCC" = "yes" && CFLAGS="-O3"
75 # -----------------------------------------------------------------------
76 AC_MSG_RESULT([creating zzip/_msvc.in via zzip/_msvc.sed of config.h.in])
77 test -d zzip || mkdir zzip
78 sed -f $srcdir/zzip/_msvc.sed $srcdir/config.h.in >zzip/_msvc.in
79 AC_CONFIG_HEADERS([config.h])
80 AX_PREFIX_CONFIG_H([zzip/_config.h],[zzip],[config.h])
81 AX_PREFIX_CONFIG_H([zzip/_msvc.h],[zzip],[zzip/_msvc.in])
84 AX_CREATE_PKGCONFIG_INFO(dnl
85 [zzip/zziplib.pc], [zzip-zlib-config],[-lzzip],,[ ])
86 # -----------------------------------------------------------------------
89 AC_PATH_PROGS(PERL, perl5 perl, echo no perl found for)
90 AC_PATH_PROGS(PYTHON, python, echo no python found for)
91 AC_PATH_PROGS(MKZIP, zip pkzip, :)
92 AC_PATH_PROGS(XMLTO, xmlto, :)
99 AC_CHECK_HEADERS(stdint.h unistd.h windows.h winnt.h winbase.h sys/int_types.h)
100 AC_CHECK_HEADERS(sys/types.h sys/mman.h sys/stat.h sys/param.h) dnl posix'ish
101 AC_CHECK_HEADERS(io.h direct.h zlib.h byteswap.h)
102 AC_CHECK_HEADERS(fnmatch.h)
103 AC_CHECK_FUNCS( strcasecmp strndup )
108 AC_CHECK_TYPE(ssize_t,int)
109 AC_CHECK_TYPE(off64_t,_zzip_off_t)
110 AC_CHECK_TYPE(__int64,long long)
111 AC_COMPILE_CHECK_SIZEOF(short)
112 AC_COMPILE_CHECK_SIZEOF(int)
113 AC_COMPILE_CHECK_SIZEOF(long)
115 AX_CHECK_ALIGNED_ACCESS_REQUIRED
116 dnl -------------------------------------------------------------
117 # the default is _disabled_!! anyway, result is prefixed in zzip/_config.h!!
118 AC_SYS_LARGEFILE_SENSITIVE
119 test ".$LARGEFILE_CFLAGS" = "." && LARGEFILE_CFLAGS=""
120 AC_ARG_WITH(largefile,AC_HELP_STRING(
121 [--with-largefile],[compile as off64_t instead of 32bit off_t])
122 ,,[with_largefile="no"])
123 if test ".$ac_cv_sys_largefile_sensitive" = ".no" ; then
124 AC_MSG_RESULT(compiles library with the only off_t seen)
125 elif test ".$with_largefile" != ".no" ; then
126 AC_MSG_RESULT(compiles library as 64bit off_t variant dnl
127 - and renaming some function names)
128 LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_LARGEFILE_SOURCE"
129 AC_MSG_RESULT(..adding CFLAGS $LARGEFILE_CFLAGS)
130 CFLAGS="$CFLAGS $LARGEFILE_CFLAGS"
131 AC_MSG_RESULT(..adding 64 into RELEASE_INFO for the libraries)
132 RELEASE_INFO="$RELEASE_INFO-64"
134 AC_MSG_RESULT(compiles library as 32bit off_t variant dnl
135 - largefile is not the default here)
137 AC_SUBST(LARGEFILE_CFLAGS)
138 dnl -------------------------------------------------------------
139 AC_MSG_CHECKING(for zlib being found)
140 if test "_$ac_cv_header_zlib_h" != "_yes" ; then
142 ...oops: zlib.h not found - try adding some CPPFLAGS to configure call)
144 ...note: and when linkage fails you might also need to set some LDFLAGS)
148 ...note: both can be set by specifying the install prefix of the zlib library)
150 ...note: via --with-zlib=path ... it will test for -Ipath/include -Lpath/lib)
152 *) if test -d $prefix/include ; then
154 ...note: -I$prefix/include is not added to CPPFLAGS automatically and)
156 ...note: neither is -L$prefix/lib for LDFLAGS .. both will be if you specify)
158 ...note: --with-zlib to configure call, or use --with-zlib=installprefix)
162 AC_MSG_ERROR(zlib.h not found: "zlib" is required to build "$PACKAGE")
165 cat >conftest.c <<EOF
167 const char* zlib_VeRsIoN = ZLIB_VERSION "dEtEcT";
169 ZLIB_VERSION=`(eval "$ac_cpp conftest.c") 2>/dev/null \
170 | grep zlib_VeRsIoN | sed -e 's,.*= *.,,' -e 's,. *.dEtEcT.*,,'`
172 AC_SUBST(ZLIB_VERSION)
173 AC_MSG_RESULT(yes - $ZLIB_VERSION)
174 # ----------------------------------------------------------------
175 AC_MSG_CHECKING(docdir default)
176 AC_ARG_WITH(docdir, AC_HELP_STRING(
177 [--with-docdir],[docdir prefix (prefix/share/doc)])
178 ,,[with_docdir="no"])
179 case "${with_docdir}" in
180 prefix/*) docdir=` echo "$withval" | sed 's/^prefix/${prefix}'` ;;
181 datadir/*) docdir=` echo "$withval" | sed 's/^datadir/${datadir}'` ;;
182 yes) docdir='${prefix}/doc' ;;
183 no) docdir='${datadir}/doc' ;;
184 /*|\\*|[a-zA-Z]:*) docdir="$with_docdir" ;;
185 *) AC_MSG_RESULT(oops)
186 AC_MSG_ERROR(bad value ${withval} for --with-docdir)
190 AC_MSG_RESULT($docdir)
191 # ----------------------------------------------------------------
192 AC_MSG_CHECKING(whether using debugging messages in libraries)
193 AC_ARG_WITH(debug, AC_HELP_STRING(
194 [--with-debug],[debug messages in library])
195 , [case "${withval}" in
196 yes|no) with_debug="$withval" ;;
197 *) AC_MSG_RESULT(oops)
198 AC_MSG_ERROR(bad value ${withval} for --with-debug) ;;
199 esac], [with_debug="no"])
200 test "$with_debug" != "yes" && with_debug="no" # yes or no
201 test "$with_debug" = "yes" && export CFLAGS="$CFLAGS -DDEBUG"
202 result="$with_debug" ; test "$result" = "yes" && result="yes, added -DDEBUG"
203 AC_MSG_RESULT($result)
204 if test "$with_debug" = "yes" ; then if test -n "$RELEASE_INFO" ; then
205 RELEASE_INFO="$RELEASE_INFO-dbg"
206 AC_MSG_RESULT(modified release, $RELEASE_INFO)
208 # ----------------------------------------------------------------
209 AC_MSG_CHECKING(whether thread stack is too small for bufsiz buffers)
210 # many embedded platforms, superthreaded systems and kernel usage
211 # will severely limit the stackspace for its threads. Use _LOWSTK
212 # compile-define on those platforms.
213 AC_ARG_WITH(lowstk, AC_HELP_STRING(
214 [--with-lowstk], [limited thread stack])
215 , [case "${withval}" in
216 yes|no|auto) with_lowstk="$withval" ;;
217 *) AC_MSG_ERROR(bad value ${withval} for --with-lowstk) ;;
218 esac], [with_lowstk="auto"])
219 if test "$with_lowstk" = "auto"; then
221 *-palmos-*) $with_lowstk="yes" ;;
224 test "$with_lowstk" != "yes" && with_lowstk="no" # yes or no
225 test "$with_lowstk" = "yes" && CFLAGS="$CFLAGS -D_LOWSTK"
226 result="$with_lowstk" ; test "$result" = "yes" && result="yes, added -D_LOWSTK"
227 AC_MSG_RESULT($with_lowstk)
228 # ---------------------------------------------------------------
229 AC_MSG_CHECKING(whether can use mmap for file scanning)
230 # system with mmap are probably better performing an searching
231 # and parsing - atleast memory consumption is far better
232 AC_ARG_ENABLE(mmap, AC_HELP_STRING(
233 [--disable-mmap],[disable mmap usage])
234 , [case "${enableval}" in
235 yes|no|auto) enable_mmap="${enableval}" ;;
236 *) AC_MSG_RESULT(oops)
237 AC_MSG_ERROR(bad value ${enableval} for --disable-mmap) ;;
238 esac], [enable_mmap="auto"])
239 if test "$enable_mmap" = "auto"
241 test "$ac_cv_header_winbase_h" && enable_mmap="yes, winbase.h"
242 test "$ac_cv_header_sys_mman_h" && enable_mmap="yes, sys/mman.h"
244 case "$enable_mmap" in
245 yes|yes,*) CFLAGS="$CFLAGS -D_USE_MMAP"
246 AC_MSG_RESULT($enable_mmap, added -D_USE_MMAP) ;;
248 AC_MSG_RESULT(no (just a bit slower)) ;;
250 # ---------------------------------------------------------------
251 AC_MSG_CHECKING(whether making SDL parts)
254 AC_ARG_ENABLE(sdl, AC_HELP_STRING(
255 [--enable-sdl],[enable SDL usage (if present)])
257 if test "$enable_sdl" = "no" ; then
258 AC_MSG_RESULT([no, disabled])
260 enable_sdl=`pkg-config --modversion sdl 2>/dev/null`
261 if test -z "$enable_sdl"; then
262 enable_sdl=`sdl-config --version 2>/dev/null`
263 SDL_GENERATE="sdl-uninstalled.pc"
264 enable_sdl="$enable_sdl (sdl-config)"
266 enable_sdl="$enable_sdl (pkgconfig)"
268 enable_sdl="$enable_sdl."
269 case ".$enable_sdl" in
270 .1.*) AC_MSG_RESULT([yes, using SDL $enable_sdl])
272 .2.*) AC_MSG_RESULT([yes, untested $enable_sdl])
274 *) AC_MSG_RESULT([no, $enable_sdl]) ;;
276 if test -n "$SDL_GENERATE"; then
277 AC_MSG_RESULT([enabled SDL generation of... $SDL_GENERATE])
281 AC_SUBST([SDL_GENERATE])
282 # ---------------------------------------------------------------
283 AC_MSG_CHECKING(running extra tests on make check)
284 if test "MKZIP" != ":" ; then
292 # ---------------------------------------------------------------
293 AC_MSG_CHECKING([link options])
295 case "$host_os" in mingw*)
296 # we may assume that the backend is gnu-ld but DLLs need full resolution
297 ZZIPLIB_LDFLAGS="${wl}-no-undefined ${wl}-export-all-symbols -mconsole"
300 # darwin never uses gnu-ld but the linker can do it anyway
301 ZZIPLIB_LDFLAGS="-export-dynamic"
304 if test ".$can_build_shared" != ".no" ; then
305 ZZIPLIB_LDFLAGS="-export-dynamic"
306 if test ".$lt_cv_prog_gnu_ld" == ".yes" ; then
307 ZZIPLIB_LDFLAGS="${wl}--export-dynamic"
308 # TODO: that is for backward compatibility only
313 AC_MSG_RESULT([$ZZIPLIB_LDFLAGS $RESOLVES])
314 AC_SUBST([ZZIPLIB_LDFLAGS])
316 AC_ARG_WITH([defines],
317 AS_HELP_STRING([--with-defines],[easy,harden,allow_modulo_entries]),
318 ,[with_defines="normal"])
321 case ",$with_defines," in *,easy,*)
322 AC_MSG_RESULT([..adding CFLAGS -DZZIP_EASY])
323 CFLAGS="$CFLAGS -DZZIP_EASY"
325 case ",$with_defines," in *,harden,*)
326 AC_MSG_RESULT([..adding CFLAGS -DZZIP_HARDEN])
327 CFLAGS="$CFLAGS -DZZIP_HARDEN"
329 case ",$with_defines," in *,allow_modulo_entries,*)
330 AC_MSG_RESULT([..adding CFLAGS -DZZIP_ALLOW_MODULO_ENTRIES])
331 CFLAGS="$CFLAGS -DZZIP_ALLOW_MODULO_ENTRIES"
334 # ---------------------------------------------------------------
335 AX_MAINTAINER_MODE_AUTO_SILENT
336 AX_NOT_ENABLE_FRAME_POINTER
338 AX_CFLAGS_GCC_OPTION(-Wpointer-arith)
339 AX_CFLAGS_GCC_OPTION(-Wsign-compare)
340 AX_CFLAGS_GCC_OPTION(-Wmissing-declarations)
341 AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement)
342 AX_CFLAGS_GCC_OPTION(-Werror-implicit-function-declaration)
343 AX_CFLAGS_GCC_OPTION(-Wstrict-aliasing)
344 AX_CFLAGS_GCC_OPTION(-Warray-bounds)
345 AX_CFLAGS_NO_WRITABLE_STRINGS
346 AX_CFLAGS_STRICT_PROTOTYPES
347 # ---------------------------------------------------------------
348 AX_ENABLE_DEFAULT_PKGCONFIGDIR
349 AX_ENABLE_DEFAULT_ACLOCALDIR
350 AC_SUBST([CONFIG_FILES])
352 zzip/Makefile zzipwrap/Makefile SDL/Makefile
353 docs/Makefile test/Makefile bins/Makefile])
354 dnl -------------------------------------------------------------
355 PATCH_LIBTOOL_ON_DARWIN_ZSH_OVERQUOTING
356 PATCH_LIBTOOL_SYS_LIB_SEARCH_PATH_SPEC
357 PATCH_LIBTOOL_TO_ADD_HOST_CC
358 # ---------------------------------------------------------------
359 echo '-----' $PACKAGE $VERSION $prefix
360 $SHELL libtool --features || true
361 echo "CPPFLAGS=$CPPFLAGS"
362 echo "CFLAGS=$CFLAGS"
363 test "$enable_mmap" != "no" && echo "enable mmap ($enable_mmap)"
364 test "$enable_mmap" = "no" && echo "disable mmap ($enable_mmap)"
365 test "$with_lowstk" != "no" && echo "with lowstk ($with_lowstk)"
366 test "$with_lowstk" = "no" && echo "without lowstk ($with_lowstk)"
367 test "$with_debug" != "no" && echo "with debug ($with_debug)"
368 test "$with_debug" = "no" && echo "without debug ($with_debug)"
369 # test -f ./zziplib.spec && echo warning - do not build in the source dirs
370 echo '# make && make check && make install'