From 39b2fda9155ee0233585e48701274756337796aa Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 16 Apr 2020 15:14:17 +0200 Subject: [PATCH] BUILD: Makefile: add linux-musl to TARGET Other users are using musl, namely on Docker. It builds fine with linux-glibc-legacy but not linux-glibc, which needs to first disable USE_BACKTRACE. Better add a valid entry for it instead of hacking around another libc. --- INSTALL | 1 + Makefile | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/INSTALL b/INSTALL index 78424ee3c..61878922e 100644 --- a/INSTALL +++ b/INSTALL @@ -372,6 +372,7 @@ and assign it to the TARGET variable : - linux-glibc for Linux kernel 2.6.28 and above - linux-glibc-legacy for Linux kernel 2.6.28 and above without new features + - linux-musl for Linux kernel 2.6.28 and above with musl libc - solaris for Solaris 8 or 10 (others untested) - freebsd for FreeBSD 5 to 12 (others untested) - netbsd for NetBSD diff --git a/Makefile b/Makefile index d5841a549..1e4213989 100644 --- a/Makefile +++ b/Makefile @@ -139,8 +139,8 @@ DOCDIR = $(PREFIX)/doc/haproxy #### TARGET system # Use TARGET= to optimize for a specific target OS among the # following list (use the default "generic" if uncertain) : -# linux-glibc, linux-glibc-legacy, solaris, freebsd, openbsd, netbsd, -# cygwin, haiku, aix51, aix52, aix72-gcc, osx, generic, custom +# linux-glibc, linux-glibc-legacy, linux-musl, solaris, freebsd, openbsd, +# netbsd, cygwin, haiku, aix51, aix52, aix72-gcc, osx, generic, custom TARGET = #### TARGET CPU @@ -341,6 +341,18 @@ ifeq ($(TARGET),linux-glibc-legacy) USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_GETADDRINFO) endif +# For linux >= 2.6.28 and musl +ifeq ($(TARGET),linux-musl) + set_target_defaults = $(call default_opts, \ + USE_POLL USE_TPROXY USE_LIBCRYPT USE_DL USE_RT USE_CRYPT_H USE_NETFILTER \ + USE_CPU_AFFINITY USE_THREAD USE_EPOLL USE_FUTEX USE_LINUX_TPROXY \ + USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_NS USE_TFO \ + USE_GETADDRINFO) +ifneq ($(shell echo __arm__/__aarch64__ | $(CC) -E -xc - | grep '^[^\#]'),__arm__/__aarch64__) + TARGET_LDFLAGS=-latomic +endif +endif + # Solaris 8 and above ifeq ($(TARGET),solaris) # We also enable getaddrinfo() which works since solaris 8. @@ -757,8 +769,8 @@ all: @echo @echo "Please choose the target among the following supported list :" @echo - @echo " linux-glibc, linux-glibc-legacy, solaris, freebsd, openbsd, netbsd," - @echo " cygwin, haiku, aix51, aix52, aix72-gcc, osx, generic, custom" + @echo " linux-glibc, linux-glibc-legacy, linux-musl, solaris, freebsd, openbsd, " + @echo " netbsd, cygwin, haiku, aix51, aix52, aix72-gcc, osx, generic, custom" @echo @echo "Use \"generic\" if you don't want any optimization, \"custom\" if you" @echo "want to precisely tweak every option, or choose the target which"