[Buildroot] [PATCH 08/21] apache, apr: fix atomic handling

Yann E. MORIN yann.morin.1998 at free.fr
Mon Jan 25 20:59:03 UTC 2016


Thomas, All,

On 2016-01-25 00:07 +0100, Thomas Petazzoni spake thusly:
> Since the apache package was introduced,
> --enable-nonportable-atomics=yes was passed when
> BR2_ARCH_HAS_ATOMICS. However, Apache doesn't take this option: it
> only passes it down when building the APR library. But since we're
> building APR separately, this statement had no effect.
> 
> So this commit removes the useless code from the Apache package, and
> instead adds the appropriate logic to the apr package, using the new
> BR2_TOOLCHAIN_HAS_SYNC_x symbols rather than BR2_ARCH_HAS_ATOMICS.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> Cc: Bernd Kuhls <bernd.kuhls at t-online.de>
> ---
>  package/apache/apache.mk |  4 ----
>  package/apr/apr.mk       | 17 +++++++++++++++++
>  2 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/package/apache/apache.mk b/package/apache/apache.mk
> index 8e7b6be..e752fcc 100644
> --- a/package/apache/apache.mk
> +++ b/package/apache/apache.mk
> @@ -35,10 +35,6 @@ APACHE_CONF_OPTS = \
>  	--disable-lua \
>  	--disable-luajit
>  
> -ifeq ($(BR2_ARCH_HAS_ATOMICS),y)
> -APACHE_CONF_OPTS += --enable-nonportable-atomics=yes
> -endif
> -
>  ifeq ($(BR2_PACKAGE_LIBXML2),y)
>  APACHE_DEPENDENCIES += libxml2
>  # Apache wants the path to the header file, where it can find
> diff --git a/package/apr/apr.mk b/package/apr/apr.mk
> index 0fed19c..33873a0 100644
> --- a/package/apr/apr.mk
> +++ b/package/apr/apr.mk
> @@ -35,6 +35,23 @@ endif
>  # Fix lfs detection when cross compiling
>  APR_CONF_ENV += apr_cv_use_lfs64=yes
>  
> +# Use non-portable atomics when available: 8 bytes atomics are used on
> +# 64-bits architectures, 4 bytes atomics on 32-bits architectures. We
> +# have to override ap_cv_atomic_builtins because the test used to
> +# check for atomic builtins uses AC_TRY_RUN, which doesn't work when
> +# cross-compiling.
> +ifeq ($(BR2_ARCH_IS_64),y)
> +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8),y)
> +APR_CONF_OPTS += --enable-nonportable-atomics
> +APR_CONF_ENV += ap_cv_atomic_builtins=yes
> +endif
> +else
> +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y)
> +APR_CONF_OPTS += --enable-nonportable-atomics
> +APR_CONF_ENV += ap_cv_atomic_builtins=yes
> +endif
> +endif

What about forcing --disable-nonportable-atomics ?

The code does:

   643 AC_ARG_ENABLE(nonportable-atomics,
   644 [  --enable-nonportable-atomics  Use optimized atomic code which may produce nonportable binaries],
   645 [if test $enableval = yes; then
   646    force_generic_atomics=no
   647  else
   648    force_generic_atomics=yes
   649  fi
   650 ],
   651 [case $host_cpu in
   652    i[[456]]86) force_generic_atomics=yes ;;
   653    *) force_generic_atomics=no ;;
   654 esac
   655 ])
 
So, it looks like, if one does not provide any of --enable/disable, it
will try to decide based on the CPU.

Regards,
Yann E. MORIN.

>  ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
>  APR_DEPENDENCIES += util-linux
>  endif
> -- 
> 2.6.4
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'


More information about the buildroot mailing list