summaryrefslogtreecommitdiffstats
path: root/win/tcl.m4
diff options
context:
space:
mode:
authorhobbs <hobbs>2010-08-27 00:50:51 (GMT)
committerhobbs <hobbs>2010-08-27 00:50:51 (GMT)
commite8ae0e2a82a55688671443664a4ccf8f4a05a2b9 (patch)
treece0ee98fbdec76d80335ab94c8c52f7a77b01a08 /win/tcl.m4
parent954dff064d9c313b4d2d44e2876d8346e9d9f43a (diff)
downloadtcl-e8ae0e2a82a55688671443664a4ccf8f4a05a2b9.zip
tcl-e8ae0e2a82a55688671443664a4ccf8f4a05a2b9.tar.gz
tcl-e8ae0e2a82a55688671443664a4ccf8f4a05a2b9.tar.bz2
* win/Makefile.in (VC_MANIFEST_EMBED_DLL VC_MANIFEST_EMBED_EXE):
* win/configure, win/configure.in, win/tcl.m4: SC_EMBED_MANIFEST macro and --enable-embedded-manifest configure arg added to support manifest embedding where we know the magic. Help prevents DLL hell with MSVC8+.
Diffstat (limited to 'win/tcl.m4')
-rw-r--r--win/tcl.m450
1 files changed, 50 insertions, 0 deletions
diff --git a/win/tcl.m4 b/win/tcl.m4
index 6dbd69e..f673921 100644
--- a/win/tcl.m4
+++ b/win/tcl.m4
@@ -924,3 +924,53 @@ AC_DEFUN([SC_TCL_CFG_ENCODING], [
AC_DEFINE(TCL_CFGVAL_ENCODING,"cp1252")
fi
])
+
+#--------------------------------------------------------------------
+# SC_EMBED_MANIFEST
+#
+# Figure out if we can embed the manifest where necessary
+#
+# Arguments:
+# An optional manifest to merge into DLL/EXE.
+#
+# Results:
+# Will define the following vars:
+# VC_MANIFEST_EMBED_DLL
+# VC_MANIFEST_EMBED_EXE
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_EMBED_MANIFEST], [
+ AC_MSG_CHECKING(whether to embed manifest)
+ AC_ARG_ENABLE(embedded-manifest,
+ AC_HELP_STRING([--enable-embedded-manifest],
+ [embed manifest if possible (default: yes)]),
+ [embed_ok=$enableval], [embed_ok=yes])
+
+ VC_MANIFEST_EMBED_DLL=
+ VC_MANIFEST_EMBED_EXE=
+ result=no
+ if test "$embed_ok" = "yes" -a "${SHARED_BUILD}" = "1" \
+ -a "$GCC" != "yes" ; then
+ # Add the magic to embed the manifest into the dll/exe
+ AC_EGREP_CPP([manifest needed], [
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+print("manifest needed")
+#endif
+ ], [
+ # Could do a CHECK_PROG for mt, but should always be with MSVC8+
+ # Could add 'if test -f' check, but manifest should be created
+ # in this compiler case
+ # Add in a manifest argument that may be specified
+ VC_MANIFEST_EMBED_DLL="mt.exe -nologo -manifest \[$]@.manifest $1 -outputresource:\[$]@\;2"
+ VC_MANIFEST_EMBED_EXE="mt.exe -nologo -manifest \[$]@.manifest $1 -outputresource:\[$]@\;1"
+ result=yes
+ if test "x$1" != x ; then
+ result="yes ($1)"
+ fi
+ ])
+ fi
+ AC_MSG_RESULT([$result])
+ AC_SUBST(VC_MANIFEST_EMBED_DLL)
+ AC_SUBST(VC_MANIFEST_EMBED_EXE)
+])