mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
97379c5ea7
Variable-length arrays are mandatory in C99 but optional in C11. The code doesn't currently use any VLAs and it shouldn't in the future either to stay compatible with C11 without requiring any optional C11 features.
751 lines
23 KiB
Text
751 lines
23 KiB
Text
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
###############################################################################
|
|
#
|
|
# Author: Lasse Collin
|
|
#
|
|
# This file has been put into the public domain.
|
|
# You can do whatever you want with this file.
|
|
#
|
|
###############################################################################
|
|
|
|
# NOTE: Don't add useless checks. autoscan detects this and that, but don't
|
|
# let it confuse you. For example, we don't care about checking for behavior
|
|
# of malloc(), stat(), or lstat(), since we don't use those functions in
|
|
# a way that would cause the problems the autoconf macros check.
|
|
|
|
AC_PREREQ([2.64])
|
|
|
|
AC_INIT([XZ Utils], m4_esyscmd([/bin/sh build-aux/version.sh]),
|
|
[lasse.collin@tukaani.org], [xz], [http://tukaani.org/xz/])
|
|
AC_CONFIG_SRCDIR([src/liblzma/common/common.h])
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_CONFIG_HEADER([config.h])
|
|
|
|
echo
|
|
echo "$PACKAGE_STRING"
|
|
|
|
echo
|
|
echo "System type:"
|
|
# This is needed to know if assembler optimizations can be used.
|
|
AC_CANONICAL_HOST
|
|
|
|
# We do some special things on Windows (32-bit or 64-bit) builds.
|
|
case $host_os in
|
|
mingw* | cygwin*) is_w32=yes ;;
|
|
*) is_w32=no ;;
|
|
esac
|
|
AM_CONDITIONAL([COND_W32], [test "$is_w32" = yes])
|
|
|
|
# We need to use $EXEEXT with $(LN_S) when creating symlinks to
|
|
# executables. Cygwin is an exception to this, since it is recommended
|
|
# that symlinks don't have the .exe suffix. To make this work, we
|
|
# define LN_EXEEXT.
|
|
case $host_os in
|
|
cygwin) LN_EXEEXT= ;;
|
|
*) LN_EXEEXT='$(EXEEXT)' ;;
|
|
esac
|
|
AC_SUBST([LN_EXEEXT])
|
|
|
|
echo
|
|
echo "Configure options:"
|
|
AM_CFLAGS=
|
|
|
|
|
|
#############
|
|
# Debugging #
|
|
#############
|
|
|
|
AC_MSG_CHECKING([if debugging code should be compiled])
|
|
AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug], [Enable debugging code.]),
|
|
[], enable_debug=no)
|
|
if test "x$enable_debug" = xyes; then
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_DEFINE([NDEBUG], [1], [Define to 1 to disable debugging code.])
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
|
|
|
|
###########
|
|
# Filters #
|
|
###########
|
|
|
|
m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,sparc])dnl
|
|
m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,sparc])
|
|
m4_define([LZ_FILTERS], [lzma1,lzma2])
|
|
|
|
m4_foreach([NAME], [SUPPORTED_FILTERS],
|
|
[enable_filter_[]NAME=no
|
|
enable_encoder_[]NAME=no
|
|
enable_decoder_[]NAME=no
|
|
])dnl
|
|
|
|
AC_MSG_CHECKING([which encoders to build])
|
|
AC_ARG_ENABLE([encoders], AC_HELP_STRING([--enable-encoders=LIST],
|
|
[Comma-separated list of encoders to build. Default=all.
|
|
Available encoders:]
|
|
m4_translit(m4_defn([SUPPORTED_FILTERS]), [,], [ ])),
|
|
[], [enable_encoders=SUPPORTED_FILTERS])
|
|
enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'`
|
|
if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then
|
|
AC_MSG_RESULT([(none)])
|
|
else
|
|
for arg in $enable_encoders
|
|
do
|
|
case $arg in m4_foreach([NAME], [SUPPORTED_FILTERS], [
|
|
NAME)
|
|
enable_filter_[]NAME=yes
|
|
enable_encoder_[]NAME=yes
|
|
AC_DEFINE(HAVE_ENCODER_[]m4_toupper(NAME), [1],
|
|
[Define to 1 if] NAME [encoder is enabled.])
|
|
;;])
|
|
*)
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([unknown filter: $arg])
|
|
;;
|
|
esac
|
|
done
|
|
AC_MSG_RESULT([$enable_encoders])
|
|
fi
|
|
|
|
AC_MSG_CHECKING([which decoders to build])
|
|
AC_ARG_ENABLE([decoders], AC_HELP_STRING([--enable-decoders=LIST],
|
|
[Comma-separated list of decoders to build. Default=all.
|
|
Available decoders are the same as available encoders.]),
|
|
[], [enable_decoders=SUPPORTED_FILTERS])
|
|
enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'`
|
|
if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then
|
|
AC_MSG_RESULT([(none)])
|
|
else
|
|
for arg in $enable_decoders
|
|
do
|
|
case $arg in m4_foreach([NAME], [SUPPORTED_FILTERS], [
|
|
NAME)
|
|
enable_filter_[]NAME=yes
|
|
enable_decoder_[]NAME=yes
|
|
AC_DEFINE(HAVE_DECODER_[]m4_toupper(NAME), [1],
|
|
[Define to 1 if] NAME [decoder is enabled.])
|
|
;;])
|
|
*)
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([unknown filter: $arg])
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# LZMA2 requires that LZMA1 is enabled.
|
|
test "x$enable_encoder_lzma2" = xyes && enable_encoder_lzma1=yes
|
|
test "x$enable_decoder_lzma2" = xyes && enable_decoder_lzma1=yes
|
|
|
|
AC_MSG_RESULT([$enable_decoders])
|
|
fi
|
|
|
|
if test "x$enable_encoder_lzma2$enable_encoder_lzma1" = xyesno \
|
|
|| test "x$enable_decoder_lzma2$enable_decoder_lzma1" = xyesno; then
|
|
AC_MSG_ERROR([LZMA2 requires that LZMA1 is also enabled.])
|
|
fi
|
|
|
|
AM_CONDITIONAL(COND_MAIN_ENCODER, test "x$enable_encoders" != xno && test "x$enable_encoders" != x)
|
|
AM_CONDITIONAL(COND_MAIN_DECODER, test "x$enable_decoders" != xno && test "x$enable_decoders" != x)
|
|
|
|
m4_foreach([NAME], [SUPPORTED_FILTERS],
|
|
[AM_CONDITIONAL(COND_FILTER_[]m4_toupper(NAME), test "x$enable_filter_[]NAME" = xyes)
|
|
AM_CONDITIONAL(COND_ENCODER_[]m4_toupper(NAME), test "x$enable_encoder_[]NAME" = xyes)
|
|
AM_CONDITIONAL(COND_DECODER_[]m4_toupper(NAME), test "x$enable_decoder_[]NAME" = xyes)
|
|
])dnl
|
|
|
|
# The so called "simple filters" share common code.
|
|
enable_filter_simple=no
|
|
enable_encoder_simple=no
|
|
enable_decoder_simple=no
|
|
m4_foreach([NAME], [SIMPLE_FILTERS],
|
|
[test "x$enable_filter_[]NAME" = xyes && enable_filter_simple=yes
|
|
test "x$enable_encoder_[]NAME" = xyes && enable_encoder_simple=yes
|
|
test "x$enable_decoder_[]NAME" = xyes && enable_decoder_simple=yes
|
|
])dnl
|
|
AM_CONDITIONAL(COND_FILTER_SIMPLE, test "x$enable_filter_simple" = xyes)
|
|
AM_CONDITIONAL(COND_ENCODER_SIMPLE, test "x$enable_encoder_simple" = xyes)
|
|
AM_CONDITIONAL(COND_DECODER_SIMPLE, test "x$enable_decoder_simple" = xyes)
|
|
|
|
# LZ-based filters share common code.
|
|
enable_filter_lz=no
|
|
enable_encoder_lz=no
|
|
enable_decoder_lz=no
|
|
m4_foreach([NAME], [LZ_FILTERS],
|
|
[test "x$enable_filter_[]NAME" = xyes && enable_filter_lz=yes
|
|
test "x$enable_encoder_[]NAME" = xyes && enable_encoder_lz=yes
|
|
test "x$enable_decoder_[]NAME" = xyes && enable_decoder_lz=yes
|
|
])dnl
|
|
AM_CONDITIONAL(COND_FILTER_LZ, test "x$enable_filter_lz" = xyes)
|
|
AM_CONDITIONAL(COND_ENCODER_LZ, test "x$enable_encoder_lz" = xyes)
|
|
AM_CONDITIONAL(COND_DECODER_LZ, test "x$enable_decoder_lz" = xyes)
|
|
|
|
|
|
#################
|
|
# Match finders #
|
|
#################
|
|
|
|
m4_define([SUPPORTED_MATCH_FINDERS], [hc3,hc4,bt2,bt3,bt4])
|
|
|
|
m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS],
|
|
[enable_match_finder_[]NAME=no
|
|
])
|
|
|
|
AC_MSG_CHECKING([which match finders to build])
|
|
AC_ARG_ENABLE([match-finders], AC_HELP_STRING([--enable-match-finders=LIST],
|
|
[Comma-separated list of match finders to build. Default=all.
|
|
At least one match finder is required for encoding with
|
|
the LZMA1 and LZMA2 filters. Available match finders:]
|
|
m4_translit(m4_defn([SUPPORTED_MATCH_FINDERS]), [,], [ ])), [],
|
|
[enable_match_finders=SUPPORTED_MATCH_FINDERS])
|
|
enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'`
|
|
if test "x$enable_encoder_lz" = xyes ; then
|
|
for arg in $enable_match_finders
|
|
do
|
|
case $arg in m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS], [
|
|
NAME)
|
|
enable_match_finder_[]NAME=yes
|
|
AC_DEFINE(HAVE_MF_[]m4_toupper(NAME), [1],
|
|
[Define to 1 to enable] NAME [match finder.])
|
|
;;])
|
|
*)
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([unknown match finder: $arg])
|
|
;;
|
|
esac
|
|
done
|
|
AC_MSG_RESULT([$enable_match_finders])
|
|
else
|
|
AC_MSG_RESULT([(none because not building any LZ-based encoder)])
|
|
fi
|
|
|
|
|
|
####################
|
|
# Integrity checks #
|
|
####################
|
|
|
|
m4_define([SUPPORTED_CHECKS], [crc32,crc64,sha256])
|
|
|
|
m4_foreach([NAME], [SUPPORTED_CHECKS],
|
|
[enable_check_[]NAME=no
|
|
])dnl
|
|
|
|
AC_MSG_CHECKING([which integrity checks to build])
|
|
AC_ARG_ENABLE([checks], AC_HELP_STRING([--enable-checks=LIST],
|
|
[Comma-separated list of integrity checks to build.
|
|
Default=all. Available integrity checks:]
|
|
m4_translit(m4_defn([SUPPORTED_CHECKS]), [,], [ ])),
|
|
[], [enable_checks=SUPPORTED_CHECKS])
|
|
enable_checks=`echo "$enable_checks" | sed 's/,/ /g'`
|
|
if test "x$enable_checks" = xno || test "x$enable_checks" = x; then
|
|
AC_MSG_RESULT([(none)])
|
|
else
|
|
for arg in $enable_checks
|
|
do
|
|
case $arg in m4_foreach([NAME], [SUPPORTED_CHECKS], [
|
|
NAME)
|
|
enable_check_[]NAME=yes
|
|
AC_DEFINE(HAVE_CHECK_[]m4_toupper(NAME), [1],
|
|
[Define to 1 if] NAME
|
|
[integrity check is enabled.])
|
|
;;])
|
|
*)
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([unknown integrity check: $arg])
|
|
;;
|
|
esac
|
|
done
|
|
AC_MSG_RESULT([$enable_checks])
|
|
fi
|
|
if test "x$enable_checks_crc32" = xno ; then
|
|
AC_MSG_ERROR([For now, the CRC32 check must always be enabled.])
|
|
fi
|
|
|
|
m4_foreach([NAME], [SUPPORTED_CHECKS],
|
|
[AM_CONDITIONAL(COND_CHECK_[]m4_toupper(NAME), test "x$enable_check_[]NAME" = xyes)
|
|
])dnl
|
|
|
|
|
|
###########################
|
|
# Assembler optimizations #
|
|
###########################
|
|
|
|
AC_MSG_CHECKING([if assembler optimizations should be used])
|
|
AC_ARG_ENABLE([assembler], AC_HELP_STRING([--disable-assembler],
|
|
[Do not use assembler optimizations even if such exist
|
|
for the architecture.]),
|
|
[], [enable_assembler=yes])
|
|
if test "x$enable_assembler" = xyes; then
|
|
enable_assembler=no
|
|
case $host_os in
|
|
# Darwin should work too but only if not creating universal
|
|
# binaries. Solaris x86 could work too but I cannot test.
|
|
linux* | *bsd* | mingw* | cygwin* | *djgpp*)
|
|
case $host_cpu in
|
|
i?86) enable_assembler=x86 ;;
|
|
x86_64) enable_assembler=x86_64 ;;
|
|
esac
|
|
;;
|
|
esac
|
|
fi
|
|
case $enable_assembler in
|
|
x86 | x86_64 | no)
|
|
AC_MSG_RESULT([$enable_assembler])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([--enable-assembler accepts only \`yes', \`no', \`x86', or \`x86_64'.])
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(COND_ASM_X86, test "x$enable_assembler" = xx86)
|
|
AM_CONDITIONAL(COND_ASM_X86_64, test "x$enable_assembler" = xx86_64)
|
|
|
|
|
|
#####################
|
|
# Size optimization #
|
|
#####################
|
|
|
|
AC_MSG_CHECKING([if small size is preferred over speed])
|
|
AC_ARG_ENABLE([small], AC_HELP_STRING([--enable-small],
|
|
[Make liblzma smaller and a little slower.
|
|
This is disabled by default to optimize for speed.]),
|
|
[], [enable_small=no])
|
|
if test "x$enable_small" = xyes; then
|
|
AC_DEFINE([HAVE_SMALL], [1], [Define to 1 if optimizing for size.])
|
|
elif test "x$enable_small" != xno; then
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([--enable-small accepts only \`yes' or \`no'])
|
|
fi
|
|
AC_MSG_RESULT([$enable_small])
|
|
AM_CONDITIONAL(COND_SMALL, test "x$enable_small" = xyes)
|
|
|
|
|
|
#############
|
|
# Threading #
|
|
#############
|
|
|
|
AC_MSG_CHECKING([if threading support is wanted])
|
|
AC_ARG_ENABLE([threads], AC_HELP_STRING([--disable-threads],
|
|
[Disable threading support.
|
|
This makes some things thread-unsafe.]),
|
|
[], [enable_threads=yes])
|
|
if test "x$enable_threads" != xyes && test "x$enable_threads" != xno; then
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([--enable-threads accepts only \`yes' or \`no'])
|
|
fi
|
|
AC_MSG_RESULT([$enable_threads])
|
|
# We use the actual result a little later.
|
|
|
|
|
|
#########################
|
|
# Assumed amount of RAM #
|
|
#########################
|
|
|
|
# We use 128 MiB as default, because it will allow decompressing files
|
|
# created with "xz -9". It would be slightly safer to guess a lower value,
|
|
# but most systems, on which we don't have any way to determine the amount
|
|
# of RAM, will probably have at least 128 MiB of RAM.
|
|
AC_MSG_CHECKING([how much RAM to assume if the real amount is unknown])
|
|
AC_ARG_ENABLE([assume-ram], AC_HELP_STRING([--enable-assume-ram=SIZE],
|
|
[If and only if the real amount of RAM cannot be determined,
|
|
assume SIZE MiB. The default is 128 MiB. This affects the
|
|
default memory usage limit.]),
|
|
[], [enable_assume_ram=128])
|
|
assume_ram_check=`echo "$enable_assume_ram" | tr -d 0123456789`
|
|
if test -z "$enable_assume_ram" || test -n "$assume_ram_check"; then
|
|
AC_MSG_RESULT([])
|
|
AC_MSG_ERROR([--enable-assume-ram accepts only an integer argument])
|
|
fi
|
|
AC_MSG_RESULT([$enable_assume_ram MiB])
|
|
AC_DEFINE_UNQUOTED([ASSUME_RAM], [$enable_assume_ram],
|
|
[How many MiB of RAM to assume if the real amount cannot
|
|
be determined.])
|
|
|
|
|
|
#########################
|
|
# Components to install #
|
|
#########################
|
|
|
|
AC_ARG_ENABLE([xz], [AC_HELP_STRING([--disable-xz],
|
|
[do not build the xz tool])],
|
|
[], [enable_xz=yes])
|
|
AM_CONDITIONAL([COND_XZ], [test x$enable_xz != xno])
|
|
|
|
AC_ARG_ENABLE([xzdec], [AC_HELP_STRING([--disable-xzdec],
|
|
[do not build xzdec])],
|
|
[], [enable_xzdec=yes])
|
|
AM_CONDITIONAL([COND_XZDEC], [test x$enable_xzdec != xno])
|
|
|
|
AC_ARG_ENABLE([lzmadec], [AC_HELP_STRING([--disable-lzmadec],
|
|
[do not build lzmadec
|
|
(it exists primarily for LZMA Utils compatibility)])],
|
|
[], [enable_lzmadec=yes])
|
|
AM_CONDITIONAL([COND_LZMADEC], [test x$enable_lzmadec != xno])
|
|
|
|
AC_ARG_ENABLE([lzmainfo], [AC_HELP_STRING([--disable-lzmainfo],
|
|
[do not build lzmainfo
|
|
(it exists primarily for LZMA Utils compatibility)])],
|
|
[], [enable_lzmainfo=yes])
|
|
AM_CONDITIONAL([COND_LZMAINFO], [test x$enable_lzmainfo != xno])
|
|
|
|
AC_ARG_ENABLE([lzma-links], [AC_HELP_STRING([--disable-lzma-links],
|
|
[do not create symlinks for LZMA Utils compatibility])],
|
|
[], [enable_lzma_links=yes])
|
|
AM_CONDITIONAL([COND_LZMALINKS], [test x$enable_lzma_links != xno])
|
|
|
|
AC_ARG_ENABLE([scripts], [AC_HELP_STRING([--disable-scripts],
|
|
[do not install the scripts xzdiff, xzgrep, xzless, xzmore,
|
|
and their symlinks])],
|
|
[], [enable_scripts=yes])
|
|
AM_CONDITIONAL([COND_SCRIPTS], [test x$enable_scripts != xno])
|
|
|
|
|
|
#####################
|
|
# Symbol versioning #
|
|
#####################
|
|
|
|
AC_MSG_CHECKING([if library symbol versioning should be used])
|
|
AC_ARG_ENABLE([symbol-versions], [AC_HELP_STRING([--enable-symbol-versions],
|
|
[Use symbol versioning for liblzma. Enabled by default on
|
|
GNU/Linux, other GNU-based systems, and FreeBSD.])],
|
|
[], [enable_symbol_versions=auto])
|
|
if test "x$enable_symbol_versions" = xauto; then
|
|
case $host_os in
|
|
# NOTE: Even if one omits -gnu on GNU/Linux (e.g.
|
|
# i486-slackware-linux), configure will (via config.sub)
|
|
# append -gnu (e.g. i486-slackware-linux-gnu), and this
|
|
# test will work correctly.
|
|
gnu* | *-gnu* | freebsd*)
|
|
enable_symbol_versions=yes
|
|
;;
|
|
*)
|
|
enable_symbol_versions=no
|
|
;;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT([$enable_symbol_versions])
|
|
AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes])
|
|
|
|
|
|
###############################################################################
|
|
# Checks for programs.
|
|
###############################################################################
|
|
|
|
echo
|
|
gl_POSIX_SHELL
|
|
if test -z "$POSIX_SHELL" ; then
|
|
AC_MSG_ERROR([No POSIX conforming shell (sh) was found.])
|
|
fi
|
|
|
|
echo
|
|
echo "Initializing Automake:"
|
|
|
|
AM_INIT_AUTOMAKE([1.10 foreign tar-v7 filename-length-max=99])
|
|
AC_PROG_LN_S
|
|
|
|
AC_PROG_CC_C99
|
|
if test x$ac_cv_prog_cc_c99 = xno ; then
|
|
AC_MSG_ERROR([No C99 compiler was found.])
|
|
fi
|
|
|
|
AM_PROG_CC_C_O
|
|
AM_PROG_AS
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
if test "x$enable_threads" = xyes; then
|
|
echo
|
|
echo "Threading support:"
|
|
AX_PTHREAD
|
|
LIBS="$LIBS $PTHREAD_LIBS"
|
|
AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS"
|
|
|
|
dnl NOTE: PTHREAD_CC is ignored. It would be useful on AIX, but
|
|
dnl it's tricky to get it right together with AC_PROG_CC_C99.
|
|
dnl Thus, this is handled by telling the user in INSTALL to set
|
|
dnl the correct CC manually.
|
|
|
|
# These are nice to have but not mandatory.
|
|
OLD_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
AC_SEARCH_LIBS([clock_gettime], [rt])
|
|
AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock])
|
|
AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
|
|
CFLAGS=$OLD_CFLAGS
|
|
fi
|
|
AM_CONDITIONAL([COND_THREADS], [test "x$ax_pthread_ok" = xyes])
|
|
|
|
echo
|
|
echo "Initializing Libtool:"
|
|
LT_PREREQ([2.2])
|
|
LT_INIT([win32-dll])
|
|
LT_LANG([Windows Resource])
|
|
|
|
# This is a bit wrong since it is possible to request that only some libs
|
|
# are built as shared. Using that feature isn't so common though, and this
|
|
# breaks only on Windows (at least for now) if the user enables only some
|
|
# libs as shared.
|
|
AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
|
|
|
|
|
|
###############################################################################
|
|
# Checks for libraries.
|
|
###############################################################################
|
|
|
|
echo
|
|
echo "Initializing gettext:"
|
|
AM_GNU_GETTEXT_VERSION([0.18])
|
|
AM_GNU_GETTEXT([external])
|
|
|
|
###############################################################################
|
|
# Checks for header files.
|
|
###############################################################################
|
|
|
|
echo
|
|
echo "System headers and functions:"
|
|
|
|
# There is currently no workarounds in this package if some of
|
|
# these headers are missing.
|
|
AC_CHECK_HEADERS([fcntl.h limits.h sys/time.h],
|
|
[],
|
|
[AC_MSG_ERROR([Required header file(s) are missing.])])
|
|
|
|
|
|
###############################################################################
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
###############################################################################
|
|
|
|
dnl We don't need these as long as we need a C99 compiler anyway.
|
|
dnl AC_C_INLINE
|
|
dnl AC_C_RESTRICT
|
|
|
|
AC_HEADER_STDBOOL
|
|
|
|
AC_TYPE_UINT8_T
|
|
AC_TYPE_UINT16_T
|
|
AC_TYPE_INT32_T
|
|
AC_TYPE_UINT32_T
|
|
AC_TYPE_INT64_T
|
|
AC_TYPE_UINT64_T
|
|
AC_TYPE_UINTPTR_T
|
|
|
|
AC_CHECK_SIZEOF([size_t])
|
|
|
|
# The command line tool can copy high resolution timestamps if such
|
|
# information is available in struct stat. Otherwise one second accuracy
|
|
# is used.
|
|
AC_CHECK_MEMBERS([
|
|
struct stat.st_atim.tv_nsec,
|
|
struct stat.st_atimespec.tv_nsec,
|
|
struct stat.st_atimensec,
|
|
struct stat.st_uatime,
|
|
struct stat.st_atim.st__tim.tv_nsec])
|
|
|
|
AC_SYS_LARGEFILE
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
###############################################################################
|
|
# Checks for library functions.
|
|
###############################################################################
|
|
|
|
# Gnulib replacements as needed
|
|
gl_GETOPT
|
|
|
|
# Find the best function to set timestamps.
|
|
AC_CHECK_FUNCS([futimens futimes futimesat utimes utime], [break])
|
|
|
|
# This is nice to have but not mandatory.
|
|
AC_CHECK_FUNCS([posix_fadvise])
|
|
|
|
TUKLIB_PROGNAME
|
|
TUKLIB_INTEGER
|
|
TUKLIB_PHYSMEM
|
|
TUKLIB_CPUCORES
|
|
TUKLIB_MBSTR
|
|
|
|
# Check for system-provided SHA-256. At least the following is supported:
|
|
#
|
|
# OS Headers Library Type Function
|
|
# FreeBSD sys/types.h + sha256.h libmd SHA256_CTX SHA256_Init
|
|
# NetBSD sys/types.h + sha2.h SHA256_CTX SHA256_Init
|
|
# OpenBSD sys/types.h + sha2.h SHA2_CTX SHA256Init
|
|
# Solaris sys/types.h + sha2.h libmd SHA256_CTX SHA256Init
|
|
# MINIX 3 sys/types.h + minix/sha2.h libutil SHA256_CTX SHA256_Init
|
|
# Darwin CommonCrypto/CommonDigest.h CC_SHA256_CTX CC_SHA256_Init
|
|
#
|
|
# Note that Darwin's CC_SHA256_Update takes buffer size as uint32_t instead
|
|
# of size_t.
|
|
#
|
|
# We don't check for e.g. OpenSSL or libgcrypt because we don't want
|
|
# to introduce dependencies to other packages by default. Maybe such
|
|
# libraries could be supported via additional configure options though.
|
|
#
|
|
if test "x$enable_check_sha256" = "xyes"; then
|
|
# Test for Common Crypto before others, because Darwin has sha256.h
|
|
# too and we don't want to use that, because on older versions it
|
|
# uses OpenSSL functions, whose SHA256_Init is not guaranteed to
|
|
# succeed.
|
|
sha256_header_found=no
|
|
AC_CHECK_HEADERS(
|
|
[CommonCrypto/CommonDigest.h sha256.h sha2.h minix/sha2.h],
|
|
[sha256_header_found=yes ; break])
|
|
if test "x$sha256_header_found" = xyes; then
|
|
AC_CHECK_TYPES([CC_SHA256_CTX, SHA256_CTX, SHA2_CTX], [], [],
|
|
[[#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_COMMONCRYPTO_COMMONDIGEST_H
|
|
# include <CommonCrypto/CommonDigest.h>
|
|
#endif
|
|
#ifdef HAVE_SHA256_H
|
|
# include <sha256.h>
|
|
#endif
|
|
#ifdef HAVE_SHA2_H
|
|
# include <sha2.h>
|
|
#endif
|
|
#ifdef HAVE_MINIX_SHA2_H
|
|
# include <minix/sha2.h>
|
|
#endif]])
|
|
AC_SEARCH_LIBS([SHA256_Init], [md util])
|
|
AC_SEARCH_LIBS([SHA256Init], [md])
|
|
AC_CHECK_FUNCS([CC_SHA256_Init SHA256_Init SHA256Init],
|
|
[break])
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL([COND_INTERNAL_SHA256],
|
|
[test "x$ac_cv_func_SHA256_Init" != xyes \
|
|
&& test "x$ac_cv_func_SHA256Init" != xyes \
|
|
&& test "x$ac_cv_func_CC_SHA256_Init" != xyes])
|
|
|
|
|
|
###############################################################################
|
|
# If using GCC, set some additional AM_CFLAGS:
|
|
###############################################################################
|
|
|
|
if test "$GCC" = yes ; then
|
|
echo
|
|
echo "GCC extensions:"
|
|
fi
|
|
|
|
# Always do the visibility check but don't set AM_CFLAGS on Windows.
|
|
# This way things get set properly even on Windows.
|
|
gl_VISIBILITY
|
|
if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then
|
|
AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY"
|
|
fi
|
|
|
|
if test "$GCC" = yes ; then
|
|
# Enable as much warnings as possible. These commented warnings won't
|
|
# work for this package though:
|
|
# * -Wunreachable-code breaks several assert(0) cases, which are
|
|
# backed up with "return LZMA_PROG_ERROR".
|
|
# * -Wcast-qual would break various things where we need a non-const
|
|
# pointer although we don't modify anything through it.
|
|
# * -Wcast-align breaks optimized CRC32 and CRC64 implementation
|
|
# on some architectures (not on x86), where this warning is bogus,
|
|
# because we take care of correct alignment.
|
|
# * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations
|
|
# don't seem so useful here; at least the last one gives some
|
|
# warnings which are not bugs.
|
|
for NEW_FLAG in \
|
|
-Wall \
|
|
-Wextra \
|
|
-Wvla \
|
|
-Wformat=2 \
|
|
-Winit-self \
|
|
-Wmissing-include-dirs \
|
|
-Wstrict-aliasing \
|
|
-Wfloat-equal \
|
|
-Wundef \
|
|
-Wshadow \
|
|
-Wpointer-arith \
|
|
-Wbad-function-cast \
|
|
-Wwrite-strings \
|
|
-Wlogical-op \
|
|
-Waggregate-return \
|
|
-Wstrict-prototypes \
|
|
-Wold-style-definition \
|
|
-Wmissing-prototypes \
|
|
-Wmissing-declarations \
|
|
-Wmissing-noreturn \
|
|
-Wredundant-decls
|
|
do
|
|
AC_MSG_CHECKING([if $CC accepts $NEW_FLAG])
|
|
OLD_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $NEW_FLAG"
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([void foo(void) { }])], [
|
|
AM_CFLAGS="$AM_CFLAGS $NEW_FLAG"
|
|
AC_MSG_RESULT([yes])
|
|
], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
CFLAGS="$OLD_CFLAGS"
|
|
done
|
|
|
|
AC_ARG_ENABLE([werror],
|
|
AC_HELP_STRING([--enable-werror], [Enable -Werror to abort
|
|
compilation on all compiler warnings.]),
|
|
[], [enable_werror=no])
|
|
if test "x$enable_werror" = "xyes"; then
|
|
AM_CFLAGS="$AM_CFLAGS -Werror"
|
|
fi
|
|
fi
|
|
|
|
|
|
###############################################################################
|
|
# Create the makefiles and config.h
|
|
###############################################################################
|
|
|
|
echo
|
|
|
|
# Don't build the lib directory at all if we don't need any replacement
|
|
# functions.
|
|
AM_CONDITIONAL([COND_GNULIB], test -n "$LIBOBJS")
|
|
|
|
# Add default AM_CFLAGS.
|
|
AC_SUBST([AM_CFLAGS])
|
|
|
|
# This is needed for src/scripts.
|
|
xz=`echo xz | sed "$program_transform_name"`
|
|
AC_SUBST([xz])
|
|
|
|
AC_CONFIG_FILES([
|
|
Doxyfile
|
|
Makefile
|
|
po/Makefile.in
|
|
lib/Makefile
|
|
src/Makefile
|
|
src/liblzma/liblzma.pc
|
|
src/liblzma/Makefile
|
|
src/liblzma/api/Makefile
|
|
src/xz/Makefile
|
|
src/xzdec/Makefile
|
|
src/lzmainfo/Makefile
|
|
src/scripts/Makefile
|
|
tests/Makefile
|
|
debug/Makefile
|
|
])
|
|
AC_CONFIG_FILES([src/scripts/xzdiff], [chmod +x src/scripts/xzdiff])
|
|
AC_CONFIG_FILES([src/scripts/xzgrep], [chmod +x src/scripts/xzgrep])
|
|
AC_CONFIG_FILES([src/scripts/xzmore], [chmod +x src/scripts/xzmore])
|
|
AC_CONFIG_FILES([src/scripts/xzless], [chmod +x src/scripts/xzless])
|
|
|
|
AC_OUTPUT
|
|
|
|
# Some warnings
|
|
if test x$tuklib_cv_physmem_method = xunknown; then
|
|
echo
|
|
echo "WARNING:"
|
|
echo "No supported method to detect the amount of RAM."
|
|
echo "Consider using --enable-assume-ram (if you didn't already)"
|
|
echo "or make a patch to add support for this operating system."
|
|
fi
|
|
|
|
if test x$tuklib_cv_cpucores_method = xunknown; then
|
|
echo
|
|
echo "WARNING:"
|
|
echo "No supported method to detect the number of CPU cores."
|
|
fi
|