libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/7] Add file name conversion from $build to toolchain.


From: Peter Rosin
Subject: Re: [PATCH 1/7] Add file name conversion from $build to toolchain.
Date: Mon, 06 Sep 2010 10:11:31 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2

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 <address@hidden>
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 <address@hidden>
---
 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  <address@hidden>
+
+       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  <address@hidden>
 
        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:
+
address@hidden
address@hidden lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32}
address@hidden example
address@hidden lt_cv_to_tool_file_cmd
address@hidden 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}
address@hidden lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32}
 @end example
 @cindex lt_cv_to_host_file_cmd
address@hidden 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
 
address@hidden 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}.
address@hidden 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




reply via email to

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