| # -*-perl-*- hey - emacs - this is a perl file |
| |
| # Copyright (c) 2021, 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"); |
| |
| # 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] || ""; |
| } |
| } |
| |
| my $buildclient = 0; |
| if ($buildwhat eq "client") |
| { |
| $buildclient = 1; |
| $buildwhat = $ARGV[1] || ""; |
| } |
| my $vcver = Mkvcbuild::mkvcbuild($config, $buildclient); |
| # ... 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; |