vcxproj: handle GUI programs, too

So far, we only built Console programs, but we are about to introduce a
program that targets the Windows subsystem (i.e. it is a so-called "GUI"
program).

Let's handle this preemptively in the script that generates the Visual
Studio files.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin 2021-04-07 15:48:50 +02:00
parent 314c8cdbd3
commit 4ced2abfb7

View File

@ -92,6 +92,13 @@ sub createProject {
my $rcdefines = $defines;
$rcdefines =~ s/(?<!\\)"/\\$&/g;
my $entrypoint = 'wmainCRTStartup';
my $subsystem = 'Console';
if (grep /^-mwindows$/, @{$$build_structure{"$prefix${name}_LFLAGS"}}) {
$entrypoint = 'wWinMainCRTStartup';
$subsystem = 'Windows';
}
my $dir = $vcxproj;
$dir =~ s/\/[^\/]*$//;
die "Could not create the directory $dir for $label project!\n" unless (-d "$dir" || mkdir "$dir");
@ -179,9 +186,9 @@ sub createProject {
<AdditionalLibraryDirectories>\$(VCPKGLibDirectory);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>\$(VCPKGLibs);\$(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>invalidcontinue.obj %(AdditionalOptions)</AdditionalOptions>
<EntryPointSymbol>wmainCRTStartup</EntryPointSymbol>
<EntryPointSymbol>$entrypoint</EntryPointSymbol>
<ManifestFile>$cdup\\compat\\win32\\git.manifest</ManifestFile>
<SubSystem>Console</SubSystem>
<SubSystem>$subsystem</SubSystem>
</Link>
EOM
if ($target eq 'libgit') {