[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
make --enable-relocatable work with DESTDIR
From: |
Bruno Haible |
Subject: |
make --enable-relocatable work with DESTDIR |
Date: |
Wed, 26 Dec 2007 16:26:46 +0100 |
User-agent: |
KMail/1.5.4 |
Левашев Иван also reported [1] that --enable-relocatable does not work when
DESTDIR is used. This fixes it.
2007-12-24 Bruno Haible <address@hidden>
Make --enable-relocatable work with DESTDIR.
* build-aux/install-reloc: Accept another argument 'destdir'. Use it
to compute installdir from destprog.
* m4/relocatable.m4 (gl_RELOCATABLE_BODY): In INSTALL_PROGRAM_ENV,
also set the RELOC_DESTDIR variable.
Reported by Левашев Иван <address@hidden>.
*** build-aux/install-reloc.orig 2007-12-25 01:05:27.000000000 +0100
--- build-aux/install-reloc 2007-12-25 00:55:31.000000000 +0100
***************
*** 17,23 ****
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Usage:
! # install-reloc library_path_var library_path_value prefix \
# compile_command srcdir config_h_dir exeext \
# install_command... destprog
# where
--- 17,23 ----
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Usage:
! # install-reloc library_path_var library_path_value prefix destdir \
# compile_command srcdir config_h_dir exeext \
# install_command... destprog
# where
***************
*** 25,30 ****
--- 25,33 ----
# - library_path_value is a colon separated list of directories that contain
# the libraries at installation time (use this instead of -rpath)
# - prefix is the base directory at installation time
+ # - destdir is a string that is prepended to all file names at installation
+ # time; it is already prepended to destprog but not to library_path_value
+ # and prefix
# - compile_command is a C compiler compilation and linking command
# - srcdir is the directory where to find relocwrapper.c and its
dependencies
# - builddir is the directory where to find built dependencies (namely,
***************
*** 43,48 ****
--- 46,52 ----
library_path_var=$RELOC_LIBRARY_PATH_VAR
library_path_value=$RELOC_LIBRARY_PATH_VALUE
prefix=$RELOC_PREFIX
+ destdir=$RELOC_DESTDIR
compile_command=$RELOC_COMPILE_COMMAND
srcdir=$RELOC_SRCDIR
builddir=$RELOC_BUILDDIR
***************
*** 50,66 ****
exeext=$RELOC_EXEEXT
install_prog=$RELOC_INSTALL_PROG # including the "-c" option
else
! if test $# -ge 9; then
# Get fixed position arguments.
library_path_var=$1
library_path_value=$2
prefix=$3
! compile_command=$4
! srcdir=$5
! builddir=$6
! config_h_dir=$7
! exeext=$8
! install_prog=$9 # maybe not including the "-c" option
shift
shift
shift
--- 54,70 ----
exeext=$RELOC_EXEEXT
install_prog=$RELOC_INSTALL_PROG # including the "-c" option
else
! if test $# -ge 10; then
# Get fixed position arguments.
library_path_var=$1
library_path_value=$2
prefix=$3
! destdir=$4
! compile_command=$5
! srcdir=$6
! builddir=$7
! config_h_dir=$8
! exeext=$9
shift
shift
shift
***************
*** 70,77 ****
shift
shift
shift
else
! echo "Usage: $0 library_path_var library_path_value prefix" \
"compile_command srcdir builddir config_h_dir exeext" \
"install_command... destprog" 1>&2
exit 1
--- 74,83 ----
shift
shift
shift
+ install_prog=$1 # maybe not including the "-c" option
+ shift
else
! echo "Usage: $0 library_path_var library_path_value prefix destdir" \
"compile_command srcdir builddir config_h_dir exeext" \
"install_command... destprog" 1>&2
exit 1
***************
*** 86,93 ****
done
# Remove trailing $exeext, if present.
if test -n "$exeext"; then
! sedexpr='s|'`echo "$exeext" | sed -e 's,\.,\\\.,g'`'$||'
! destprog=`echo "$destprog" | sed -e "$sedexpr"`
fi
# Outputs a command and runs it.
--- 92,100 ----
done
# Remove trailing $exeext, if present.
if test -n "$exeext"; then
! sed_quote='s,\.,\\.,g'
! sed_remove_exeext='s|'`echo "$exeext" | sed -e "$sed_quote"`'$||'
! destprog=`echo "$destprog" | sed -e "$sed_remove_exeext"`
fi
# Outputs a command and runs it.
***************
*** 120,127 ****
# wrapper.
test -n "$libdirs" || exit 0
! # Compile wrapper.
installdir=`echo "$destprog" | sed -e 's,/[^/]*$,,'`
func_verbose $compile_command \
-I"$builddir" -I"$srcdir" -I"$config_h_dir" \
-DHAVE_CONFIG_H -DIN_RELOCWRAPPER -DNO_XMALLOC \
--- 127,141 ----
# wrapper.
test -n "$libdirs" || exit 0
! # Determine installdir from destprog, removing a leading destdir if present.
installdir=`echo "$destprog" | sed -e 's,/[^/]*$,,'`
+ if test -n "$destdir"; then
+ sed_quote='s,\([|.\*^$[]\),\\\1,g'
+ sed_remove_destdir='s|^'`echo "$destdir" | sed -e "$sed_quote"`'||'
+ installdir=`echo "$installdir" | sed -e "$sed_remove_destdir"`
+ fi
+
+ # Compile wrapper.
func_verbose $compile_command \
-I"$builddir" -I"$srcdir" -I"$config_h_dir" \
-DHAVE_CONFIG_H -DIN_RELOCWRAPPER -DNO_XMALLOC \
*** m4/relocatable.m4.orig 2007-12-25 01:05:27.000000000 +0100
--- m4/relocatable.m4 2007-12-25 00:58:12.000000000 +0100
***************
*** 1,4 ****
! # relocatable.m4 serial 11
dnl Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # relocatable.m4 serial 12
dnl Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
***************
*** 62,68 ****
dnl consisting of more than one word - libtool doesn't support this.
dnl So we abuse the INSTALL_PROGRAM_ENV hook, originally meant for the
dnl 'install-strip' target.
! INSTALL_PROGRAM_ENV="RELOC_LIBRARY_PATH_VAR=\"$shlibpath_var\"
RELOC_LIBRARY_PATH_VALUE=\"\$(RELOCATABLE_LIBRARY_PATH)\"
RELOC_PREFIX=\"\$(prefix)\" RELOC_COMPILE_COMMAND=\"\$(CC) \$(CPPFLAGS)
\$(CFLAGS) \$(LDFLAGS)\" RELOC_SRCDIR=\"\$(RELOCATABLE_SRC_DIR)\"
RELOC_BUILDDIR=\"\$(RELOCATABLE_BUILD_DIR)\"
RELOC_CONFIG_H_DIR=\"\$(RELOCATABLE_CONFIG_H_DIR)\" RELOC_EXEEXT=\"\$(EXEEXT)\"
RELOC_INSTALL_PROG=\"$INSTALL_PROGRAM\""
AC_SUBST([INSTALL_PROGRAM_ENV])
case "$ac_aux_dir" in
/*) INSTALL_PROGRAM="$ac_aux_dir/install-reloc" ;;
--- 62,68 ----
dnl consisting of more than one word - libtool doesn't support this.
dnl So we abuse the INSTALL_PROGRAM_ENV hook, originally meant for the
dnl 'install-strip' target.
! INSTALL_PROGRAM_ENV="RELOC_LIBRARY_PATH_VAR=\"$shlibpath_var\"
RELOC_LIBRARY_PATH_VALUE=\"\$(RELOCATABLE_LIBRARY_PATH)\"
RELOC_PREFIX=\"\$(prefix)\" RELOC_DESTDIR=\"\$(DESTDIR)\"
RELOC_COMPILE_COMMAND=\"\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(LDFLAGS)\"
RELOC_SRCDIR=\"\$(RELOCATABLE_SRC_DIR)\"
RELOC_BUILDDIR=\"\$(RELOCATABLE_BUILD_DIR)\"
RELOC_CONFIG_H_DIR=\"\$(RELOCATABLE_CONFIG_H_DIR)\" RELOC_EXEEXT=\"\$(EXEEXT)\"
RELOC_INSTALL_PROG=\"$INSTALL_PROGRAM\""
AC_SUBST([INSTALL_PROGRAM_ENV])
case "$ac_aux_dir" in
/*) INSTALL_PROGRAM="$ac_aux_dir/install-reloc" ;;
[1] http://lists.gnu.org/archive/html/bug-gnu-utils/2007-12/msg00001.html
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- make --enable-relocatable work with DESTDIR,
Bruno Haible <=