[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [patch #6448] [MSVC 7/7] Add MSVC Support
From: |
Peter Rosin |
Subject: |
Re: [patch #6448] [MSVC 7/7] Add MSVC Support |
Date: |
Thu, 07 Aug 2008 10:10:29 +0200 |
User-agent: |
Thunderbird 2.0.0.16 (Windows/20080708) |
Peter Rosin skrev:
Peter Rosin skrev:
Ralf Wildenhues skrev:
* Peter Rosin wrote on Tue, Aug 05, 2008 at 10:38:14AM CEST:
29: static.at:68 static linking flags for programs
m-all-static.exe.manifest isn't installed
What does the manifest file do?
The manifest is an XML file that describes how the executable should
be run. In this case it contains a hint where the side-by-side (SxS)
assembly containing the C runtime (msvcrt80.dll) is. The manifest can
also specify if a file should be executed with elevated priviliges (or
not).
I'm no manifest guru, so the above is perhaps not 100% accurate.
Side note, the mainfest could perhaps be used to support some version
of hardcode_libdir?
The crude fix is to (un)install the mainfest file, the nice fix
is to embed it as a resource in the executable using the manifest
tool (mt.exe).
Here's a patch to fix the manifest failures. Maybe this should be
wrapped up in a postlink_cmds variable instead to match the existing
prelink_cmds?
Replying to self as usual, sorry about the mail flood...
The previous patch was not enough, program linking happened in more than
one place. Here's a new patch that fixes that and also adds the
postlink_cmds variable as mentioned above.
This patch actually fixes all mainfest problems. Tests 39 and 40 now
succeed, but 29 still fails, but 29 now stumbles later when the MSVC
toolchain can't handle static/shared linking of non-libtool libraries.
(The static library is always selected for non-libtool libs, as it gets
the preferred name, foo.lib. The import lib gets the name foo-0.lib and
is only found if there is a libfoo.la)
2008-08-07 Peter Rosin <address@hidden>
* libltdl/m4/libtool.m4 (_LT_LINKER_SHLIBS) <postlink_cmds>:
New tag variable.
[ cygwin, mingw, cegcc ] <cl*>: Embed the manifest file as a
resource.
(_LT_LANG_CXX_CONFIG): Likewise.
* libltdl/config/ltmain.m4sh (func_mode_link): After linking
a program, replace @OUTPUT@ in $postlink_cmds and then execute
the commands.
diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 35ae02f..b78d7ac 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -7340,6 +7340,11 @@ EOF
exit_status=0
func_show_eval "$link_command" 'exit_status=$?'
+ if test -n "$postlink_cmds"; then
+ postlink_cmds=`$ECHO "X$postlink_cmds" | $Xsed -e
'address@hidden@%'"$output"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
# Delete the generated files.
if test -f "$output_objdir/${outputname}S.${objext}"; then
func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
@@ -7385,6 +7390,12 @@ EOF
$opt_dry_run || $RM $output
# Link the executable and exit
func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ postlink_cmds=`$ECHO "X$postlink_cmds" | $Xsed -e
'address@hidden@%'"$output"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
exit $EXIT_SUCCESS
fi
@@ -7418,6 +7429,11 @@ EOF
func_show_eval "$link_command" 'exit $?'
+ if test -n "$postlink_cmds"; then
+ postlink_cmds=`$ECHO "X$postlink_cmds" | $Xsed -e
'address@hidden@%'"$output_objdir/$outputname"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
# Now create the wrapper script.
func_verbose "creating $output"
diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
index 37c0f71..bd71b88 100644
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
@@ -4812,6 +4812,10 @@ _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 "@address@hidden"; then
+ mt -manifest "@address@hidden" -outputresource:"@address@hidden";
+ $RM "@address@hidden";
+ fi'
;;
*)
# Assume MSVC wrapper
@@ -5356,6 +5367,8 @@ _LT_TAGDECL([], [include_expsyms], [1],
[Symbols that must always be exported])
_LT_TAGDECL([], [prelink_cmds], [2],
[Commands necessary for linking programs (against libraries) with
templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
_LT_TAGDECL([], [file_list_spec], [1],
[Specify filename containing input files])
_LT_TAGDECL([], [dashL_envvar], [1],
@@ -5803,6 +5816,10 @@ 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 "@address@hidden"; then
+ mt -manifest "@address@hidden" -outputresource:"@address@hidden";
+ $RM "@address@hidden";
+ fi'
;;
*)
# g++
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, (continued)
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/05
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/06
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/06
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/12
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/07
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support,
Peter Rosin <=
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/09
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/09
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/11
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/13
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/14
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/15
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Ralf Wildenhues, 2008/08/16
- Re: [patch #6448] [MSVC 7/7] Add MSVC Support, Peter Rosin, 2008/08/17