1AC_INIT([zziplib.spec]) 2AC_PREREQ(2.61) 3AC_COPYRIGHT([Guido Draheim <guido@gmx.de> for ZZipLib.SF.net]) 4AC_REVISION($Revision: 1.15 $) 5AC_CONFIG_AUX_DIR([uses]) 6AC_CONFIG_MACRO_DIR([m4]) 7# ======================================================================= 8AC_CANONICAL_SYSTEM 9dnl AM_ENABLE_MULTILIB([Makefile],[$host]) 10dnl AX_ENABLE_BUILDDIR 11AC_SET_DEFAULT_PATHS_SYSTEM 12# ----------------------------------------------------------------------- 13AC_ARG_ENABLE([thread-safe], 14AS_HELP_STRING([--disable-thread-safe],[disable thread-safe libtool option]) 15 ,,[ enable_thread_safe="yes"]) 16THREAD_SAFE="" 17test "$enable_thread_safe" = "yes" && THREAD_SAFE="-thread-safe" 18test "$enable_thread_safe" = "$host_os" && THREAD_SAFE="-thread-safe" 19AC_SUBST(THREAD_SAFE) 20if test -n "$THREAD_SAFE" ; then 21 AC_MSG_RESULT(...using thread-safe linkage) 22else 23 AC_MSG_RESULT(disabled thread-safe linkage) 24fi 25# ---------------------------------------------------------------- 26AC_MSG_CHECKING(zlib install prefix) 27AC_ARG_WITH(zlib, 28AS_HELP_STRING([--with-zlib],[zlib prefix (e.g. '$HOME/software')]) 29 ,,[with_zlib="no"]) 30if 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) 34 fi 35 with_zlib="$prefix" 36fi 37 38case ".$with_zlib" in 39 .no|.no,*) 40 AC_MSG_RESULT(none) 41 with_zlib="no, not configured" ;; 42 ./usr) 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) 48 fi 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) 52 fi 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" 60 ;; 61esac 62AC_SUBST(ZLIB_INCL) 63AC_SUBST(ZLIB_LDIR) 64# ----------------------------------------------------------------------- 65AX_SPEC_DEFAULTS 66AM_INIT_AUTOMAKE($PACKAGE,$VERSION) 67AX_CHECK_ENABLE_DEBUG() 68dnl test ".$CFLAGS" = "." && CFLAGS="" 69AC_PROG_CC 70dnl test ".$CFLAGS" = "." && test "$GCC" = "yes" && CFLAGS="-O3" 71AC_PROG_INSTALL 72AC_LIBTOOL_WIN32_DLL 73AM_PROG_LIBTOOL 74AX_SET_VERSION_INFO 75 76# ----------------------------------------------------------------------- 77AC_MSG_RESULT([creating zzip/_msvc.in via zzip/_msvc.sed of config.h.in]) 78test -d zzip || mkdir zzip 79sed -f $srcdir/zzip/_msvc.sed $srcdir/config.h.in >zzip/_msvc.in 80AC_CONFIG_HEADERS([config.h]) 81AX_PREFIX_CONFIG_H([zzip/_config.h],[zzip],[config.h]) 82AX_PREFIX_CONFIG_H([zzip/_msvc.h],[zzip],[zzip/_msvc.in]) 83AM_MAINTAINER_MODE 84 85AX_CREATE_PKGCONFIG_INFO(dnl 86[zzip/zziplib.pc], [zzip-zlib-config],[-lzzip],,[ ]) 87# ----------------------------------------------------------------------- 88AX_PAX_TAR_CREATE 89AX_PAX_TAR_EXTRACT 90AC_PATH_PROGS(PERL, perl5 perl, echo no perl found for) 91AC_PATH_PROGS(PYTHON, python3, echo no python found for) 92AC_PATH_PROGS(MKZIP, zip pkzip, :) 93AC_PATH_PROGS(XMLTO, xmlto, :) 94 95AC_C_INLINE 96AC_C_CONST 97ACX_C_RESTRICT 98AC_STDC_HEADERS 99AC_HEADER_DIRENT 100AC_CHECK_HEADERS(stdint.h unistd.h windows.h winnt.h winbase.h sys/int_types.h) 101AC_CHECK_HEADERS(sys/types.h sys/mman.h sys/stat.h sys/param.h) dnl posix'ish 102AC_CHECK_HEADERS(io.h direct.h zlib.h byteswap.h) 103AC_CHECK_HEADERS(fnmatch.h) 104AC_CHECK_FUNCS( strcasecmp strnlen strndup ) 105 106AC_TYPE_OFF_T 107AC_TYPE_SIZE_T 108dnl AC_TYPE_SSIZE_T 109AC_CHECK_TYPE(ssize_t,int) 110AC_CHECK_TYPE(off64_t,_zzip_off_t) 111AC_CHECK_TYPE(__int64,long long) 112if test "xno" = "x$ac_cv_header_stdint_h" ; then 113 AC_COMPILE_CHECK_SIZEOF([short]) 114 AC_COMPILE_CHECK_SIZEOF([int]) 115 AC_COMPILE_CHECK_SIZEOF([long]) 116 AC_COMPILE_CHECK_SIZEOF([int *]) 117fi 118AC_C_BIGENDIAN 119AX_CHECK_ALIGNED_ACCESS_REQUIRED 120dnl ------------------------------------------------------------- 121# the default is _disabled_!! anyway, result is prefixed in zzip/_config.h!! 122AC_SYS_LARGEFILE_SENSITIVE 123test ".$LARGEFILE_CFLAGS" = "." && LARGEFILE_CFLAGS="" 124AC_ARG_WITH(largefile,AC_HELP_STRING( 125 [--with-largefile],[compile as off64_t instead of 32bit off_t]) 126 ,,[with_largefile="no"]) 127if test ".$ac_cv_sys_largefile_sensitive" = ".no" ; then 128 AC_MSG_RESULT(compiles library with the only off_t seen) 129elif test ".$with_largefile" != ".no" ; then 130 AC_MSG_RESULT(compiles library as 64bit off_t variant dnl 131- and renaming some function names) 132 LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_LARGEFILE_SOURCE" 133 AC_MSG_RESULT(..adding CFLAGS $LARGEFILE_CFLAGS) 134 CFLAGS="$CFLAGS $LARGEFILE_CFLAGS" 135 AC_MSG_RESULT(..adding 64 into RELEASE_INFO for the libraries) 136 RELEASE_INFO="$RELEASE_INFO-64" 137else 138 AC_MSG_RESULT(compiles library as 32bit off_t variant dnl 139- largefile is not the default here) 140fi 141AC_SUBST(LARGEFILE_CFLAGS) 142dnl ------------------------------------------------------------- 143AC_MSG_CHECKING(for zlib being found) 144if test "_$ac_cv_header_zlib_h" != "_yes" ; then 145 AC_MSG_RESULT(dnl 146...oops: zlib.h not found - try adding some CPPFLAGS to configure call) 147 AC_MSG_RESULT(dnl 148...note: and when linkage fails you might also need to set some LDFLAGS) 149 case "$prefix" in 150 NONE|/usr) 151 AC_MSG_RESULT(dnl 152...note: both can be set by specifying the install prefix of the zlib library) 153 AC_MSG_RESULT(dnl 154...note: via --with-zlib=path ... it will test for -Ipath/include -Lpath/lib) 155 ;; 156 *) if test -d $prefix/include ; then 157 AC_MSG_RESULT(dnl 158...note: -I$prefix/include is not added to CPPFLAGS automatically and) 159 AC_MSG_RESULT(dnl 160...note: neither is -L$prefix/lib for LDFLAGS .. both will be if you specify) 161 AC_MSG_RESULT(dnl 162...note: --with-zlib to configure call, or use --with-zlib=installprefix) 163 fi 164 ;; 165 esac 166 AC_MSG_ERROR(zlib.h not found: "zlib" is required to build "$PACKAGE") 167 exit 1 168fi 169cat >conftest.c <<EOF 170#include <zlib.h> 171const char* zlib_VeRsIoN = ZLIB_VERSION "dEtEcT"; 172EOF 173ZLIB_VERSION=`(eval "$ac_cpp conftest.c") 2>/dev/null \ 174| grep zlib_VeRsIoN | sed -e 's,.*= *.,,' -e 's,. *.dEtEcT.*,,'` 175rm conftest.c 176AC_SUBST(ZLIB_VERSION) 177AC_MSG_RESULT(yes - $ZLIB_VERSION) 178# ---------------------------------------------------------------- 179AC_MSG_CHECKING(docdir default) 180AC_ARG_WITH(docdir, AC_HELP_STRING( 181 [--with-docdir],[docdir prefix (prefix/share/doc)]) 182 ,,[with_docdir="no"]) 183case "${with_docdir}" in 184 prefix/*) docdir=` echo "$withval" | sed 's/^prefix/${prefix}'` ;; 185 datadir/*) docdir=` echo "$withval" | sed 's/^datadir/${datadir}'` ;; 186 yes) docdir='${prefix}/doc' ;; 187 no) docdir='${datadir}/doc' ;; 188 /*|\\*|[a-zA-Z]:*) docdir="$with_docdir" ;; 189 *) AC_MSG_RESULT(oops) 190 AC_MSG_ERROR(bad value ${withval} for --with-docdir) 191 ;; 192esac 193AC_SUBST(docdir) 194AC_MSG_RESULT($docdir) 195# ---------------------------------------------------------------- 196AC_MSG_CHECKING(whether using debugging messages in libraries) 197AC_ARG_WITH(debug, AC_HELP_STRING( 198 [--with-debug],[debug messages in library]) 199 , [case "${withval}" in 200 yes|no) with_debug="$withval" ;; 201 *) AC_MSG_RESULT(oops) 202 AC_MSG_ERROR(bad value ${withval} for --with-debug) ;; 203 esac], [with_debug="no"]) 204test "$with_debug" != "yes" && with_debug="no" # yes or no 205test "$with_debug" = "yes" && export CFLAGS="$CFLAGS -DDEBUG" 206result="$with_debug" ; test "$result" = "yes" && result="yes, added -DDEBUG" 207AC_MSG_RESULT($result) 208if test "$with_debug" = "yes" ; then if test -n "$RELEASE_INFO" ; then 209 RELEASE_INFO="$RELEASE_INFO-dbg" 210 AC_MSG_RESULT(modified release, $RELEASE_INFO) 211fi fi 212# ---------------------------------------------------------------- 213AC_MSG_CHECKING(whether thread stack is too small for bufsiz buffers) 214 # many embedded platforms, superthreaded systems and kernel usage 215 # will severely limit the stackspace for its threads. Use _LOWSTK 216 # compile-define on those platforms. 217AC_ARG_WITH(lowstk, AC_HELP_STRING( 218 [--with-lowstk], [limited thread stack]) 219 , [case "${withval}" in 220 yes|no|auto) with_lowstk="$withval" ;; 221 *) AC_MSG_ERROR(bad value ${withval} for --with-lowstk) ;; 222 esac], [with_lowstk="auto"]) 223if test "$with_lowstk" = "auto"; then 224 case $target in 225 *-palmos-*) $with_lowstk="yes" ;; 226 esac 227fi 228test "$with_lowstk" != "yes" && with_lowstk="no" # yes or no 229test "$with_lowstk" = "yes" && CFLAGS="$CFLAGS -D_LOWSTK" 230result="$with_lowstk" ; test "$result" = "yes" && result="yes, added -D_LOWSTK" 231AC_MSG_RESULT($with_lowstk) 232# --------------------------------------------------------------- 233AC_MSG_CHECKING(whether can use mmap for file scanning) 234 # system with mmap are probably better performing an searching 235 # and parsing - atleast memory consumption is far better 236AC_ARG_ENABLE(mmap, AC_HELP_STRING( 237 [--disable-mmap],[disable mmap usage]) 238 , [case "${enableval}" in 239 yes|no|auto) enable_mmap="${enableval}" ;; 240 *) AC_MSG_RESULT(oops) 241 AC_MSG_ERROR(bad value ${enableval} for --disable-mmap) ;; 242 esac], [enable_mmap="auto"]) 243if test "$enable_mmap" = "auto" 244then 245 test "$ac_cv_header_winbase_h" && enable_mmap="yes, winbase.h" 246 test "$ac_cv_header_sys_mman_h" && enable_mmap="yes, sys/mman.h" 247fi 248case "$enable_mmap" in 249 yes|yes,*) CFLAGS="$CFLAGS -D_USE_MMAP" 250 AC_MSG_RESULT($enable_mmap, added -D_USE_MMAP) ;; 251 *) enable_mmap="no" 252 AC_MSG_RESULT(no (just a bit slower)) ;; 253esac 254# --------------------------------------------------------------- 255PKG_PROG_PKG_CONFIG 256AC_MSG_CHECKING(whether making SDL parts) 257SDL="" 258SDL_GENERATE="" 259AC_ARG_ENABLE(sdl, AC_HELP_STRING( 260 [--enable-sdl],[enable SDL usage (if present)]) 261 ,,[enable_sdl="no"]) 262if test "$enable_sdl" = "no" ; then 263 AC_MSG_RESULT([no, disabled]) 264else 265 enable_sdl1=`$PKG_CONFIG --modversion sdl 2>/dev/null` 266 if test -z "$enable_sdl1"; then 267 enable_sdl2=`$PKG_CONFIG --modversion sdl2 2>/dev/null` 268 if test -z "$enable_sdl2"; then 269 enable_sdl3=`sdl-config --version 2>/dev/null` 270 SDL_GENERATE="sdl-uninstalled.pc" 271 enable_sdl="$enable_sdl3 (sdl-config)" 272 else 273 enable_sdl="$enable_sdl2 (pkgconfig sdl2)" 274 fi 275 else 276 enable_sdl="$enable_sdl1 (pkgconfig sdl)" 277 fi 278 enable_sdl="$enable_sdl." 279 case ".$enable_sdl" in 280 .1.*) AC_MSG_RESULT([yes, using SDL $enable_sdl]) 281 SDL="SDL" ;; 282 .2.*) AC_MSG_RESULT([yes, untested $enable_sdl]) 283 SDL="SDL" ;; 284 *) AC_MSG_RESULT([no, $enable_sdl]) ;; 285 esac 286 if test -n "$SDL_GENERATE"; then 287 AC_MSG_RESULT([enabled SDL generation of... $SDL_GENERATE]) 288 fi 289fi 290AC_SUBST([SDL]) 291AC_SUBST([SDL_GENERATE]) 292 293# ---------------------------------------------------------------- 294AC_MSG_CHECKING(whether using address sanitizer) 295AC_ARG_WITH(asan, AC_HELP_STRING( 296 [--with-asan],[compile with adress sanitizer]) 297 , [case "${withval}" in 298 yes|no) with_asan="$withval" ;; 299 *) AC_MSG_RESULT(oops) 300 AC_MSG_ERROR(bad value ${withval} for --with-asan) ;; 301 esac], [with_asan="no"]) 302ASAN_LIBS="" 303ASAN_CFLAGS="" 304if test ".$with_asan" = ".yes" ; then 305 ASAN_LIBS="-lasan" 306 ASAN_CFLAGS="-fsanitize=address" 307fi 308AC_MSG_RESULT([$with_asan, $ASAN_CFLAGS]) 309AC_SUBST([ASAN_LIBS]) 310AC_SUBST([ASAN_CFLAGS]) 311# --------------------------------------------------------------- 312AC_MSG_CHECKING(running extra tests on make check) 313if test "MKZIP" != ":" ; then 314 AC_MSG_RESULT(yes) 315 ZIPTESTS="" 316else 317 AC_MSG_RESULT(no) 318 ZIPTESTS="#" 319fi 320AC_SUBST(ZIPTESTS) 321# --------------------------------------------------------------- 322AC_MSG_CHECKING([link options]) 323ZZIPLIB_LDFLAGS="" 324case "$host_os" in mingw*) 325 # we may assume that the backend is gnu-ld but DLLs need full resolution 326 ZZIPLIB_LDFLAGS="${wl}-no-undefined ${wl}-export-all-symbols -mconsole" 327 RESOLVES=' ' 328;; darwin*) 329 # darwin never uses gnu-ld but the linker can do it anyway 330 ZZIPLIB_LDFLAGS="-export-dynamic" 331 RESOLVES=" # " 332;; *) 333 if test ".$can_build_shared" != ".no" ; then 334 ZZIPLIB_LDFLAGS="-export-dynamic" 335 if test ".$lt_cv_prog_gnu_ld" == ".yes" ; then 336 ZZIPLIB_LDFLAGS="${wl}--export-dynamic" 337 # TODO: that is for backward compatibility only 338 fi 339 fi 340 RESOLVES=" # " 341;; esac 342AC_MSG_RESULT([$ZZIPLIB_LDFLAGS $RESOLVES]) 343AC_SUBST([ZZIPLIB_LDFLAGS]) 344AC_SUBST([RESOLVES]) 345AC_ARG_WITH([defines], 346AS_HELP_STRING([--with-defines],[easy,harden,allow_modulo_entries]), 347 ,[with_defines="normal"]) 348 349# 350case ",$with_defines," in *,easy,*) 351 AC_MSG_RESULT([..adding CFLAGS -DZZIP_EASY]) 352 CFLAGS="$CFLAGS -DZZIP_EASY" 353;; esac 354case ",$with_defines," in *,harden,*) 355 AC_MSG_RESULT([..adding CFLAGS -DZZIP_HARDEN]) 356 CFLAGS="$CFLAGS -DZZIP_HARDEN" 357;; esac 358case ",$with_defines," in *,allow_modulo_entries,*) 359 AC_MSG_RESULT([..adding CFLAGS -DZZIP_ALLOW_MODULO_ENTRIES]) 360 CFLAGS="$CFLAGS -DZZIP_ALLOW_MODULO_ENTRIES" 361;; esac 362 363# --------------------------------------------------------------- 364AX_MAINTAINER_MODE_AUTO_SILENT 365AX_NOT_ENABLE_FRAME_POINTER 366AX_CFLAGS_WARN_ALL 367AX_CFLAGS_GCC_OPTION(-Wpointer-arith) 368AX_CFLAGS_GCC_OPTION(-Wsign-compare) 369AX_CFLAGS_GCC_OPTION(-Wmissing-declarations) 370AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement) 371AX_CFLAGS_GCC_OPTION(-Werror-implicit-function-declaration) 372AX_CFLAGS_GCC_OPTION(-Wstrict-aliasing) 373AX_CFLAGS_GCC_OPTION(-Warray-bounds) 374AX_CFLAGS_NO_WRITABLE_STRINGS 375AX_CFLAGS_STRICT_PROTOTYPES 376# --------------------------------------------------------------- 377AX_ENABLE_DEFAULT_PKGCONFIGDIR 378AX_ENABLE_DEFAULT_ACLOCALDIR 379AC_SUBST([CONFIG_FILES]) 380AC_OUTPUT([Makefile 381 zzip/Makefile zzipwrap/Makefile SDL/Makefile 382 docs/Makefile test/Makefile bins/Makefile]) 383dnl ------------------------------------------------------------- 384PATCH_LIBTOOL_ON_DARWIN_ZSH_OVERQUOTING 385PATCH_LIBTOOL_SYS_LIB_SEARCH_PATH_SPEC 386PATCH_LIBTOOL_TO_ADD_HOST_CC 387# --------------------------------------------------------------- 388echo '-----' $PACKAGE $VERSION $prefix 389$SHELL libtool --features || true 390echo "CPPFLAGS=$CPPFLAGS" 391echo "CFLAGS=$CFLAGS" 392test "$enable_mmap" != "no" && echo "enable mmap ($enable_mmap)" 393test "$enable_mmap" = "no" && echo "disable mmap ($enable_mmap)" 394test "$with_lowstk" != "no" && echo "with lowstk ($with_lowstk)" 395test "$with_lowstk" = "no" && echo "without lowstk ($with_lowstk)" 396test "$with_debug" != "no" && echo "with debug ($with_debug)" 397test "$with_debug" = "no" && echo "without debug ($with_debug)" 398# test -f ./zziplib.spec && echo warning - do not build in the source dirs 399echo '# make && make check && make install' 400