bug-gnulib
[Top][All Lists]
Advanced

[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





reply via email to

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