X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fkmod.git;a=blobdiff_plain;f=configure.ac;h=4a65d6ba7a3790eae54b9b82656af77492b4820f;hp=e7bab61beb2267a8e36152e08447824c948e1ced;hb=HEAD;hpb=27bcc9111b63e94d091c3fa47e81fe52b806cd3e diff --git a/configure.ac b/configure.ac index e7bab61..a80780e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,43 +1,40 @@ -AC_PREREQ(2.60) +AC_PREREQ(2.64) AC_INIT([kmod], - [19], + [32], [linux-modules@vger.kernel.org], [kmod], [http://git.kernel.org/?p=utils/kernel/kmod/kmod.git]) AC_CONFIG_SRCDIR([libkmod/libkmod.c]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_HEADERS(config.h) AC_CONFIG_AUX_DIR([build-aux]) -AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules - tar-pax no-dist-gzip dist-xz subdir-objects color-tests parallel-tests]) -AC_PROG_CC_STDC + AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE -AC_CONFIG_MACRO_DIR([m4]) -m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])]) -AM_SILENT_RULES([yes]) -LT_INIT([disable-static pic-only]) AC_PREFIX_DEFAULT([/usr]) AM_MAINTAINER_MODE([enable]) +AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules tar-pax no-dist-gzip dist-xz subdir-objects color-tests parallel-tests]) +AM_SILENT_RULES([yes]) +LT_INIT([disable-static pic-only]) -AS_IF([test "x$enable_static" = "xyes"], - [AC_MSG_ERROR([--enable-static is not supported by kmod])]) +AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by kmod])]) +AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by kmod])]) +module_compressions="" +module_signatures="legacy" ##################################################################### # Program checks and configurations ##################################################################### -AC_PROG_CC -AC_PROG_CC_C99 -AM_PROG_CC_C_O -AC_PROG_GCC_TRADITIONAL -AC_C_BIGENDIAN - AC_PROG_SED AC_PROG_MKDIR_P +AC_PROG_LN_S PKG_PROG_PKG_CONFIG AC_PATH_PROG([XSLTPROC], [xsltproc]) +AC_PROG_CC_C99 ##################################################################### # Function and structure checks @@ -47,6 +44,11 @@ AC_CHECK_FUNCS_ONCE(__xstat) AC_CHECK_FUNCS_ONCE([__secure_getenv secure_getenv]) AC_CHECK_FUNCS_ONCE([finit_module]) +CC_CHECK_FUNC_BUILTIN([__builtin_clz]) +CC_CHECK_FUNC_BUILTIN([__builtin_types_compatible_p]) +CC_CHECK_FUNC_BUILTIN([__builtin_uaddl_overflow], [ ], [ ]) +CC_CHECK_FUNC_BUILTIN([__builtin_uaddll_overflow], [ ], [ ]) + # dietlibc doesn't have st.st_mtim struct member AC_CHECK_MEMBERS([struct stat.st_mtim], [], [], [#include ]) @@ -66,34 +68,98 @@ AC_COMPILE_IFELSE( AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) +AC_MSG_CHECKING([whether _Noreturn is supported]) +AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[#include + _Noreturn int foo(void) { exit(0); }]])], + [AC_DEFINE([HAVE_NORETURN], [1], [Define if _Noreturn is available]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])]) + + ##################################################################### # --with- ##################################################################### +AC_ARG_WITH([distconfdir], AS_HELP_STRING([--with-distconfdir=DIR], [directory to search for distribution configuration files]), + [], [with_distconfdir='${prefix}/lib']) +AC_SUBST([distconfdir], [$with_distconfdir]) + AC_ARG_WITH([rootlibdir], AS_HELP_STRING([--with-rootlibdir=DIR], [rootfs directory to install shared libraries]), [], [with_rootlibdir=$libdir]) AC_SUBST([rootlibdir], [$with_rootlibdir]) +# Ideally this would be $prefix/lib/modules but default to /lib/modules for compatibility with earlier versions +AC_ARG_WITH([module_directory], + AS_HELP_STRING([--with-module-directory=DIR], [directory in which to look for kernel modules @<:@default=/lib/modules@:>@]), + [], [with_module_directory=/lib/modules]) +AC_SUBST([module_directory], [$with_module_directory]) + +# Check all directory arguments for consistency. +for ac_var in distconfdir rootlibdir module_directory +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*@<:@^/@:>@\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + @<:@\\/$@:>@* | ?:@<:@\\/@:>@* ) continue;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +AC_ARG_WITH([zstd], + AS_HELP_STRING([--with-zstd], [handle Zstandard-compressed modules @<:@default=disabled@:>@]), + [], [with_zstd=no]) +AS_IF([test "x$with_zstd" != "xno"], [ + PKG_CHECK_MODULES([libzstd], [libzstd >= 1.4.4], [LIBS="$LIBS $libzstd_LIBS"]) + AC_DEFINE([ENABLE_ZSTD], [1], [Enable Zstandard for modules.]) + module_compressions="zstd $module_compressions" +], [ + AC_MSG_NOTICE([Zstandard support not requested]) +]) +CC_FEATURE_APPEND([with_features], [with_zstd], [ZSTD]) + AC_ARG_WITH([xz], AS_HELP_STRING([--with-xz], [handle Xz-compressed modules @<:@default=disabled@:>@]), [], [with_xz=no]) AS_IF([test "x$with_xz" != "xno"], [ - PKG_CHECK_MODULES([liblzma], [liblzma >= 4.99]) + PKG_CHECK_MODULES([liblzma], [liblzma >= 4.99], [LIBS="$LIBS $liblzma_LIBS"]) AC_DEFINE([ENABLE_XZ], [1], [Enable Xz for modules.]) + module_compressions="xz $module_compressions" ], [ AC_MSG_NOTICE([Xz support not requested]) ]) +CC_FEATURE_APPEND([with_features], [with_xz], [XZ]) AC_ARG_WITH([zlib], AS_HELP_STRING([--with-zlib], [handle gzipped modules @<:@default=disabled@:>@]), [], [with_zlib=no]) AS_IF([test "x$with_zlib" != "xno"], [ - PKG_CHECK_MODULES([zlib], [zlib]) + PKG_CHECK_MODULES([zlib], [zlib], [LIBS="$LIBS $zlib_LIBS"]) AC_DEFINE([ENABLE_ZLIB], [1], [Enable zlib for modules.]) + module_compressions="gzip $module_compressions" ], [ AC_MSG_NOTICE([zlib support not requested]) ]) +CC_FEATURE_APPEND([with_features], [with_zlib], [ZLIB]) + +AC_ARG_WITH([openssl], + AS_HELP_STRING([--with-openssl], [handle PKCS7 signatures @<:@default=disabled@:>@]), + [], [with_openssl=no]) +AS_IF([test "x$with_openssl" != "xno"], [ + PKG_CHECK_MODULES([libcrypto], [libcrypto >= 1.1.0], [LIBS="$LIBS $libcrypto_LIBS"]) + AC_DEFINE([ENABLE_OPENSSL], [1], [Enable openssl for modinfo.]) + module_signatures="PKCS7 $module_signatures" +], [ + AC_MSG_NOTICE([openssl support not requested]) +]) +CC_FEATURE_APPEND([with_features], [with_openssl], [LIBCRYPTO]) AC_ARG_WITH([bashcompletiondir], AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), @@ -119,6 +185,11 @@ AC_ARG_ENABLE([manpages], [], enable_manpages=yes) AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" = "xyes"]) +AC_ARG_ENABLE([test-modules], + AS_HELP_STRING([--disable-test-modules], [disable building test modules during make check: cached modules will be used @<:@default=enabled@:>@]), + [], enable_test_modules=yes) +AM_CONDITIONAL([BUILD_MODULES], [test "x$enable_test_modules" = "xyes"]) + AC_ARG_ENABLE([logging], AS_HELP_STRING([--disable-logging], [disable system logging @<:@default=enabled@:>@]), [], enable_logging=yes) @@ -133,24 +204,6 @@ AS_IF([test "x$enable_debug" = "xyes"], [ AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.]) ]) -AC_ARG_ENABLE([python], - AS_HELP_STRING([--enable-python], [enable Python libkmod bindings @<:@default=disabled@:>@]), - [], [enable_python=no]) -AS_IF([test "x$enable_python" = "xyes"], [ - AM_PATH_PYTHON(,,[:]) - AC_PATH_PROG([CYTHON], [cython], [:]) - - PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}], - [have_python=yes], - [PKG_CHECK_MODULES([PYTHON], [python], - [have_python=yes], - [have_python=no])]) - - AS_IF([test "x$have_python" = xno], - [AC_MSG_ERROR([*** python support requested but libraries not found])]) -]) -AM_CONDITIONAL([BUILD_PYTHON], [test "x$enable_python" = "xyes"]) - AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage], [enable test coverage @<:@default=disabled@:>@]), [], [enable_coverage=no]) @@ -178,6 +231,8 @@ GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat]) ], [ AM_CONDITIONAL([ENABLE_GTK_DOC], false)]) +PKG_INSTALLDIR +PKG_NOARCH_INSTALLDIR ##################################################################### # Default CFLAGS and LDFLAGS @@ -226,34 +281,31 @@ CC_CHECK_FLAGS_APPEND(with_cflags, [CFLAGS], [\ -fvisibility=hidden \ -ffunction-sections \ -fdata-sections]) - -AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], - [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ - -flto -ffat-lto-objects])], - [AC_MSG_RESULT([skipping -flto, optimization not enabled])]) - -AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], - [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ - -Wp,-D_FORTIFY_SOURCE=2])], - [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) - AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags") + CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [ \ -Wl,--as-needed \ + -Wl,--no-undefined \ -Wl,--gc-sections]) AC_SUBST([OUR_LDFLAGS], $with_ldflags) +AC_DEFINE_UNQUOTED(KMOD_FEATURES, ["$with_features"], [Features in this build]) + ##################################################################### # Generate files from *.in ##################################################################### -AC_CONFIG_HEADERS(config.h) +AC_SUBST([module_compressions], $module_compressions) +AC_SUBST([module_signatures], $module_signatures) + AC_CONFIG_FILES([ Makefile man/Makefile libkmod/docs/Makefile libkmod/docs/version.xml + libkmod/libkmod.pc + tools/kmod.pc ]) @@ -264,8 +316,10 @@ AC_MSG_RESULT([ $PACKAGE $VERSION ======= + module_directory: ${module_directory} prefix: ${prefix} sysconfdir: ${sysconfdir} + distconfdir: ${distconfdir} libdir: ${libdir} rootlibdir: ${rootlibdir} includedir: ${includedir} @@ -277,11 +331,13 @@ AC_MSG_RESULT([ ldflags: ${with_ldflags} ${LDFLAGS} tools: ${enable_tools} - python bindings: ${enable_python} logging: ${enable_logging} - compression: xz=${with_xz} zlib=${with_zlib} + compression: zstd=${with_zstd} xz=${with_xz} zlib=${with_zlib} debug: ${enable_debug} coverage: ${enable_coverage} doc: ${enable_gtk_doc} man: ${enable_manpages} + test-modules: ${enable_test_modules} + + features: ${with_features} ])