blob: e5ce14d77d14b09444894cae954da77fe7a3db1c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# -*-perl-*- hey - emacs - this is a perl file
# Copyright (c) 2021-2022, PostgreSQL Global Development Group
#
# Script that provides 'make' functionality for msvc builds.
#
# src/tools/msvc/build.pl
#
use strict;
use warnings;
use FindBin;
use lib $FindBin::RealBin;
use Cwd;
use Mkvcbuild;
sub usage
{
die( "Usage: build.pl [ [ <configuration> ] <component> ]\n"
. "Options are case-insensitive.\n"
. " configuration: Release | Debug. This sets the configuration\n"
. " to build. Default is Release.\n"
. " component: name of component to build. An empty value means\n"
. " to build all components.\n");
}
chdir('../../..') if (-d '../msvc' && -d '../../../src');
die 'Must run from root or msvc directory'
unless (-d 'src/tools/msvc' && -d 'src');
usage() unless scalar(@ARGV) <= 2;
# buildenv.pl is for specifying the build environment settings
# it should contain lines like:
# $ENV{PATH} = "c:/path/to/bison/bin;$ENV{PATH}";
if (-e "src/tools/msvc/buildenv.pl")
{
do "./src/tools/msvc/buildenv.pl";
}
elsif (-e "./buildenv.pl")
{
do "./buildenv.pl";
}
# set up the project
our $config;
do "./src/tools/msvc/config_default.pl";
do "./src/tools/msvc/config.pl" if (-f "src/tools/msvc/config.pl");
my $vcver = Mkvcbuild::mkvcbuild($config);
# check what sort of build we are doing
my $bconf = $ENV{CONFIG} || "Release";
my $msbflags = $ENV{MSBFLAGS} || "";
my $buildwhat = $ARGV[1] || "";
if (defined($ARGV[0]))
{
if (uc($ARGV[0]) eq 'DEBUG')
{
$bconf = "Debug";
}
elsif (uc($ARGV[0]) ne "RELEASE")
{
$buildwhat = $ARGV[0] || "";
}
}
# ... and do it
if ($buildwhat)
{
system(
"msbuild $buildwhat.vcxproj /verbosity:normal $msbflags /p:Configuration=$bconf"
);
}
else
{
system(
"msbuild pgsql.sln /verbosity:normal $msbflags /p:Configuration=$bconf"
);
}
# report status
my $status = $? >> 8;
exit $status;
|