Skip to content

Commit

Permalink
Optionally, replace prefix in any path form in flags when using reloc…
Browse files Browse the repository at this point in the history
…ate-all.

* configure.ac: If relocate-all is enabled, check if "cygpath" is available on
MinGW hosts and make that information available to the Makefile. That is the
case, e.g., when building with tools from MSYS2.
* build-aux/subst-config-vals.in.sh, build-aux/subst-cross-config-vals.in.sh:
If OCTAVE_RELOCATE_WITH_CYGPATH is "yes", try to replace the prefix in any path
form that is valid. Try to replace the (longer) Windows forms first.
  • Loading branch information
mmuetzel committed Jan 15, 2025
1 parent e98b01b commit 1020b14
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 16 deletions.
28 changes: 20 additions & 8 deletions build-aux/subst-config-vals.in.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,26 @@ texi_macros_file=`echo "@texi_macros_file@" | $SED "s|^${prefix}/\\+||"`
## Is it ok to use single quotes here?
if [ "x@OCTAVE_RELOCATE_ALL@" = "xyes" ]; then
## Replace portions of compiler flags that depend on prefix on target
cppflags=`echo '@CPPFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
if [ "x@OCTAVE_RELOCATE_WITH_CYGPATH@" = "xyes" ]; then
## Replace all path forms of the prefix
cppflags=`echo '@CPPFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
else
cppflags=`echo '@CPPFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fi
else
cppflags=`echo '@CPPFLAGS@' | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED 's|\"|\\\\\\\"|g'`
Expand Down
28 changes: 20 additions & 8 deletions build-aux/subst-cross-config-vals.in.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,26 @@ texi_macros_file=`echo "@texi_macros_file@" | $SED "s|^${prefix}/\\+||"`
## Is it ok to use single quotes here?
if [ "x@OCTAVE_RELOCATE_ALL@" = "xyes" ]; then
## Replace portions of compiler flags that depend on prefix on target
cppflags=`echo '@CPPFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
if [ "x@OCTAVE_RELOCATE_WITH_CYGPATH@" = "xyes" ]; then
## Replace all path forms of the prefix
cppflags=`echo '@CPPFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | sed "s|$(@CYGPATH@ -m @prefix@)|\$\{prefix}|g" | sed "s|$(echo $(@CYGPATH@ -w @prefix@) | sed 's|\\\\|\\\\\\\\|g')|\$\{prefix}|g" | sed "s|$(@CYGPATH@ -u @prefix@)|\$\{prefix}|g" | $SED "s|(@prefix@)|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
else
cppflags=`echo '@CPPFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fftw3_ldflags=`echo '@FFTW3_LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
flibs=`echo '@FLIBS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
ldflags=`echo '@LDFLAGS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
oct_link_opts=`echo '@OCT_LINK_OPTS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_octave_link_deps=`echo '@MKOCTFILE_OCTAVE_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
mkoctfile_oct_link_deps=`echo '@MKOCTFILE_OCT_LINK_DEPS@' | $SED "s|@prefix@|\$\{prefix\}|g" | $SED 's|\"|\\\\\\\"|g'`
fi
else
cppflags=`echo '@CPPFLAGS@' | $SED 's|\"|\\\\\\\"|g'`
fftw3f_ldflags=`echo '@FFTW3F_LDFLAGS@' | $SED 's|\"|\\\\\\\"|g'`
Expand Down
21 changes: 21 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -2754,6 +2754,27 @@ if test $OCTAVE_RELOCATE_ALL = yes; then
fi
AM_CONDITIONAL([AMCOND_RELOCATE_ALL], [test $OCTAVE_RELOCATE_ALL = yes])

OCTAVE_RELOCATE_WITH_CYGPATH="no"
CYGPATH=""
if test $OCTAVE_RELOCATE_ALL = yes; then
case $host_os in
mingw*)
# If this is on MSYS2, paths (including the installation prefix) can be
# represented in UNIX or Windows compatible form. The prefix should be
# relocated no matter in which form it appears.

# Check for the tool "cygpath" that can be used to convert between the
# different forms.
AC_CHECK_TOOL(CYGPATH, [cygpath])
if test -n "$CYGPATH"; then
OCTAVE_RELOCATE_WITH_CYGPATH="yes"
fi
;;
esac
fi
AC_SUBST(OCTAVE_RELOCATE_WITH_CYGPATH)
AC_SUBST(CYGPATH)

### Determine whether Mercurial ID should be embedded in library binaries.

ENABLE_HG_ID=yes
Expand Down

0 comments on commit 1020b14

Please sign in to comment.