lkml.org 
[lkml]   [2016]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/27] [AARCH64] Detect ILP32 in configure scripts.
    Date
    From: Andrew Pinski <apinski@cavium.com>

    This adds detecting of ILP32 to the configure scripts.
    Adding to preconfigure detection of ilp32 in preconfigure and then writing out the default-abi in configure.

    * sysdeps/aarch64/preconfigure: Detect ILP32 and set aarch64_config_abi
    to ilp32 for ilp32 and lp64 for lp64. Set machine to either
    aarch64/ilp32 or aarch64/lp64 depending on the ABI that is selected.
    * sysdeps/aarch64/configure.ac: Define HAVE_AARCH64_ILP32 if this is ILP32.
    Set the default-abi to either ilp32, lp64, ilp32_be or lp64_be depending
    on the ABI.
    * sysdeps/aarch64/configure: Regenerate.
    * sysdeps/unix/sysv/linux/aarch64/configure.ac: Set arch_minimum_kernel
    to 3.19.0 for ILP32.
    Set LIBC_SLIBDIR_RTLDDIR to libilp32/lib for ilp32.
    * sysdeps/unix/sysv/linux/aarch64/configure: Regenerate.

    Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
    ---
    sysdeps/aarch64/configure | 15 +++++++++++----
    sysdeps/aarch64/configure.ac | 11 +++++++++--
    sysdeps/aarch64/preconfigure | 11 ++++++++++-
    sysdeps/unix/sysv/linux/aarch64/configure | 22 +++++++++++++++++++---
    sysdeps/unix/sysv/linux/aarch64/configure.ac | 9 +++++++--
    5 files changed, 56 insertions(+), 12 deletions(-)
    mode change 100644 => 100755 sysdeps/aarch64/configure
    mode change 100644 => 100755 sysdeps/unix/sysv/linux/aarch64/configure

    diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
    old mode 100644
    new mode 100755
    index 5bd355a..7dd56e8
    --- a/sysdeps/aarch64/configure
    +++ b/sysdeps/aarch64/configure
    @@ -163,12 +163,19 @@ rm -f conftest*
    fi
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5
    $as_echo "$libc_cv_aarch64_be" >&6; }
    +
    +if test $aarch64_config_abi = ilp32; then
    + $as_echo "#define HAVE_AARCH64_ILP32 1" >>confdefs.h
    +
    +fi
    +
    if test $libc_cv_aarch64_be = yes; then
    $as_echo "#define HAVE_AARCH64_BE 1" >>confdefs.h

    - config_vars="$config_vars
    -default-abi = lp64_be"
    + libc_aarch64_be=_be
    else
    - config_vars="$config_vars
    -default-abi = lp64"
    + libc_aarch64_be=
    fi
    +
    +config_vars="$config_vars
    +default-abi = ${aarch64_config_abi}${libc_aarch64_be}"
    diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
    index 7851dd4..9069325 100644
    --- a/sysdeps/aarch64/configure.ac
    +++ b/sysdeps/aarch64/configure.ac
    @@ -14,9 +14,16 @@ AC_CACHE_CHECK([for big endian],
    yes
    #endif
    ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)])
    +
    +if test $aarch64_config_abi = ilp32; then
    + AC_DEFINE(HAVE_AARCH64_ILP32)
    +fi
    +
    if test $libc_cv_aarch64_be = yes; then
    AC_DEFINE(HAVE_AARCH64_BE)
    - LIBC_CONFIG_VAR([default-abi], [lp64_be])
    + libc_aarch64_be=_be
    else
    - LIBC_CONFIG_VAR([default-abi], [lp64])
    + libc_aarch64_be=
    fi
    +
    +LIBC_CONFIG_VAR([default-abi], [${aarch64_config_abi}${libc_aarch64_be}])
    diff --git a/sysdeps/aarch64/preconfigure b/sysdeps/aarch64/preconfigure
    index d9bd1f8..4bcd8e3 100644
    --- a/sysdeps/aarch64/preconfigure
    +++ b/sysdeps/aarch64/preconfigure
    @@ -1,6 +1,15 @@
    case "$machine" in
    aarch64*)
    base_machine=aarch64
    - machine=aarch64
    + case "$CC $CFLAGS $CPPFLAGS " in
    + *" -mabi=ilp32 "*) aarch64_config_abi=ilp32 ;;
    + *" -mabi=lp64 "*) aarch64_config_abi=lp64 ;;
    + *) aarch64_config_abi=default ;;
    + esac
    + case $aarch64_config_abi in
    + default) machine=aarch64/lp64 aarch64_config_abi=lp64 ;;
    + ilp32) machine=aarch64/ilp32 ;;
    + lp64) machine=aarch64/lp64 ;;
    + esac
    ;;
    esac
    diff --git a/sysdeps/unix/sysv/linux/aarch64/configure b/sysdeps/unix/sysv/linux/aarch64/configure
    old mode 100644
    new mode 100755
    index f48472c..2563e83
    --- a/sysdeps/unix/sysv/linux/aarch64/configure
    +++ b/sysdeps/unix/sysv/linux/aarch64/configure
    @@ -1,9 +1,23 @@
    # This file is generated from configure.ac by Autoconf. DO NOT EDIT!
    # Local configure fragment for sysdeps/unix/sysv/linux/aarch64.

    -arch_minimum_kernel=3.7.0
    -
    -test -n "$libc_cv_slibdir" ||
    +if test $aarch64_config_abi = ilp32; then
    + arch_minimum_kernel=3.19.0
    + test -n "$libc_cv_slibdir" ||
    +case "$prefix" in
    +/usr | /usr/)
    + libc_cv_slibdir=/libilp32
    + libc_cv_rtlddir=/lib
    + if test "$libdir" = '${exec_prefix}/lib'; then
    + libdir='${exec_prefix}/libilp32';
    + # Locale data can be shared between 32-bit and 64-bit libraries.
    + libc_cv_localedir='${exec_prefix}/lib/locale'
    + fi
    + ;;
    +esac
    +else
    + arch_minimum_kernel=3.7.0
    + test -n "$libc_cv_slibdir" ||
    case "$prefix" in
    /usr | /usr/)
    libc_cv_slibdir=/lib64
    @@ -15,3 +29,5 @@ case "$prefix" in
    fi
    ;;
    esac
    +fi
    +
    diff --git a/sysdeps/unix/sysv/linux/aarch64/configure.ac b/sysdeps/unix/sysv/linux/aarch64/configure.ac
    index 211fa9c..6526816 100644
    --- a/sysdeps/unix/sysv/linux/aarch64/configure.ac
    +++ b/sysdeps/unix/sysv/linux/aarch64/configure.ac
    @@ -1,6 +1,11 @@
    GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
    # Local configure fragment for sysdeps/unix/sysv/linux/aarch64.

    -arch_minimum_kernel=3.7.0
    +if test $aarch64_config_abi = ilp32; then
    + arch_minimum_kernel=3.19.0
    + LIBC_SLIBDIR_RTLDDIR([libilp32], [lib])
    +else
    + arch_minimum_kernel=3.7.0
    + LIBC_SLIBDIR_RTLDDIR([lib64], [lib])
    +fi

    -LIBC_SLIBDIR_RTLDDIR([lib64], [lib])
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-06-21 08:01    [W:4.049 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site