autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: About libdir for 64-bit


From: Russ Allbery
Subject: Re: About libdir for 64-bit
Date: Tue, 16 Jul 2013 13:06:21 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)

Sergio Belkin <address@hidden> writes:

> I have a configure.ac with following:

> AS_CASE([$host], [x86_64*|sparc64*|s390x*|ppc64*], [libdir=$prefix/lib64],
> [libdir=$prefix/lib])

> I'done it in order to make easy the install of package and choose the
> libdir according to arch. But I've found that I can't override if I run
> ./configure llibdir=/whatever and even distros like Debian put libraries in
> /usr/lib//x86_64-linux-gnu

> is there a way to fix it?

I use the following machinery, originally based on work at CMU.  It avoids
hard-coding arches and only changes the directory names if the new names
exist.  The calling conventions aren't horribly well-documented here, I
see, but you would use it as:

    RRA_SET_LIBDIR([$prefix])

in your case.

dnl Determine the library path name.
dnl
dnl Red Hat systems and some other Linux systems use lib64 and lib32 rather
dnl than just lib in some circumstances.  This file provides an Autoconf
dnl macro, RRA_SET_LDFLAGS, which given a variable, a prefix, and an optional
dnl suffix, adds -Lprefix/lib, -Lprefix/lib32, or -Lprefix/lib64 to the
dnl variable depending on which directories exist and the size of a long in
dnl the compilation environment.  If a suffix is given, a slash and that
dnl suffix will be appended, to allow for adding a subdirectory of the library
dnl directory.
dnl
dnl This file also provides the Autoconf macro RRA_SET_LIBDIR, which sets the
dnl libdir variable to PREFIX/lib{,32,64} as appropriate.
dnl
dnl The canonical version of this file is maintained in the rra-c-util
dnl package, available at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
dnl
dnl Written by Russ Allbery <address@hidden>
dnl Copyright 2008, 2009
dnl     The Board of Trustees of the Leland Stanford Junior University
dnl
dnl This file is free software; the authors give unlimited permission to copy
dnl and/or distribute it, with or without modifications, as long as this
dnl notice is preserved.

dnl Probe for the alternate library name that we should attempt on this
dnl architecture, given the size of an int, and set rra_lib_arch_name to that
dnl name.  Separated out so that it can be AC_REQUIRE'd and not run multiple
dnl times.
dnl
dnl There is an unfortunate abstraction violation here where we assume we know
dnl the cache variable name used by Autoconf.  Unfortunately, Autoconf doesn't
dnl provide any other way of getting at that information in shell that I can
dnl see.
AC_DEFUN([_RRA_LIB_ARCH_NAME],
[rra_lib_arch_name=lib
 AC_CHECK_SIZEOF([long])
 AS_IF([test "$ac_cv_sizeof_long" -eq 4 && test -d /usr/lib32],
     [rra_lib_arch_name=lib32],
     [AS_IF([test "$ac_cv_sizeof_long" -eq 8 && test -d /usr/lib64],
         [rra_lib_arch_name=lib64])])])

dnl Set VARIABLE to -LPREFIX/lib{,32,64} or -LPREFIX/lib{,32,64}/SUFFIX as
dnl appropriate.
AC_DEFUN([RRA_SET_LDFLAGS],
[AC_REQUIRE([_RRA_LIB_ARCH_NAME])
 AS_IF([test -d "$2/$rra_lib_arch_name"],
    [AS_IF([test x"$3" = x],
        [$1="[$]$1 -L$2/${rra_lib_arch_name}"],
        [$1="[$]$1 -L$2/${rra_lib_arch_name}/$3"])],
    [AS_IF([test x"$3" = x],
        [$1="[$]$1 -L$2/lib"],
        [$1="[$]$1 -L$2/lib/$3"])])
 $1=`echo "[$]$1" | sed -e 's/^ *//'`])

dnl Set libdir to PREFIX/lib{,32,64} as appropriate.
AC_DEFUN([RRA_SET_LIBDIR],
[AC_REQUIRE([_RRA_LIB_ARCH_NAME])
 AS_IF([test -d "$1/$rra_lib_arch_name"],
    [libdir="$1/${rra_lib_arch_name}"],
    [libdir="$1/lib"])])

-- 
Russ Allbery (address@hidden)             <http://www.eyrie.org/~eagle/>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]