Den 2010-09-06 08:42 skrev Peter Rosin: > I have a patch ready with some updates to both the fake and the lying case > (and the nits requested by Ralf), will see if I can find a way to post > without destroying tabs and without causing you all trouble... > > Also, no comments for 2/7 and 3/7, does that mean that those are ok?
Here's an update, let me know if this patch sending technique works for you. >From 375a576d095b69bfeb11d5b560201d65ce70e132 Mon Sep 17 00:00:00 2001 From: Peter Rosin <p...@lysator.liu.se> Date: Mon, 6 Sep 2010 08:23:52 +0200 Subject: [PATCH 1/7] Add file name conversion from $build to toolchain. * configure.ac: Ensure to_tool_file_cmd is available to Makefile. * libltdl/m4/libtool.m4 (_LT_PATH_CONVERSION_FUNCTIONS): Add cache variable lt_cv_to_tool_file_cmd that describes how to convert file names from $build to toolchain format. * libltdl/config/ltmain.m4sh (func_to_tool_file): New function that utilizes the above. * Makefile.am: Ensure to_tool_file_cmd is included in TEST_ENVIRONMENT so that it is passed to (old testsuite) tests. * testsuite.at: Ensure to_tool_file_cmd is passed as a variable setting on the configure line for (new testsuite) tests. * doc/libtool.texi (libtool script content): Update with to_tool_file_cmd description. (Cygwin to MinGW Cross): Update to mention lt_cv_to_tool_file_cmd. Signed-off-by: Peter Rosin <p...@lysator.liu.se> --- ChangeLog | 17 +++++++++++++++++ Makefile.am | 3 ++- configure.ac | 1 + doc/libtool.texi | 26 ++++++++++++++++++++++++-- libltdl/config/ltmain.m4sh | 12 ++++++++++++ libltdl/m4/libtool.m4 | 20 +++++++++++++++++++- tests/testsuite.at | 5 ++++- 7 files changed, 79 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 448393f..f352d14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2010-09-06 Peter Rosin <p...@lysator.liu.se> + + Add file name conversion from $build to toolchain. + * configure.ac: Ensure to_tool_file_cmd is available to Makefile. + * libltdl/m4/libtool.m4 (_LT_PATH_CONVERSION_FUNCTIONS): Add + cache variable lt_cv_to_tool_file_cmd that describes how to + convert file names from $build to toolchain format. + * libltdl/config/ltmain.m4sh (func_to_tool_file): New function + that utilizes the above. + * Makefile.am: Ensure to_tool_file_cmd is included in + TEST_ENVIRONMENT so that it is passed to (old testsuite) tests. + * testsuite.at: Ensure to_tool_file_cmd is passed as a variable + setting on the configure line for (new testsuite) tests. + * doc/libtool.texi (libtool script content): Update with + to_tool_file_cmd description. + (Cygwin to MinGW Cross): Update to mention lt_cv_to_tool_file_cmd. + 2010-09-02 Ralf Wildenhues <ralf.wildenh...@gmx.de> tests: avoid spurious test failure due to library mode on HP-UX. diff --git a/Makefile.am b/Makefile.am index 48fbf73..dcd0876 100644 --- a/Makefile.am +++ b/Makefile.am @@ -518,7 +518,8 @@ TESTS_ENVIRONMENT = MAKE="$(MAKE)" CC="$(CC)" CFLAGS="$(CFLAGS)" \ F77="$(F77)" FFLAGS="$(FFLAGS)" \ FC="$(FC)" FCFLAGS="$(FCFLAGS)" \ GCJ="$(GCJ)" GCJFLAGS="$(GCJFLAGS)" \ - lt_cv_to_host_file_cmd="$(to_host_file_cmd)" + lt_cv_to_host_file_cmd="$(to_host_file_cmd)" \ + lt_cv_to_tool_file_cmd="$(to_tool_file_cmd)" BUILDCHECK_ENVIRONMENT = _lt_pkgdatadir="$(abs_top_srcdir)" \ LIBTOOLIZE="$(abs_top_builddir)/libtoolize" \ diff --git a/configure.ac b/configure.ac index aaa946f..d36adde 100644 --- a/configure.ac +++ b/configure.ac @@ -203,6 +203,7 @@ LT_LANG(Windows Resource) # Ensure the correct file name (and path) conversion function # is available to the test suite. AC_SUBST([to_host_file_cmd])dnl +AC_SUBST([to_tool_file_cmd])dnl ## --------------------------- ## ## Work out which tests to run ## diff --git a/doc/libtool.texi b/doc/libtool.texi index 573536e..f5d2f97 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -6230,6 +6230,16 @@ relative file names are used in the build system, and non-Windows-supported Unix idioms such as symlinks and mount points are avoided, this scenario should work. +If you must use absolute file names, you will have to force Libtool to convert +file names for the toolchain in this case, by doing the following before you +run configure: + +...@example +...@kbd{export lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32} +...@end example +...@cindex lt_cv_to_tool_file_cmd +...@cindex func_convert_file_cygwin_to_w32 + In the @emph{lying} Cygwin to MinGW cross compile case, you lie to the build system: @@ -6247,14 +6257,18 @@ running under @emph{Cygwin} and not MinGW. In this case, libtool does that you are performing a native MinGW build. However, as described in (@pxref{Native MinGW File Name Conversion}), that scenario triggers an ``MSYS to Windows'' file name conversion. This, of course, is the wrong conversion -since we are actually running under Cygwin. To force the correct file name -conversion in this situation, you should do the following @emph{before} +since we are actually running under Cygwin. Also, the toolchain is expecting +Windows file names (not Cygwin) but unless told so Libtool will feed Cygwin +file names to the toolchain in this case. To force the correct file name +conversions in this situation, you should do the following @emph{before} running configure: @example @kbd{export lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32} +...@kbd{export lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32} @end example @cindex lt_cv_to_host_file_cmd +...@cindex lt_cv_to_tool_file_cmd @cindex func_convert_file_cygwin_to_w32 Note that this relies on internal implementation details of libtool, and @@ -6801,6 +6815,14 @@ Linker flag (passed through the C compiler) used to generate thread-safe libraries. @end defvar +...@defvar to_tool_file_cmd +If the toolchain is not native to the build system (e.g.@: if you are using +some Unix to drive the scripting together with a Windows toolchain running +in Wine) this variable describes how to convert file names from the format +used by the build system to the format used by the toolchain. Normally set +to @samp{func_convert_file_noop}. +...@end defvar + @defvar version_type The library version numbering type. One of @samp{libtool}, @samp{freebsd-aout}, @samp{freebsd-elf}, @samp{irix}, @samp{linux}, diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh index c31f788..2cccd47 100644 --- a/libltdl/config/ltmain.m4sh +++ b/libltdl/config/ltmain.m4sh @@ -873,6 +873,18 @@ func_to_host_file () # end func_to_host_file +# func_to_tool_file ARG +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. +func_to_tool_file () +{ + $opt_debug + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result +} +# end func_to_tool_file + + # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index 666130d..fa46813 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -7718,5 +7718,23 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/tests/testsuite.at b/tests/testsuite.at index c646c5d..ea13ec9 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -37,7 +37,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|to_host_file_cmd)='` +eval `$LIBTOOL --config | $EGREP '^(host|host_os|host_alias|build|build_alias|to_host_file_cmd|to_tool_file_cmd)='` configure_options=--prefix=/nonexistent if test -n "$host_alias"; then configure_options="$configure_options --host $host_alias" @@ -48,6 +48,9 @@ fi if test -n "$to_host_file_cmd"; then configure_options="$configure_options lt_cv_to_host_file_cmd=$to_host_file_cmd" fi +if test -n "$to_tool_file_cmd"; then + configure_options="$configure_options lt_cv_to_tool_file_cmd=$to_tool_file_cmd" +fi if (FOO=bar; unset FOO) >/dev/null 2>&1; then unset=unset else -- 1.7.1