]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
configure: Determine if musl is used for build
authorJoshua Lant <joshualant@googlemail.com>
Wed, 28 Aug 2024 12:47:31 +0000 (13:47 +0100)
committerPhil Sutter <phil@nwl.cc>
Thu, 29 Aug 2024 12:07:35 +0000 (14:07 +0200)
Error compiling with musl-libc:
The commit hash 810f8568f44f5863c2350a39f4f5c8d60f762958
introduces the netinet/ether.h header into xtables.h, which causes an error due
to the redefinition of the ethhdr struct, defined in linux/if_ether.h and
netinet/ether.h. This is fixed by the inclusion of -D__UAPI_DEF_ETHHDR=0 in
CFLAGS for musl. Automatically check for this macro, since it is defined
in musl but not in glibc.

Signed-off-by: Joshua Lant joshualant@gmail.com
Signed-off-by: Phil Sutter <phil@nwl.cc>
configure.ac

index 2293702b17a47ca2fffc248169934b771fc808fc..a19a60c03c5b2e2e49226a988cb1a53ceb51ad51 100644 (file)
@@ -206,6 +206,25 @@ if test "x$enable_profiling" = "xyes"; then
        regular_LDFLAGS+=" -lgcov --coverage"
 fi
 
+AC_MSG_CHECKING([whether the build is using musl-libc])
+enable_musl_build=""
+
+AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[#include <netinet/if_ether.h>]],
+       [[
+       #if ! defined(__UAPI_DEF_ETHHDR) || __UAPI_DEF_ETHHDR != 0
+               #error error trying musl...
+       #endif
+       ]]
+       )],
+       [enable_musl_build="yes"],[enable_musl_build="no"]
+)
+AC_MSG_RESULT([${enable_musl_build}])
+
+if test "x$enable_musl_build" = "xyes"; then
+       regular_CFLAGS+=" -D__UAPI_DEF_ETHHDR=0"
+fi
+
 define([EXPAND_VARIABLE],
 [$2=[$]$1
 if test $prefix = 'NONE'; then
@@ -277,7 +296,8 @@ Build parameters:
   Installation prefix (--prefix):      ${prefix}
   Xtables extension directory:         ${e_xtlibdir}
   Pkg-config directory:                        ${e_pkgconfigdir}
-  Xtables lock file:                   ${xt_lock_name}"
+  Xtables lock file:                   ${xt_lock_name}
+  Build against musl-libc:             ${enable_musl_build}"
 
 if [[ -n "$ksourcedir" ]]; then
        echo "  Kernel source directory:                ${ksourcedir}"