# HG changeset patch # User Bruno Haible # Date 1198682786 -3600 # Node ID 0cc36cd5f0242f7644470fd0426b1ef4d217a197 # Parent 28bab0152c5b04ee749170650f8fb3ded48d84a6 Make --enable-relocatable work with DESTDIR. diff -r 28bab0152c5b -r 0cc36cd5f024 ChangeLog --- a/ChangeLog Wed Dec 26 16:25:28 2007 +0100 +++ b/ChangeLog Wed Dec 26 16:26:26 2007 +0100 @@ -1,3 +1,12 @@ +2007-12-24 Bruno Haible + + 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 Левашев Иван . + 2007-12-24 Bruno Haible Fix link error due to xalloc_die(). diff -r 28bab0152c5b -r 0cc36cd5f024 build-aux/install-reloc --- a/build-aux/install-reloc Wed Dec 26 16:25:28 2007 +0100 +++ b/build-aux/install-reloc Wed Dec 26 16:26:26 2007 +0100 @@ -17,7 +17,7 @@ # along with this program. If not, see . # Usage: -# install-reloc library_path_var library_path_value prefix \ +# install-reloc library_path_var library_path_value prefix destdir \ # compile_command srcdir config_h_dir exeext \ # install_command... destprog # where @@ -25,6 +25,9 @@ # - 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,6 +46,7 @@ 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,17 +54,17 @@ exeext=$RELOC_EXEEXT install_prog=$RELOC_INSTALL_PROG # including the "-c" option else - if test $# -ge 9; then + if test $# -ge 10; 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 + destdir=$4 + compile_command=$5 + srcdir=$6 + builddir=$7 + config_h_dir=$8 + exeext=$9 shift shift shift @@ -70,8 +74,10 @@ shift shift shift + install_prog=$1 # maybe not including the "-c" option + shift else - echo "Usage: $0 library_path_var library_path_value prefix" \ + 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,8 +92,9 @@ 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"` + 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,8 +127,15 @@ # 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. -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 \ diff -r 28bab0152c5b -r 0cc36cd5f024 m4/relocatable.m4 --- a/m4/relocatable.m4 Wed Dec 26 16:25:28 2007 +0100 +++ b/m4/relocatable.m4 Wed Dec 26 16:26:26 2007 +0100 @@ -1,4 +1,4 @@ -# relocatable.m4 serial 11 +# 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,7 +62,7 @@ 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\"" + 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" ;;