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@xxxxxxxxx --- configure.ac | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 2293702b..14106a7e 100644 --- a/configure.ac +++ b/configure.ac @@ -206,6 +206,27 @@ 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 + return 0; + #else + #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 +298,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}" -- 2.34.1