summaryrefslogtreecommitdiff
path: root/src/tools/msvc
diff options
context:
space:
mode:
authorAndres Freund2022-10-06 20:03:31 +0000
committerAndres Freund2022-10-06 20:09:57 +0000
commit4289263cf263ba36e474728f4a02ceb086903f81 (patch)
tree0b6dab2c62d382af076630d08764f8d48ff48e08 /src/tools/msvc
parent0fa41648d77f04d5ad3ed69ff3e3903bd1abf121 (diff)
windows: Adjust FD_SETSIZE via commandline define
When using precompiled headers, we cannot pre-define macros for the system headers from within .c files, as headers are already processed before the #define in the C file is reached. But we can pre-define using -DFD_SETSIZE, as long as that's also used when building the precompiled header. A few files #define FD_SETSIZE 1024 on windows, as the default is only 64. I am hesitant to change FD_SETSIZE globally on windows, due to src/backend/port/win32/socket.c using it to size on-stack arrays. Instead add -DFD_SETSIZE=1024 when building the specific targets needing it. We likely should move away from using select() in those places, but that's a larger change. Reviewed-by: Thomas Munro <thomas.munro@gmail.com> Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com> Reviewed-by: Justin Pryzby <pryzby@telsasoft.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/20221005190829.lda7ttalh4mzrvf4@awork3.anarazel.de Discussion: https://postgr.es/m/CA+hUKG+50eOUbN++ocDc0Qnp9Pvmou23DSXu=ZA6fepOcftKqA@mail.gmail.com Discussion: https://postgr.es/m/20190826054000.GE7005%40paquier.xyz
Diffstat (limited to 'src/tools/msvc')
-rw-r--r--src/tools/msvc/Mkvcbuild.pm27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index ddb4f25eb12..83a3e404254 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -35,6 +35,7 @@ my $libpq;
my @unlink_on_exit;
# Set of variables for modules in contrib/ and src/test/modules/
+my $contrib_defines = {};
my @contrib_uselibpq = ();
my @contrib_uselibpgport = ();
my @contrib_uselibpgcommon = ();
@@ -52,6 +53,7 @@ my @contrib_excludes = (
'unsafe_tests');
# Set of variables for frontend modules
+my $frontend_defines = { 'pgbench' => 'FD_SETSIZE=1024' };
my @frontend_uselibpq =
('pg_amcheck', 'pg_ctl', 'pg_upgrade', 'pgbench', 'psql', 'initdb');
my @frontend_uselibpgport = (
@@ -175,6 +177,7 @@ sub mkvcbuild
$libpgfeutils = $solution->AddProject('libpgfeutils', 'lib', 'misc');
$libpgfeutils->AddDefine('FRONTEND');
+ $libpgfeutils->AddDefine('FD_SETSIZE=1024');
$libpgfeutils->AddIncludeDir('src/interfaces/libpq');
$libpgfeutils->AddFiles('src/fe_utils', @pgfeutilsfiles);
@@ -1120,10 +1123,10 @@ sub AdjustContribProj
{
my $proj = shift;
AdjustModule(
- $proj, \@contrib_uselibpq,
- \@contrib_uselibpgport, \@contrib_uselibpgcommon,
- $contrib_extralibs, $contrib_extrasource,
- $contrib_extraincludes);
+ $proj, $contrib_defines,
+ \@contrib_uselibpq, \@contrib_uselibpgport,
+ \@contrib_uselibpgcommon, $contrib_extralibs,
+ $contrib_extrasource, $contrib_extraincludes);
return;
}
@@ -1131,16 +1134,17 @@ sub AdjustFrontendProj
{
my $proj = shift;
AdjustModule(
- $proj, \@frontend_uselibpq,
- \@frontend_uselibpgport, \@frontend_uselibpgcommon,
- $frontend_extralibs, $frontend_extrasource,
- $frontend_extraincludes);
+ $proj, $frontend_defines,
+ \@frontend_uselibpq, \@frontend_uselibpgport,
+ \@frontend_uselibpgcommon, $frontend_extralibs,
+ $frontend_extrasource, $frontend_extraincludes);
return;
}
sub AdjustModule
{
my $proj = shift;
+ my $module_defines = shift;
my $module_uselibpq = shift;
my $module_uselibpgport = shift;
my $module_uselibpgcommon = shift;
@@ -1149,6 +1153,13 @@ sub AdjustModule
my $module_extraincludes = shift;
my $n = $proj->{name};
+ if ($module_defines->{$n})
+ {
+ foreach my $d ($module_defines->{$n})
+ {
+ $proj->AddDefine($d);
+ }
+ }
if (grep { /^$n$/ } @{$module_uselibpq})
{
$proj->AddIncludeDir('src\interfaces\libpq');