automake
[Top][All Lists]
Advanced

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

Re: method for altering installation location


From: Michael Felt
Subject: Re: method for altering installation location
Date: Fri, 20 Nov 2015 00:06:02 +0000

I have seen a lot of solutions where .../lib/files.extension is used for
32-bit and .../lib64/files.extension or .../lib/64/files.extension.

I am undecided about what I prefer of these two.

However, as my focus is AIX - I will prefer to use only one directory and
the same file (archive) name and even same member names - and utilize an
AIX feature that permits the same member name for both 32 and 64 bit - as
the linker/loader will only dlopen one, depending on the mode of the
application.

This does complicate the final packaging - but I am hoping to resolve/solve
that outside of the GNU autotools. Instead, I will make the 32-bit library
a pre-requisite and add the glue to include/copy the 64-bit members into
the existing 32-bit archive.

For packaging Linux distros I would look at what seems to be the convention
- and try to follow that.

On Fri, Nov 13, 2015 at 7:57 PM, Eric Blake <address@hidden> wrote:

> On 11/13/2015 12:11 PM, Andy Falanga (afalanga) wrote:
> > How does one properly make a build system install to the
> > system-preferred locations for 64-bit binaries?  I'm wondering how to
> > properly make my build system choose "/usr/lib64" over simply "/usr/lib"
> > when configure is run.  I know this can be done simply via
> > "--prefix=/usr --libdir=lib64", and maybe this is what it should be
>
> Yes, that IS the preferred way (although autoconf's config.site can make
> it easier).  Your configure script should not hard code any knowledge,
> rather the user of your configure script should supply their knowledge.
>
> It's also recommended that you convince your distro to install a
> /usr/share/config.site file, which is the easiest way to get
> './configure --prefix=/usr' to just do the right things for all the
> other variables.  Fedora has already done so:
>
> $ rpm -qf /usr/share/config.site
> autoconf-2.69-20.fc22.noarch
> $ cat /usr/share/config.site
> # This is the config.site file to satisfy FHS defaults when installing
> below
> # /usr.
> #
> # You may override this file by your config.site using the CONFIG_SITE env
> # variable.
> #
> # Note: This file includes also RHEL/Fedora fix for installing libraries
> into
> # "/lib/lib64" on 64bit systems.
>
> if test -n "$host"; then
>     # skip when cross-compiling
>     return 0
> fi
>
> if test "$prefix" = /usr \
>    || { test "$prefix" = NONE && test "$ac_default_prefix" = /usr ; }
> then
>     test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
>     test "$sharedstatedir" = '${prefix}/com' && sharedstatedir=/var
>     test "$localstatedir" = '${prefix}/var' && localstatedir=/var
>
>     ARCH=`uname -m`
>     for i in x86_64 ppc64 s390x aarch64; do
>         if test $ARCH = $i; then
>             test "$libdir" = '${exec_prefix}/lib' &&
> libdir='${exec_prefix}/lib64'
>             break
>         fi
>     done
> fi
>
>
> > (along with some type of bootstrap script).  I was just wondering if
> > there are already elegant/"smiled upon" methods for doing this in
> > configure (i.e. configure.ac).
>
> There's nothing for you to do in configure.ac (that doesn't scale -
> you'd have to modify every packages' configure.ac to get them to all act
> the same).  Rather, the work should be done by whoever wants
> installation of things into /usr to just work.
>
> See also the autoconf manual:
> https://www.gnu.org/software/autoconf/manual/autoconf.html#Site-Defaults
>
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
>


reply via email to

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