AC_INIT([libisofs], [1.5.7], [http://libburnia-project.org]) AC_PREREQ([2.50]) dnl AC_CONFIG_HEADER([config.h]) AC_CANONICAL_HOST AC_CANONICAL_TARGET LIBBURNIA_SET_FLAGS AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_MACRO_DIR([./]) dnl dnl if MAJOR or MINOR version changes, be sure to change AC_INIT above to match dnl dnl CURRENT and AGE describe the binary compatibility interval of a dnl dynamic library. dnl See also http://www.gnu.org/software/libtool/manual.html#Interfaces dnl dnl The name of the library will be libisofs.so.$CURRENT-$AGE.$AGE.$REV dnl In the terminology of this file: dnl CURRENT = LT_CURRENT dnl REV = LT_REVISION dnl AGE = LT_AGE dnl dnl LT_CURRENT, LT_REVISION and LT_AGE get set directly now. dnl dnl SONAME of the emerging library is LT_CURRENT - LT_AGE. dnl The linker will do no finer checks. If SONAME matches, then the couple dnl starts. dnl dnl Therefore a run time check is provided by libisofs function dnl iso_lib_version(). It returns the major, minor and micro revision of the dnl library. This means LIBISOFS_*_VERSION kept its second job which does not dnl comply to the usual ways of configure.ac . I.e. now *officially* this is dnl the source code release version as announced to the public. It has no dnl connection to SONAME or libtool version numbering. dnl It rather feeds the API function iso_lib_version(). dnl dnl If LIBISOFS_*_VERSION changes, be sure to change AC_INIT above to match. dnl LIBISOFS_MAJOR_VERSION=1 LIBISOFS_MINOR_VERSION=5 LIBISOFS_MICRO_VERSION=7 LIBISOFS_VERSION=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION.$LIBISOFS_MICRO_VERSION AC_SUBST(LIBISOFS_MAJOR_VERSION) AC_SUBST(LIBISOFS_MINOR_VERSION) AC_SUBST(LIBISOFS_MICRO_VERSION) AC_SUBST(LIBISOFS_VERSION) dnl Libtool versioning LT_RELEASE=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION dnl 2023.05.07 development jump has not yet happened dnl SONAME = 98 - 92 = 6 . Library name = libisofs.6.92.0 LT_CURRENT=98 LT_AGE=92 LT_REVISION=0 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` AC_SUBST(LT_RELEASE) AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) AC_SUBST(LT_CURRENT_MINUS_AGE) AC_PREFIX_DEFAULT([/usr/local]) test "$prefix" = "NONE" && prefix=$ac_default_prefix dnl ts B90405 : Disabled on advise of Ross Burton dnl AM_MAINTAINER_MODE AM_PROG_CC_C_O AC_C_CONST AC_C_INLINE dnl Large file support AC_SYS_LARGEFILE AC_FUNC_FSEEKO AC_CHECK_FUNC([fseeko]) if test ! $ac_cv_func_fseeko; then AC_MSG_ERROR([Libisofs requires largefile support.]) fi dnl If iconv(3) is in an extra lib, then it gets added to variable LIBS. dnl If not, then no -liconv will be added. LIBBURNIA_CHECK_ICONV dnl To abort configuration if iconv() still cannot be compiled LIBBURNIA_ASSERT_ICONV AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) # LIBTOOL="$LIBTOOL --silent" AC_PROG_INSTALL AC_CHECK_HEADERS() dnl Use GNU extensions if available AC_DEFINE(_GNU_SOURCE, 1) dnl Check for tm_gmtoff field in struct tm AC_CHECK_MEMBER([struct tm.tm_gmtoff], [AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define this if tm structure includes a tm_gmtoff entry.])], , [#include ]) dnl Check if non standard timegm() function is available AC_CHECK_DECL([timegm], [AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])], , [#include ]) dnl Whether timezone is an integer variable AH_TEMPLATE([Libburnia_timezonE], [Either timezone or 0]) LIBBURNIA_TRY_TIMEZONE if test x$LIBBURNIA_TIMEZONE = xtimezone then AC_DEFINE([Libburnia_timezonE], [timezone]) else AC_DEFINE([Libburnia_timezonE], [0]) fi dnl Check if non standard eaccess() function is available AC_CHECK_DECL([eaccess], [AC_DEFINE(HAVE_EACCESS, 1, [Define this if eaccess function is available])], , [#include ]) THREAD_LIBS=-lpthread AC_SUBST(THREAD_LIBS) TARGET_SHIZZLE AC_SUBST(ARCH) AC_SUBST(LIBBURN_ARCH_LIBS) dnl See if the user wants aggressive optimizations of the code AC_ARG_ENABLE(debug, [ --enable-debug Disable aggressive optimizations, default=yes], , enable_debug=yes) if test x$enable_debug != xyes; then if test x$GCC = xyes; then CFLAGS="-O3 $CFLAGS" CFLAGS="-fexpensive-optimizations $CFLAGS" fi CFLAGS="-DNDEBUG $CFLAGS" else if test x$GCC = xyes; then CFLAGS="-g -pedantic -Wall -Wextra -Wno-unused-parameter -Wno-char-subscripts $CFLAGS" fi CFLAGS="-DDEBUG $CFLAGS" fi dnl Verbose debug to make libisofs issue more debug messages AC_ARG_ENABLE(verbose-debug, [ --enable-verbose-debug Enable verbose debug messages, default=no], AC_DEFINE(LIBISOFS_VERBOSE_DEBUG, 1)) dnl Determine target directory for libisofs-*.pc dnl Important: Must be performed _after_ TARGET_SHIZZLE dnl LIBBURNIA_SET_PKGCONFIG dnl Add compiler-specific flags AC_ARG_ENABLE(libacl, [ --enable-libacl Enable use of ACL functions by libisofs, default=yes], , enable_libacl=yes) LIBACL_DEF= has_acl_h_but_no_func=0 if test x$LIBBURNIA_SUPP_ACL = xlibacl then if test x$enable_libacl = xyes; then dnl Check whether there is libacl-devel and libacl-runtime. dnl If not, erase this macro which would enable use of acl_to_text and others LIBACL_DEF="-DLibisofs_with_aaip_acL" dnl The empty yes case obviously causes -lacl to be linked AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , has_acl_h_but_no_libacl=1 ), LIBACL_DEF= ) if test "$has_acl_h_but_no_libacl" = 1 then AC_CHECK_LIB(c, acl_to_text, X= , LIBACL_DEF= ) fi fi fi if test x$LIBACL_DEF = x-DLibisofs_with_aaip_acL then if test x$has_acl_h_but_no_libacl = x1 then echo "enabled local processing of ACL" else echo "enabled libacl, local processing of ACL" fi else echo "disabled local processing of ACL" fi AC_SUBST(LIBACL_DEF) dnl ts A90123 - B80508 AC_ARG_ENABLE(xattr, [ --enable-xattr Enable use of extended file attributes by libisofs, default=yes], , enable_xattr=yes) AC_ARG_ENABLE(xattr-h-pref-attr, [ --enable-xattr-h-pref-attr Prefer include file attr/xattr.h over sys/xattr.h, default=no], , enable_xattr_h_pref_attr=no) XATTR_DEF= XATTR_ADDON_DEF= if test x"$LIBBURNIA_SUPP_FATTR" = xxattr then if test "x$enable_xattr" = xyes; then dnl Check whether there is the header for Linux xattr. dnl If not, erase this macro which would enable use of listxattr and others XATTR_A_DEF= XATTR_S_DEF= if test x"$enable_xattr_h_pref_attr" = xyes then echo "prefering include file attr/xattr.h over sys/attr.h" XATTR_A_DEF=1 AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_A_DEF= ), XATTR_A_DEF= ) if test x"$XATTR_A_DEF" = x1 then XATTR_DEF="-DLibisofs_with_aaip_xattR" else XATTR_S_DEF=1 AC_CHECK_HEADER(sys/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_S_DEF= ), XATTR_S_DEF= ) if test x"$XATTR_S_DEF" = x1 then XATTR_DEF="-DLibisofs_with_aaip_xattR" XATTR_ADDON_DEF="-DLibisofs_with_sys_xattR" fi fi else XATTR_S_DEF=1 AC_CHECK_HEADER(sys/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_S_DEF= ), XATTR_S_DEF= ) if test x"$XATTR_S_DEF" = x1 then XATTR_DEF="-DLibisofs_with_aaip_xattR" XATTR_ADDON_DEF="-DLibisofs_with_sys_xattR" else XATTR_A_DEF=1 AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_A_DEF= ), XATTR_A_DEF= ) if test x"$XATTR_A_DEF" = x1 then XATTR_DEF="-DLibisofs_with_aaip_xattR" fi fi fi if test x"$XATTR_S_DEF" = x1 then echo "decided to include file sys/attr.h" elif test x"$XATTR_A_DEF" = x1 then echo "decided to include file attr/xattr.h" fi fi elif test x"$LIBBURNIA_SUPP_FATTR" = xextattr then if test "x$enable_xattr" = xyes; then XATTR_DEF="-DLibisofs_with_freebsd_extattR" AC_CHECK_HEADER(sys/extattr.h, AC_CHECK_LIB(c, extattr_list_file, X=, XATTR_DEF= ), XATTR_DEF= ) fi fi if test x$XATTR_DEF = x-DLibisofs_with_aaip_xattR then echo "enabled xattr, local processing of extended file attributes Linux style" elif test x$XATTR_DEF = x-DLibisofs_with_freebsd_extattR then echo "enabled extattr, local processing of extended file attributes FreeBSD style" else echo "disabled local processing of extended file attributes" fi XATTR_DEF="$XATTR_DEF $XATTR_ADDON_DEF" AC_SUBST(XATTR_DEF) dnl ts C40713 LFA_DEF= AC_ARG_ENABLE(lfa-flags, [ --enable-lfa-flags Enable processing of Linux chattr(1) flags, default=yes], , enable_lfa_flags=yes) if test x"$enable_lfa_flags" = xyes; then AC_CHECK_HEADER(linux/fs.h, LFA_DEF="-DLibisofs_with_aaip_lfa_flagS", LFA_DEF=) fi if test x"$LFA_DEF" = x; then echo "disabled Linux chattr(1) flags" else echo "enabled Linux chattr(1) flags" fi AC_SUBST(LFA_DEF) dnl ts A90409 AC_ARG_ENABLE(zlib, [ --enable-zlib Enable use of zlib by libisofs, default=yes], , enable_zlib=yes) if test "x$enable_zlib" = xyes; then dnl Check whether there is the header for zlib. dnl If not, erase this macro which would enable use of compress2() and others. dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks dnl compressBound(). So compressBound is the more modern thing to test. dnl The empty parameter after "compressBound" causes -lz. ZLIB_DEF="-DLibisofs_with_zliB" AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= ) else ZLIB_DEF= fi AC_SUBST(ZLIB_DEF) dnl ts B00927 AC_ARG_ENABLE(libjte, [ --enable-libjte Enable use of libjte >= 2.0 by libisofs, default=yes], , enable_libjte=yes) if test "x$enable_libjte" = xyes; then LIBJTE_DEF="-DLibisofs_with_libjtE" AC_CHECK_HEADER(libjte/libjte.h, AC_CHECK_LIB(jte, libjte_set_checksum_algorithm, , LIBJTE_DEF= ), LIBJTE_DEF= ) else LIBJTE_DEF= fi AC_SUBST(LIBJTE_DEF) # Library versioning normally serves a complex purpose. # Since libisofs obeys strict ABI backward compatibility, it needs only the # simple feature to declare function names "global:" or "local:". Only the # global ones are visible to applications at library load time. AC_ARG_ENABLE(versioned-libs, [ --enable-versioned-libs Enable strict symbol encapsulation , default=yes], , enable_versioned_libs=yes) if test x$enable_versioned_libs = xyes; then vers_libs_test=no LIBISOFS_ASSERT_VERS_LIBS if test x$vers_libs_test = xno then echo "disabled strict symbol encapsulation (test failed)" else echo "enabled strict symbol encapsulation" fi else echo "disabled strict symbol encapsulation" fi AC_ARG_ENABLE(ldconfig-at-install, [ --enable-ldconfig-at-install On GNU/Linux run ldconfig, default=yes], , ldconfig_at_install=yes) if test x$ldconfig_at_install = xyes; then dummy=dummy else LIBBURNIA_LDCONFIG_CMD="echo 'NOTE: ldconfig is disabled. If needed, configure manually for:'" echo "disabled run of ldconfig during installation on GNU/Linux" fi AC_SUBST(LIBBURNIA_LDCONFIG_CMD) AC_CONFIG_FILES([ Makefile doc/doxygen.conf version.h libisofs-1.pc ]) AC_OUTPUT