From 755542cbf0411fa509325cb0cb216bc0bf4a3f2a 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. Reviewed-by: Rich Salz --- 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 515cf00e20..9cd7aabb81 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 c9a7a26f04..bb2c6bdf82 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.25.1