pg_probackup

Форк
0
/
gen_probackup_project.pl 
231 строка · 4.9 Кб
1
# -*-perl-*- hey - emacs - this is a perl file
2
# my $currpath = cwd();
3

4
our $pgsrc;
5
our $currpath;
6

7
BEGIN {
8
# path to the pg_probackup dir
9
$currpath = File::Basename::dirname(Cwd::abs_path($0));
10
use Cwd;
11
use File::Basename;
12
if (($#ARGV+1)==1) 
13
{
14
	$pgsrc = shift @ARGV;
15
	if($pgsrc eq "--help"){
16
		print STDERR "Usage $0 pg-source-dir\n";
17
		print STDERR "Like this:\n";
18
		print STDERR "$0 C:/PgProject/postgresql.10dev/postgrespro\n";
19
		print STDERR "May need to run this first:\n";
20
		print STDERR "CALL \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\" amd64\n";
21
		exit 1;
22
	}
23
}
24
else
25
{
26
	use Cwd qw(abs_path);
27
	my $path = dirname(abs_path($0));
28
	chdir($path);
29
	chdir("../..");
30
	$pgsrc = cwd();
31
	$currpath = "contrib/pg_probackup";
32
}
33
chdir("$pgsrc/src/tools/msvc");
34
push(@INC, "$pgsrc/src/tools/msvc");
35
chdir("../../..") if (-d "../msvc" && -d "../../../src");
36

37
}
38
use Win32;
39
use Carp;
40
use strict;
41
use warnings;
42

43

44
use Project;
45
use Solution;
46
use File::Copy;
47
use Config;
48
use VSObjectFactory;
49
use List::Util qw(first);
50

51
use Exporter;
52
our (@ISA, @EXPORT_OK);
53
@ISA       = qw(Exporter);
54
@EXPORT_OK = qw(Mkvcbuild);
55

56
my $solution;
57
my $libpgport;
58
my $libpgcommon;
59
my $libpgfeutils;
60
my $postgres;
61
my $libpq;
62
my @unlink_on_exit;
63

64
if (-d "src/fe_utils")
65
{
66
	$libpgfeutils = 1;
67
}
68
else
69
{
70
	$libpgfeutils = 0;
71
}
72

73

74

75
use lib "src/tools/msvc";
76

77
use Mkvcbuild;
78

79
# if (-e "src/tools/msvc/buildenv.pl")
80
# {
81
#	do "src/tools/msvc/buildenv.pl";
82
# }
83
# elsif (-e "./buildenv.pl")
84
# {
85
#	do "./buildenv.pl";
86
# }
87

88
# set up the project
89
our $config;
90
do "config_default.pl";
91
do "config.pl" if (-f "src/tools/msvc/config.pl");
92

93
# my $vcver = Mkvcbuild::mkvcbuild($config);
94
my $vcver = build_pgprobackup($config);
95

96
# check what sort of build we are doing
97

98
my $bconf     = $ENV{CONFIG}   || "Release";
99
my $msbflags  = $ENV{MSBFLAGS} || "";
100
my $buildwhat = $ARGV[1]       || "";
101

102
# if (uc($ARGV[0]) eq 'DEBUG')
103
# {
104
# 	$bconf = "Debug";
105
# }
106
# elsif (uc($ARGV[0]) ne "RELEASE")
107
# {
108
# 	$buildwhat = $ARGV[0] || "";
109
# }
110

111
# printf "currpath=$currpath";
112

113
# exit(0);
114
# ... and do it
115
system("msbuild pg_probackup.vcxproj /verbosity:normal $msbflags /p:Configuration=$bconf" );
116

117
# report status
118

119
my $status = $? >> 8;
120
printf("Status: $status\n");
121
printf("Output file built in the folder $pgsrc/$bconf/pg_probackup\n");
122

123
exit $status;
124

125

126

127
sub build_pgprobackup
128
{
129
	our $config = shift;
130

131
	chdir('../../..') if (-d '../msvc' && -d '../../../src');
132
	die 'Must run from root or msvc directory'
133
	  unless (-d 'src/tools/msvc' && -d 'src');
134

135
	# my $vsVersion = DetermineVisualStudioVersion();
136
	my $vsVersion = '16.00';
137

138
	$solution = CreateSolution($vsVersion, $config);
139

140
	$libpq = $solution->AddProject('libpq', 'dll', 'interfaces',
141
		'src/interfaces/libpq');
142
	if ($libpgfeutils)
143
	{
144
		$libpgfeutils = $solution->AddProject('libpgfeutils', 'lib', 'misc');
145
	}
146
	$libpgcommon = $solution->AddProject('libpgcommon', 'lib', 'misc');
147
	$libpgport = $solution->AddProject('libpgport', 'lib', 'misc');
148

149
	#vvs test
150
	my $probackup =
151
	  $solution->AddProject("pg_probackup", 'exe', "pg_probackup"); #, 'contrib/pg_probackup'
152
	$probackup->AddDefine('FRONTEND');
153
	$probackup->AddFiles(
154
		"$currpath/src", 
155
		'archive.c',
156
		'backup.c',
157
		'catalog.c',
158
		'catchup.c',
159
		'configure.c',
160
		'data.c',
161
		'delete.c',
162
		'dir.c',
163
		'fetch.c',
164
		'help.c',
165
		'init.c',
166
		'merge.c',
167
		'parsexlog.c',
168
		'pg_probackup.c',
169
		'restore.c',
170
		'show.c',
171
		'stream.c',
172
		'util.c',
173
		'validate.c',
174
		'checkdb.c',
175
		'ptrack.c'
176
		);
177
	$probackup->AddFiles(
178
		"$currpath/src/utils",
179
		'configuration.c',
180
		'file.c',
181
		'remote.c',
182
		'json.c',
183
		'logger.c',
184
		'parray.c',
185
		'pgut.c',
186
		'thread.c',
187
		'remote.c'
188
		);
189
	$probackup->AddFile("$pgsrc/src/backend/access/transam/xlogreader.c");
190
	$probackup->AddFile("$pgsrc/src/backend/utils/hash/pg_crc.c");
191
	$probackup->AddFiles(
192
		"$pgsrc/src/bin/pg_basebackup", 
193
		'receivelog.c',
194
		'streamutil.c'
195
		);
196

197
	if (-e "$pgsrc/src/bin/pg_basebackup/walmethods.c") 
198
	{
199
		$probackup->AddFile("$pgsrc/src/bin/pg_basebackup/walmethods.c");
200
	}
201

202
	$probackup->AddFile("$pgsrc/src/bin/pg_rewind/datapagemap.c");
203

204
	$probackup->AddFile("$pgsrc/src/interfaces/libpq/pthread-win32.c");
205
	$probackup->AddFile("$pgsrc/src/timezone/strftime.c");
206

207
        $probackup->AddIncludeDir("$pgsrc/src/bin/pg_basebackup");
208
        $probackup->AddIncludeDir("$pgsrc/src/bin/pg_rewind");
209
        $probackup->AddIncludeDir("$pgsrc/src/interfaces/libpq");
210
        $probackup->AddIncludeDir("$pgsrc/src");
211
        $probackup->AddIncludeDir("$pgsrc/src/port");
212
        $probackup->AddIncludeDir("$pgsrc/src/include/portability");
213

214
        $probackup->AddIncludeDir("$currpath");
215
        $probackup->AddIncludeDir("$currpath/src");
216
        $probackup->AddIncludeDir("$currpath/src/utils");
217

218
    if ($libpgfeutils)
219
    {
220
		$probackup->AddReference($libpq, $libpgfeutils, $libpgcommon, $libpgport);
221
    }
222
	else
223
	{
224
		$probackup->AddReference($libpq, $libpgcommon, $libpgport);
225
	}
226
	$probackup->AddLibrary('ws2_32.lib');
227

228
	$probackup->Save();
229
	return $solution->{vcver};
230

231
}
232

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.