From a95ce7f604ecbc243f743e4363b960ed4979c577 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 14 Jul 2016 09:23:36 +0200 Subject: [PATCH] Windows: take care of manifest files The easiest way to take care of manifest files is to integrate them into the associated binary (.exe or .dll). MT (the Manifest Tool) is the utility to use for this. --- Configurations/00-base-templates.conf | 4 ++++ Configurations/windows-makefile.tmpl | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index 515cf00e20a..9cd7aabb81d 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -91,6 +91,10 @@ ar => "lib", arflags => "/nologo", aroutflag => "/out:", + mt => "mt", + mtflags => "-nologo", + mtinflag => "-manifest ", + mtoutflag => "-outputresource:", build_file => "makefile", build_scheme => [ "unified", "windows" ], diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index c9a7a26f040..bb2c6bdf82d 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -157,6 +157,11 @@ AR={- $target{ar} -} ARFLAGS= {- $target{arflags} -} AROUTFLAG={- $target{aroutflag} || "/out:" -} +MT={- $target{mt} -} +MTFLAGS= {- $target{mtflags} -} +MTINFLAG={- $target{mtinflag} || "-manifest " -} +MTOUTFLAG={- $target{mtoutflag} || "-outputresource:" -} + AS={- $target{as} -} ASFLAGS={- $target{asflags} -} ASOUTFLAG={- $target{asoutflag} -} @@ -460,10 +465,13 @@ $target: $deps "$ordinalsfile" "$mkdef_pl" DEL $shlib.def.tmp "\$(PERL)" "$mkrc_pl" $shlib$shlibext > $shlib.rc \$(RC) \$(RCOUTFLAG)$shlib.res $shlib.rc + IF EXIST $shlib$shlibext.manifest DEL /F /Q $shlib$shlibext.manifest \$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) \\ /implib:\$@ \$(LDOUTFLAG)$shlib$shlibext /def:$shlib.def @<< || (DEL /Q \$(\@B).* $shlib.* && EXIT 1) $objs $shlib.res$linklibs \$(EX_LIBS) << + IF EXIST $shlib$shlibext.manifest \\ + \$(MT) \$(MTFLAGS) \$(MTINFLAG) $shlib$shlibext.manifest \$(MTOUTFLAG)$shlib$shlibext IF EXIST apps\\$shlib$shlibext DEL /Q /F apps\\$shlib$shlibext IF EXIST test\\$shlib$shlibext DEL /Q /F test\\$shlib$shlibext COPY $shlib$shlibext apps @@ -482,6 +490,7 @@ EOF compute_lib_depends(@{$args{deps}})); return <<"EOF"; $dso$dsoext: $deps + IF EXIST $dso$dsoext.manifest DEL /F /Q $dso$dsoext.manifest \$(LD) \$(LDFLAGS) \$(DSO_LDFLAGS) \$(LDOUTFLAG)$dso$dsoext /def:<< @<< LIBRARY $dso_n EXPORTS @@ -490,6 +499,8 @@ EXPORTS << $objs$linklibs \$(EX_LIBS) << + IF EXIST $dso$dsoext.manifest \\ + \$(MT) \$(MTFLAGS) \$(MTINFLAG) $dso$dsoext.manifest \$(MTOUTFLAG)$dso$dsoext EOF } sub obj2lib { @@ -520,9 +531,12 @@ EOF compute_lib_depends(@{$args{deps}})); return <<"EOF"; $bin$exeext: $deps + IF EXIST $bin$exeext.manifest DEL /F /Q $bin$exeext.manifest \$(LD) \$(LDFLAGS) \$(BIN_LDFLAGS) \$(LDOUTFLAG)$bin$exeext @<< $objs setargv.obj$linklibs \$(EX_LIBS) << + IF EXIST $bin$exeext.manifest \\ + \$(MT) \$(MTFLAGS) \$(MTINFLAG) $bin$exeext.manifest \$(MTOUTFLAG)$bin$exeext EOF } sub in2script { -- 2.47.2