From 86396c6a49a90a3b0bd2045e472b999a23ba3e77 Mon Sep 17 00:00:00 2001 From: Sebastian Kemper Date: Tue, 4 Feb 2020 21:39:43 +0100 Subject: [PATCH] apr: add configure vars and caches apr's configure script uses lots of AC_TRY_RUNs and when cross-compiling needs a leg-up. This commit adds more configure variables (and removes one, too). Notable changes: - apr_cv_use_lfs64=yes is removed (again) after having a discussion about it with the musl developers. The conclusion was that _LARGEFILE64_SOURCE is a horrible thing that we don't want and should avoid (hence the removal of the variable, because defining _LARGEFILE64_SOURCE is all it does). - ap_cv_atomic_builtins is set to "yes" for 64-bit platforms. If anybody is interested in enabling this for other targets feel free to send a patch after testing it. - configure doesn't add -lpthread to LIBS when cross-compiling. This is not a problem for musl but might be for other libcs. This commit adds to related variable. - configure caches are added (via patches) for strerror and /dev/zero mmap tests. The former fixes a warning on musl (where strerror returns int instead of a pointer) and the latter is required for pthread pshared mutex apr_lock implementation and cannot be detected during cross-compile either. Signed-off-by: Sebastian Kemper --- libs/apr/Makefile | 17 +++++++++-- .../302-add-cache-for-strerror_r.patch | 30 +++++++++++++++++++ .../patches/303-add-cache-for-mmap-zero.patch | 25 ++++++++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 libs/apr/patches/302-add-cache-for-strerror_r.patch create mode 100644 libs/apr/patches/303-add-cache-for-mmap-zero.patch diff --git a/libs/apr/Makefile b/libs/apr/Makefile index 853050f45..41cf7b774 100644 --- a/libs/apr/Makefile +++ b/libs/apr/Makefile @@ -44,11 +44,18 @@ CONFIGURE_ARGS += \ $(call autoconf_bool,CONFIG_IPV6,ipv6) # XXX: ac_cv_sizeof_struct_iovec=1 is just to trick configure +# XXX: don't set apr_cv_use_lfs64=yes, see +# https://www.openwall.com/lists/musl/2020/02/03/18 +# XXX: the atomic builtins used require 8-byte intrinsics, which are available +# on all 64-bit architectures and some arm as well as x86 32-bit platforms CONFIGURE_VARS += \ + ap_cv_atomic_builtins=$(if $(CONFIG_ARCH_64BIT),yes,no) \ ac_cv_file__dev_zero=yes \ ac_cv_func_pthread_mutexattr_setpshared=yes \ ac_cv_func_sem_open=yes \ ac_cv_func_setpgrp_void=yes \ + ac_cv_mmap__dev_zero=yes \ + ac_cv_negative_eai=yes \ ac_cv_o_nonblock_inherited=no \ ac_cv_sizeof_struct_iovec=1 \ ac_cv_struct_rlimit=yes \ @@ -56,12 +63,18 @@ CONFIGURE_VARS += \ apr_cv_dup3=yes \ apr_cv_epoll=yes \ apr_cv_epoll_create1=yes \ + apr_cv_gai_addrconfig=yes \ apr_cv_mutex_recursive=yes \ apr_cv_mutex_robust_shared=yes \ apr_cv_process_shared_works=yes \ + apr_cv_pthreads_lib=-lpthread \ apr_cv_sock_cloexec=yes \ - apr_cv_tcp_nodelay_with_cork=yes \ - apr_cv_use_lfs64=yes + apr_cv_tcp_nodelay_with_cork=yes + +ifeq ($(call qstrip,$(CONFIG_LIBC)),musl) +CONFIGURE_VARS += \ + ac_cv_strerror_r_rc_int=yes +endif define Build/InstallDev $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include/apr-1 \ diff --git a/libs/apr/patches/302-add-cache-for-strerror_r.patch b/libs/apr/patches/302-add-cache-for-strerror_r.patch new file mode 100644 index 000000000..c25175d59 --- /dev/null +++ b/libs/apr/patches/302-add-cache-for-strerror_r.patch @@ -0,0 +1,30 @@ +--- a/build/apr_common.m4 ++++ b/build/apr_common.m4 +@@ -526,8 +526,9 @@ dnl string. + dnl + dnl + AC_DEFUN([APR_CHECK_STRERROR_R_RC], [ +-AC_MSG_CHECKING(for type of return code from strerror_r) +-AC_TRY_RUN([ ++AC_CACHE_CHECK([whether return code from strerror_r has type int], ++[ac_cv_strerror_r_rc_int], ++[AC_TRY_RUN([ + #include + #include + #include +@@ -543,14 +544,10 @@ main() + }], [ + ac_cv_strerror_r_rc_int=yes ], [ + ac_cv_strerror_r_rc_int=no ], [ +- ac_cv_strerror_r_rc_int=no ] ) ++ ac_cv_strerror_r_rc_int=no ] ) ] ) + if test "x$ac_cv_strerror_r_rc_int" = xyes; then + AC_DEFINE(STRERROR_R_RC_INT, 1, [Define if strerror returns int]) +- msg="int" +-else +- msg="pointer" + fi +-AC_MSG_RESULT([$msg]) + ] ) + + dnl diff --git a/libs/apr/patches/303-add-cache-for-mmap-zero.patch b/libs/apr/patches/303-add-cache-for-mmap-zero.patch new file mode 100644 index 000000000..482b99caa --- /dev/null +++ b/libs/apr/patches/303-add-cache-for-mmap-zero.patch @@ -0,0 +1,25 @@ +--- a/configure.in ++++ b/configure.in +@@ -1191,8 +1191,9 @@ AC_CHECK_FILE(/dev/zero) + # Not all systems can mmap /dev/zero (such as HP-UX). Check for that. + if test "$ac_cv_func_mmap" = "yes" && + test "$ac_cv_file__dev_zero" = "yes"; then +- AC_MSG_CHECKING(for mmap that can map /dev/zero) +- AC_TRY_RUN([ ++ AC_CACHE_CHECK([for mmap that can map /dev/zero], ++ [ac_cv_mmap__dev_zero], ++ [AC_TRY_RUN([ + #include + #include + #include +@@ -1215,9 +1216,7 @@ if test "$ac_cv_func_mmap" = "yes" && + return 3; + } + return 0; +- }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no]) +- +- AC_MSG_RESULT($ac_cv_file__dev_zero) ++ }], [], [ac_cv_file__dev_zero=no], [ac_cv_file__dev_zero=no])]) + fi + + # Now we determine which one is our anonymous shmem preference.