Charles Wilson wrote: > How does that sound, as an intermediate plan?
Implemented as attached, which should be applied on top of the -take3 patch. Changes: ltmain.m4sh: func_pathlist_convert_check: now takes four arguments, FROM_PATHSEP, TO_PATHSEP, FROM_PATHLIST, TO_PATHLIST func_pathlist_convert_check_mingw: removed func_init_to_host_pathlist_cmd: new function described previously func_to_host_pathlist: use it. func_msys_to_mingw_pathlist_convert, func_cygwin_to_mingw_pathlist_convert, func_nix_to_mingw_pathlist_convert: call 4-arg version of func_pathlist_convert_check, instead of mingw variant. func_msys_to_cygwin_pathlist_convert, func_nix_to_cygwin_pathlist_convert: Adapt to 4-arg varseion of func_pathlist_convert_check. libtool.m4 _LT_PATH_CONVERSION_FUNCTIONS: eliminate libtool variable to_host_pathlist_cmd. Also, AC_SUBST(to_host_path_cmd). testsuite.at: Ensure to_host_path_cmd is passed as a variable setting on the configure line for (new testsuite) tests. Makefile.am: Ensure to_host_path_cmd is included in TEST_ENVIRONMENT so that it is passed to (old testsuite) tests. I'm not sure about the Makefile.am part, but the rest should be pretty non-controversial. Unlike the -take3 patch it modifies. <g>. -- Chuck
diff --git a/Makefile.am b/Makefile.am index b6b1bfa..63221c3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -505,7 +505,8 @@ TESTS_ENVIRONMENT = MAKE="$(MAKE)" CC="$(CC)" CFLAGS="$(CFLAGS)" \ CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" CXXCPP="$(CXXCPP)" \ F77="$(F77)" FFLAGS="$(FFLAGS)" \ FC="$(FC)" FCFLAGS="$(FCFLAGS)" \ - GCJ="$(GCJ)" GCJFLAGS="$(GCJFLAGS)" + GCJ="$(GCJ)" GCJFLAGS="$(GCJFLAGS)" \ + lt_cv_to_host_path_cmd="$(to_host_path_cmd)" BUILDCHECK_ENVIRONMENT = _lt_pkgdatadir="$(abs_top_srcdir)" \ LIBTOOLIZE="$(abs_top_builddir)/libtoolize" \ diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh index d22cbf8..42a970e 100644 --- a/libltdl/config/ltmain.m4sh +++ b/libltdl/config/ltmain.m4sh @@ -2528,9 +2528,9 @@ fi\ " } -################################### -# PATH CONVERSION HELPER FUNCTION # -################################### +#################################### +# PATH CONVERSION HELPER FUNCTIONS # +#################################### # func_wine_to_win32_path ARG # Helper function used by path conversion functions @@ -2686,51 +2686,35 @@ func_path_convert_check () # end func_path_convert_check -# func_pathlist_convert_check ARG1 ARG2 -# Verify that ARG1 (a path in $build format) was -# converted to $host format in ARG2. Otherwise, emit -# an error message, but continue (resetting -# func_to_host_path_result to a simplistic fallback -# value (see below). +# func_pathlist_convert_check FROM_PATHSEP TO_PATHSEP FROM_PATHLIST TO_PATHLIST +# Verify that FROM_PATHLIST (a path in $build format) was converted +# $host format in TO_PATHLIST. Otherwise, emit an error message, but +# continue, resetting func_to_host_path_result to a simplistic +# fallback value (see below). func_pathlist_convert_check () { $opt_debug - if test -z "$2" && test -n "$1"; then + if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path(s) corresponding to" - func_error " \`$1'" + func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." - # Fallback. - func_to_host_pathlist_result="$1" - fi -} -# end func_pathlist_convert_check - - -# func_pathlist_convert_check_mingw ARG1 ARG2 -# Verify that ARG1 (a path in $build format) was -# converted to $host format in ARG2. Otherwise, emit -# an error message, but continue (resetting -# func_to_host_path_result to a simplistic fallback -# value (see below). -# This function is specific for mingw $hosts. -func_pathlist_convert_check_mingw () -{ - $opt_debug - if test -z "$2" && test -n "$1"; then - func_error "Could not determine the host path(s) corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This may break if $1 contains DOS-style drive - # specifications. The fix is not to complicate the expression - # below, but for the user to provide a working wine installation + # Fallback. If even this fallback fails, the fix is not to + # complicate the expression below, but for the user to provide, + # in that situation, whatever elements are missing from the + # environment so that the actual pathlist conversion functions + # work properly (for instance, a working wine installation # with winepath so that path translation in the cross-to-mingw - # case works properly. - lt_replace_pathsep_nix_to_dos="s|:|;|g" - func_to_host_pathlist_result=`echo "$1" |\ - $SED -e "$lt_replace_pathsep_nix_to_dos"` + # case works). + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_pathlist_result=`echo "$3" |\ + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_pathlist_result="$3" + fi fi } -# end func_pathlist_convert_check_mingw +# end func_pathlist_convert_check # func_pathlist_front_back_pathsep FRONTPAT BACKPAT REPL ORIG @@ -2940,12 +2924,35 @@ func_nix_to_cygwin_path_convert () # on output. +# func_init_to_host_pathlist_cmd +# Ensures that function "pointer" variable +# $to_host_pathlist_cmd is set to the appropriate +# value, based on the value of $to_host_path_cmd. +# +# ASSUMPTIONS: all such conversion functions are +# named using the following convention: +# path conversion function : xxxxxx_path_convert () +# pathlist conversion function: xxxxxx_pathlist_convert () +# where, for any given $build/$host combination the 'xxxxxx' +# value is the same. +to_host_pathlist_cmd= +func_init_to_host_pathlist_cmd () +{ + $opt_debug + if test -z "$to_host_pathlist_cmd"; then + func_stripname '' '_path_convert' "$to_host_path_cmd" + to_host_pathlist_cmd="${func_stripname_result}_pathlist_convert" + fi +} + + # func_to_host_pathlist ARG # converts the pathlist ARG from $build format to $host # format. func_to_host_pathlist () { $opt_debug + func_init_to_host_pathlist_cmd eval '$to_host_pathlist_cmd "$1"' } # end func_to_host_pathlist @@ -2985,8 +2992,8 @@ func_msys_to_mingw_pathlist_convert () func_to_host_pathlist_tmp1=$func_stripname_result func_msys_to_win32 "$func_to_host_pathlist_tmp1" func_to_host_pathlist_result="$func_msys_to_win32_result" - func_pathlist_convert_check_mingw "$func_to_host_pathlist_tmp1" \ - "$func_to_host_pathlist_result" + func_pathlist_convert_check ":" ";" \ + "$func_to_host_pathlist_tmp1" "$func_to_host_pathlist_result" func_pathlist_front_back_pathsep ":*" "*:" ";" "$1" fi } @@ -3012,8 +3019,8 @@ func_cygwin_to_mingw_pathlist_convert () func_stripname : : "$1" func_to_host_pathlist_tmp1=$func_stripname_result func_to_host_pathlist_result=`cygpath -m -p "$func_to_host_pathlist_tmp1"` - func_pathlist_convert_check_mingw "$func_to_host_pathlist_tmp1" \ - "$func_to_host_pathlist_result" + func_pathlist_convert_check ":" ";" \ + "$func_to_host_pathlist_tmp1" "$func_to_host_pathlist_result" func_pathlist_front_back_pathsep ":*" "*:" ";" "$1" fi } @@ -3040,8 +3047,8 @@ func_nix_to_mingw_pathlist_convert () func_to_host_pathlist_tmp1=$func_stripname_result func_wine_to_win32_pathlist "$func_to_host_pathlist_tmp1" func_to_host_pathlist_result="$func_wine_to_win32_pathlist_result" - func_pathlist_convert_check_mingw "$func_to_host_pathlist_tmp1" \ - "$func_to_host_pathlist_result" + func_pathlist_convert_check ":" ";" \ + "$func_to_host_pathlist_tmp1" "$func_to_host_pathlist_result" func_pathlist_front_back_pathsep ":*" "*:" ";" "$1" fi } @@ -3072,8 +3079,8 @@ func_msys_to_cygwin_pathlist_convert () func_msys_to_win32 "$func_to_host_pathlist_tmp1" func_cygpath -u -p "$func_msys_to_win32_result" func_to_host_pathlist_result="$func_cygpath_result" - func_pathlist_convert_check "$func_to_host_pathlist_tmp1" \ - "$func_to_host_pathlist_result" + func_pathlist_convert_check ":" ":" \ + "$func_to_host_pathlist_tmp1" "$func_to_host_pathlist_result" func_pathlist_front_back_pathsep ":*" "*:" ":" "$1" fi } @@ -3103,8 +3110,8 @@ func_nix_to_cygwin_pathlist_convert () func_wine_to_win32_pathlist "$func_to_host_pathlist_tmp1" func_cygpath -u -p "$func_wine_to_win32_pathlist_result" func_to_host_pathlist_result="$func_cygpath_result" - func_pathlist_convert_check "$func_to_host_pathlist_tmp1" \ - "$func_to_host_pathlist_result" + func_pathlist_convert_check ":" ":" \ + "$func_to_host_pathlist_tmp1" "$func_to_host_pathlist_result" func_pathlist_front_back_pathsep ":*" "*:" ":" "$1" fi } diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index f260eac..347a38f 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -7310,10 +7310,10 @@ _LT_EOF # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which path conversion functions should be -# used by func_to_host_path and func_to_host_pathlist. -# These are needed for certain cross-compile configurations -# and "native" mingw (which is actually an msys->mingw -# cross). +# used by func_to_host_path (and, implicitly, by +# func_to_host_pathlist). These are needed for certain +# cross-compile configurations and "native" mingw (which +# is actually an msys->mingw cross). m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl @@ -7351,45 +7351,10 @@ AC_CACHE_VAL(lt_cv_to_host_path_cmd, ;; esac ]) +to_host_path_cmd=$lt_cv_to_host_path_cmd AC_MSG_RESULT([$lt_cv_to_host_path_cmd]) _LT_DECL([to_host_path_cmd], [lt_cv_to_host_path_cmd], [0], [convert $build paths to $host format])dnl -AC_MSG_CHECKING([how to convert $build pathlists to $host format]) -AC_CACHE_VAL(lt_cv_to_host_pathlist_cmd, -[case $host in - *mingw* ) - case $build in - *mingw* ) # actually msys - lt_cv_to_host_pathlist_cmd=func_msys_to_mingw_pathlist_convert - ;; - *cygwin* ) - lt_cv_to_host_pathlist_cmd=func_cygwin_to_mingw_pathlist_convert - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_pathlist_cmd=func_nix_to_mingw_pathlist_convert - ;; - esac - ;; - *cygwin* ) - case $build in - *mingw* ) # actually msys - lt_cv_to_host_pathlist_cmd=func_msys_to_cygwin_pathlist_convert - ;; - *cygwin* ) - lt_cv_to_host_pathlist_cmd=func_noop_pathlist_convert - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_pathlist_cmd=func_nix_to_cygwin_pathlist_convert - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_pathlist_cmd=func_noop_pathlist_convert - ;; -esac -]) -AC_MSG_RESULT([$lt_cv_to_host_pathlist_cmd]) -_LT_DECL([to_host_pathlist_cmd], [lt_cv_to_host_pathlist_cmd], - [0], [convert $build pathlists to $host format])dnl +AC_SUBST([to_host_path_cmd])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/tests/testsuite.at b/tests/testsuite.at index 92e786e..7a9cf13 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -38,7 +38,7 @@ for tool in ACLOCAL AUTOHEADER AUTOCONF AUTOMAKE AUTORECONF; do done export ACLOCAL AUTOHEADER AUTOCONF AUTOMAKE AUTORECONF eval `$LIBTOOL --config | grep '^EGREP='` -eval `$LIBTOOL --config | $EGREP '^(host|host_os|host_alias|build|build_alias)='` +eval `$LIBTOOL --config | $EGREP '^(host|host_os|host_alias|build|build_alias|to_host_path_cmd)='` configure_options=--prefix=/nonexistent if test -n "$host_alias"; then configure_options="$configure_options --host $host_alias" @@ -46,6 +46,9 @@ fi if test -n "$build_alias"; then configure_options="$configure_options --build $build_alias" fi +if test -n "$to_host_path_cmd"; then + configure_options="$configure_options lt_cv_to_host_path_cmd=$to_host_path_cmd" +fi if (FOO=bar; unset FOO) >/dev/null 2>&1; then unset=unset else