Den 2009-01-13 10:39 skrev Peter Rosin:
embed-manifest-exeext.patch http://lists.gnu.org/archive/html/libtool-patches/2008-09/msg00000.html
2008-09-01 Peter Rosin <[email protected]> * libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) [ cygwin, mingw, cegcc ] <cl*>: @OUTPUT@ may or may not include a trailing $EXEEXT. If mt fails, make sure libtool exits with an error. (_LT_LANG_CXX_CONFIG): Likewise. * tests/exeext.at: New. Make sure linking with both -o prog and -o prog$EXEEXT works. * Makefile.am: Add previous test to testsuite.
>From c1bf926bf5a79b77328f82bb2d88c964f609a6f7 Mon Sep 17 00:00:00 2001 From: Peter Rosin <[email protected]> Date: Mon, 3 Apr 1995 04:10:00 +0200 Subject: [PATCH] patch embed-manifest-exeext.patch --- Makefile.am | 1 + libltdl/m4/libtool.m4 | 22 ++++++++++++++----- tests/exeext.at | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 tests/exeext.at diff --git a/Makefile.am b/Makefile.am index e70cd38..1049289 100644 --- a/Makefile.am +++ b/Makefile.am @@ -465,6 +465,7 @@ TESTSUITE_AT = tests/testsuite.at \ tests/search-path.at \ tests/indirect_deps.at \ tests/archive-in-archive.at \ + tests/exeext.at \ tests/execute-mode.at \ tests/infer-tag.at \ tests/localization.at \ diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index a8f20f0..a9f9035 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -4824,9 +4824,14 @@ _LT_EOF _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(compile_tag, $1)=-TC _LT_TAGVAR(dashl_xform, $1)='s/\(.*\)/\1.lib/' - _LT_TAGVAR(postlink_cmds, $1)='if test -e "@[email protected]"; then - mt -manifest "@[email protected]" -outputresource:"@[email protected]"; - $RM "@[email protected]"; + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + case "$lt_outputfile" in + *.[[eE][xX][eE]]) ;; + *) lt_outputfile="$lt_outputfile.exe" ;; + esac~ + if test -e "$lt_outputfile.manifest"; then + mt -manifest "$lt_outputfile.manifest" -outputresource:"$lt_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; fi' ;; *) @@ -5821,9 +5826,14 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(compile_tag, $1)=-TP _LT_TAGVAR(dashl_xform, $1)='s/\(.*\)/\1.lib/' - _LT_TAGVAR(postlink_cmds, $1)='if test -e "@[email protected]"; then - mt -manifest "@[email protected]" -outputresource:"@[email protected]"; - $RM "@[email protected]"; + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + case "$lt_outputfile" in + *.[[eE][xX][eE]]) ;; + *) lt_outputfile="$lt_outputfile.exe" ;; + esac~ + if test -e "$lt_outputfile.manifest"; then + mt -manifest "$lt_outputfile.manifest" -outputresource:"$lt_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; fi' ;; *) diff --git a/tests/exeext.at b/tests/exeext.at new file mode 100644 index 0000000..30a9e4f --- /dev/null +++ b/tests/exeext.at @@ -0,0 +1,53 @@ +# exeext.at -- ensure that exeext handling works -*- Autotest -*- +# +# Copyright (C) 2008 Free Software Foundation, Inc. +# Written by Peter Rosin, 2008 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +#### + + +AT_SETUP([both of -o prog and -o prog$EXEEXT work]) +AT_KEYWORDS([libtool]) + +AT_CHECK([test -n "$EXEEXT" || exit 77]) + +bin=`pwd`/bin +binext=`pwd`/binext +mkdir src $bin srcext $binext + +AT_DATA(src/prog.c, +[[ +int main(void) { return 0; } +]]) + +$CC $CPPFLAGS $CFLAGS -c src/prog.c -o src/prog.$OBJEXT + +AT_CHECK($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o src/prog src/prog.$OBJEXT, + [0], [ignore], [ignore]) +AT_CHECK($LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o srcext/prog$EXEEXT src/prog.$OBJEXT, + [0], [ignore], [ignore]) + +$LIBTOOL --mode=install cp src/prog $bin/prog +$LIBTOOL --mode=install cp srcext/prog$EXEEXT $binext/prog$EXEEXT + +LT_AT_EXEC_CHECK([$bin/prog]) +LT_AT_EXEC_CHECK([$binext/prog$EXEEXT]) + +AT_CLEANUP -- 1.6.0.4
