1AC_PREREQ(2.64) 2AC_INIT([kmod], 3 [24], 4 [linux-modules@vger.kernel.org], 5 [kmod], 6 [http://git.kernel.org/?p=utils/kernel/kmod/kmod.git]) 7 8AC_CONFIG_SRCDIR([libkmod/libkmod.c]) 9AC_CONFIG_MACRO_DIR([m4]) 10AC_CONFIG_HEADERS(config.h) 11AC_CONFIG_AUX_DIR([build-aux]) 12 13AC_USE_SYSTEM_EXTENSIONS 14AC_SYS_LARGEFILE 15AC_PREFIX_DEFAULT([/usr]) 16AM_MAINTAINER_MODE([enable]) 17AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules tar-pax no-dist-gzip dist-xz subdir-objects color-tests parallel-tests]) 18AM_SILENT_RULES([yes]) 19LT_INIT([disable-static pic-only]) 20DOLT 21 22AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by kmod])]) 23AS_IF([test "x$enable_largefile" = "xno"], [AC_MSG_ERROR([--disable-largefile is not supported by kmod])]) 24 25##################################################################### 26# Program checks and configurations 27##################################################################### 28 29AC_PROG_SED 30AC_PROG_MKDIR_P 31AC_PROG_LN_S 32PKG_PROG_PKG_CONFIG 33AC_PATH_PROG([XSLTPROC], [xsltproc]) 34 35AC_PROG_CC_C99 36 37##################################################################### 38# Function and structure checks 39##################################################################### 40 41AC_CHECK_FUNCS_ONCE(__xstat) 42AC_CHECK_FUNCS_ONCE([__secure_getenv secure_getenv]) 43AC_CHECK_FUNCS_ONCE([finit_module]) 44 45CC_CHECK_FUNC_BUILTIN([__builtin_clz]) 46CC_CHECK_FUNC_BUILTIN([__builtin_types_compatible_p]) 47CC_CHECK_FUNC_BUILTIN([__builtin_uaddl_overflow], [ ], [ ]) 48CC_CHECK_FUNC_BUILTIN([__builtin_uaddll_overflow], [ ], [ ]) 49 50# dietlibc doesn't have st.st_mtim struct member 51AC_CHECK_MEMBERS([struct stat.st_mtim], [], [], [#include <sys/stat.h>]) 52 53# musl 1.0 and bionic 4.4 don't have strndupa 54AC_CHECK_DECLS_ONCE([strndupa]) 55 56# RHEL 5 and older do not have be32toh 57AC_CHECK_DECLS_ONCE([be32toh]) 58 59# Check kernel headers 60AC_CHECK_HEADERS_ONCE([linux/module.h]) 61 62AC_MSG_CHECKING([whether _Static_assert() is supported]) 63AC_COMPILE_IFELSE( 64 [AC_LANG_SOURCE([[_Static_assert(1, "Test");]])], 65 [AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define if _Static_assert() is available]) 66 AC_MSG_RESULT([yes])], 67 [AC_MSG_RESULT([no])]) 68 69AC_MSG_CHECKING([whether _Noreturn is supported]) 70AC_COMPILE_IFELSE( 71 [AC_LANG_SOURCE([[_Noreturn int foo(void) { exit(0); }]])], 72 [AC_DEFINE([HAVE_NORETURN], [1], [Define if _Noreturn is available]) 73 AC_MSG_RESULT([yes])], 74 [AC_MSG_RESULT([no])]) 75 76 77##################################################################### 78# --with- 79##################################################################### 80 81AC_ARG_WITH([rootlibdir], 82 AS_HELP_STRING([--with-rootlibdir=DIR], [rootfs directory to install shared libraries]), 83 [], [with_rootlibdir=$libdir]) 84AC_SUBST([rootlibdir], [$with_rootlibdir]) 85 86AC_ARG_WITH([xz], 87 AS_HELP_STRING([--with-xz], [handle Xz-compressed modules @<:@default=disabled@:>@]), 88 [], [with_xz=no]) 89AS_IF([test "x$with_xz" != "xno"], [ 90 PKG_CHECK_MODULES([liblzma], [liblzma >= 4.99]) 91 AC_DEFINE([ENABLE_XZ], [1], [Enable Xz for modules.]) 92], [ 93 AC_MSG_NOTICE([Xz support not requested]) 94]) 95CC_FEATURE_APPEND([with_features], [with_xz], [XZ]) 96 97AC_ARG_WITH([zlib], 98 AS_HELP_STRING([--with-zlib], [handle gzipped modules @<:@default=disabled@:>@]), 99 [], [with_zlib=no]) 100AS_IF([test "x$with_zlib" != "xno"], [ 101 PKG_CHECK_MODULES([zlib], [zlib]) 102 AC_DEFINE([ENABLE_ZLIB], [1], [Enable zlib for modules.]) 103], [ 104 AC_MSG_NOTICE([zlib support not requested]) 105]) 106CC_FEATURE_APPEND([with_features], [with_zlib], [ZLIB]) 107 108AC_ARG_WITH([bashcompletiondir], 109 AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), 110 [], 111 [AS_IF([$($PKG_CONFIG --exists bash-completion)], [ 112 with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion) 113 ] , [ 114 with_bashcompletiondir=${datadir}/bash-completion/completions 115 ])]) 116AC_SUBST([bashcompletiondir], [$with_bashcompletiondir]) 117 118##################################################################### 119# --enable- 120##################################################################### 121 122AC_ARG_ENABLE([experimental], 123 AS_HELP_STRING([--enable-experimental], [enable experimental tools and features. Do not enable it unless you know what you are doing. @<:@default=disabled@:>@]), 124 [], enable_experimental=no) 125AM_CONDITIONAL([BUILD_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"]) 126AS_IF([test "x$enable_experimental" = "xyes"], [ 127 AC_DEFINE(ENABLE_EXPERIMENTAL, [1], [Experimental features.]) 128]) 129CC_FEATURE_APPEND([with_features], [enable_experimental], [EXPERIMENTAL]) 130 131AC_ARG_ENABLE([tools], 132 AS_HELP_STRING([--disable-tools], [disable building tools that provide same functionality as module-init-tools @<:@default=enabled@:>@]), 133 [], enable_tools=yes) 134AM_CONDITIONAL([BUILD_TOOLS], [test "x$enable_tools" = "xyes"]) 135 136AC_ARG_ENABLE([manpages], 137 AS_HELP_STRING([--disable-manpages], [disable manpages @<:@default=enabled@:>@]), 138 [], enable_manpages=yes) 139AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" = "xyes"]) 140 141AC_ARG_ENABLE([test-modules], 142 AS_HELP_STRING([--disable-test-modules], [disable building test modules during make check: cached modules will be used @<:@default=enabled@:>@]), 143 [], enable_test_modules=yes) 144AM_CONDITIONAL([BUILD_MODULES], [test "x$enable_test_modules" = "xyes"]) 145 146AC_ARG_ENABLE([logging], 147 AS_HELP_STRING([--disable-logging], [disable system logging @<:@default=enabled@:>@]), 148 [], enable_logging=yes) 149AS_IF([test "x$enable_logging" = "xyes"], [ 150 AC_DEFINE(ENABLE_LOGGING, [1], [System logging.]) 151]) 152 153AC_ARG_ENABLE([debug], 154 AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]), 155 [], [enable_debug=no]) 156AS_IF([test "x$enable_debug" = "xyes"], [ 157 AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.]) 158]) 159 160AC_ARG_ENABLE([python], 161 AS_HELP_STRING([--enable-python], [enable Python libkmod bindings @<:@default=disabled@:>@]), 162 [], [enable_python=no]) 163AS_IF([test "x$enable_python" = "xyes"], [ 164 AM_PATH_PYTHON(,,[:]) 165 AC_PATH_PROG([CYTHON], [cython], [:]) 166 167 PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}], 168 [have_python=yes], 169 [PKG_CHECK_MODULES([PYTHON], [python], 170 [have_python=yes], 171 [have_python=no])]) 172 173 AS_IF([test "x$have_python" = xno], 174 [AC_MSG_ERROR([*** python support requested but libraries not found])]) 175]) 176AM_CONDITIONAL([BUILD_PYTHON], [test "x$enable_python" = "xyes"]) 177 178AC_ARG_ENABLE([coverage], 179 AS_HELP_STRING([--enable-coverage], [enable test coverage @<:@default=disabled@:>@]), 180 [], [enable_coverage=no]) 181AS_IF([test "x$enable_coverage" = "xyes"], [ 182 AC_CHECK_PROG(have_coverage, [lcov], [yes], [no]) 183 AS_IF([test "x$have_coverage" = xno],[ 184 AC_MSG_ERROR([*** lcov support requested but the program was not found]) 185 ], [ 186 lcov_version_major="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 1`" 187 lcov_version_minor="`lcov --version | cut -d ' ' -f 4 | cut -d '.' -f 2`" 188 AS_IF([test "$lcov_version_major" -lt 1 -o "$lcov_version_minor" -lt 10], [ 189 AC_MSG_ERROR([*** lcov version is too old. 1.10 required]) 190 ], [ 191 have_coverage=yes 192 CC_CHECK_FLAGS_APPEND([with_coverage_cflags], [CFLAGS], [\ 193 -fprofile-arcs \ 194 -ftest-coverage]) 195 ]) 196 ]) 197]) 198AM_CONDITIONAL([ENABLE_COVERAGE], [test "x$enable_coverage" = "xyes"]) 199 200m4_ifdef([GTK_DOC_CHECK], [ 201GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat]) 202], [ 203AM_CONDITIONAL([ENABLE_GTK_DOC], false)]) 204 205 206##################################################################### 207# Default CFLAGS and LDFLAGS 208##################################################################### 209 210CC_CHECK_FLAGS_APPEND(with_cflags, [CFLAGS], [\ 211 -pipe \ 212 -DANOTHER_BRICK_IN_THE \ 213 -Wall \ 214 -W \ 215 -Wextra \ 216 -Wno-inline \ 217 -Wvla \ 218 -Wundef \ 219 -Wformat=2 \ 220 -Wlogical-op \ 221 -Wsign-compare \ 222 -Wformat-security \ 223 -Wmissing-include-dirs \ 224 -Wformat-nonliteral \ 225 -Wold-style-definition \ 226 -Wpointer-arith \ 227 -Winit-self \ 228 -Wdeclaration-after-statement \ 229 -Wfloat-equal \ 230 -Wmissing-prototypes \ 231 -Wstrict-prototypes \ 232 -Wredundant-decls \ 233 -Wmissing-declarations \ 234 -Wmissing-noreturn \ 235 -Wshadow \ 236 -Wendif-labels \ 237 -Wstrict-aliasing=3 \ 238 -Wwrite-strings \ 239 -Wno-long-long \ 240 -Wno-overlength-strings \ 241 -Wno-unused-parameter \ 242 -Wno-missing-field-initializers \ 243 -Wno-unused-result \ 244 -Wnested-externs \ 245 -Wchar-subscripts \ 246 -Wtype-limits \ 247 -Wuninitialized \ 248 -fno-common \ 249 -fdiagnostics-show-option \ 250 -fvisibility=hidden \ 251 -ffunction-sections \ 252 -fdata-sections]) 253AC_SUBST([OUR_CFLAGS], "$with_cflags $with_coverage_cflags") 254 255 256CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [ \ 257 -Wl,--as-needed \ 258 -Wl,--no-undefined \ 259 -Wl,--gc-sections]) 260AC_SUBST([OUR_LDFLAGS], $with_ldflags) 261 262AC_DEFINE_UNQUOTED(KMOD_FEATURES, ["$with_features"], [Features in this build]) 263 264##################################################################### 265# Generate files from *.in 266##################################################################### 267 268AC_CONFIG_FILES([ 269 Makefile 270 man/Makefile 271 libkmod/docs/Makefile 272 libkmod/docs/version.xml 273]) 274 275 276##################################################################### 277 278AC_OUTPUT 279AC_MSG_RESULT([ 280 $PACKAGE $VERSION 281 ======= 282 283 prefix: ${prefix} 284 sysconfdir: ${sysconfdir} 285 libdir: ${libdir} 286 rootlibdir: ${rootlibdir} 287 includedir: ${includedir} 288 bindir: ${bindir} 289 Bash completions dir: ${with_bashcompletiondir} 290 291 compiler: ${CC} 292 cflags: ${with_cflags} ${CFLAGS} 293 ldflags: ${with_ldflags} ${LDFLAGS} 294 295 experimental features: ${enable_experimental} 296 tools: ${enable_tools} 297 python bindings: ${enable_python} 298 logging: ${enable_logging} 299 compression: xz=${with_xz} zlib=${with_zlib} 300 debug: ${enable_debug} 301 coverage: ${enable_coverage} 302 doc: ${enable_gtk_doc} 303 man: ${enable_manpages} 304 test-modules: ${enable_test_modules} 305 306 features: ${with_features} 307]) 308