mirror of
https://github.com/postgres/postgres.git
synced 2025-04-21 12:05:57 +03:00
Adjust MSVC build scripts to parse Makefiles for defines
This adjusts the MSVC build scripts to look at the compile flags mentioned in the Makefile to look for -D arguments in order to determine which constants should be defined in Visual Studio builds. One small anomaly that appeared as a result of this change is that the Makefile for the ltree contrib module defined LOWER_NODE, but this was not properly defined in the MSVC build scripts. This meant that MSVC builds would differ in case sensitivity in the ltree module when compared to builds using a make build environment. To maintain the same behavior here we remove the -DLOWER_NODE from the Makefile and just always define it in ltree.h for non-MSVC builds. We need to maintain the old behavior here as this affects the on-disk compatibility of GiST indexes when using the ltree type. The only other resulting change here is that REFINT_VERBOSE is now defined for the autoinc, insert_username and moddatetime contrib modules. Previously on MSVC, this was only defined for the refint module. This aligns the behavior to build environments using make as all 4 of these modules share the same Makefile. Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CAApHDvpo6g5csCTjc_0C7DMvgFPomVb0Rh-AcW5afd=Ya=LRuw@mail.gmail.com
This commit is contained in:
parent
15f16ec651
commit
245de48455
@ -12,7 +12,6 @@ OBJS = \
|
|||||||
ltree_op.o \
|
ltree_op.o \
|
||||||
ltxtquery_io.o \
|
ltxtquery_io.o \
|
||||||
ltxtquery_op.o
|
ltxtquery_op.o
|
||||||
PG_CPPFLAGS = -DLOWER_NODE
|
|
||||||
|
|
||||||
EXTENSION = ltree
|
EXTENSION = ltree
|
||||||
DATA = ltree--1.1--1.2.sql ltree--1.1.sql ltree--1.0--1.1.sql
|
DATA = ltree--1.1--1.2.sql ltree--1.1.sql ltree--1.0--1.1.sql
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
|
#include "ltree.h"
|
||||||
|
|
||||||
#ifdef LOWER_NODE
|
#ifdef LOWER_NODE
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -17,6 +17,19 @@
|
|||||||
*/
|
*/
|
||||||
#define LTREE_LABEL_MAX_CHARS 255
|
#define LTREE_LABEL_MAX_CHARS 255
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOWER_NODE used to be defined in the Makefile via the compile flags.
|
||||||
|
* However the MSVC build scripts neglected to do the same which resulted in
|
||||||
|
* MSVC builds not using LOWER_NODE. Since then, the MSVC scripts have been
|
||||||
|
* modified to look for -D compile flags in Makefiles, so here, in order to
|
||||||
|
* get the historic behavior of LOWER_NODE not being defined on MSVC, we only
|
||||||
|
* define it when not building in that environment. This is important as we
|
||||||
|
* want to maintain the same LOWER_NODE behavior after a pg_update.
|
||||||
|
*/
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#define LOWER_NODE
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint16 len; /* label string length in bytes */
|
uint16 len; /* label string length in bytes */
|
||||||
|
@ -35,7 +35,7 @@ my $libpq;
|
|||||||
my @unlink_on_exit;
|
my @unlink_on_exit;
|
||||||
|
|
||||||
# Set of variables for modules in contrib/ and src/test/modules/
|
# Set of variables for modules in contrib/ and src/test/modules/
|
||||||
my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' };
|
my $contrib_defines = {};
|
||||||
my @contrib_uselibpq =
|
my @contrib_uselibpq =
|
||||||
('dblink', 'oid2name', 'postgres_fdw', 'vacuumlo', 'libpq_pipeline');
|
('dblink', 'oid2name', 'postgres_fdw', 'vacuumlo', 'libpq_pipeline');
|
||||||
my @contrib_uselibpgport = ('libpq_pipeline', 'oid2name', 'vacuumlo');
|
my @contrib_uselibpgport = ('libpq_pipeline', 'oid2name', 'vacuumlo');
|
||||||
@ -964,6 +964,7 @@ sub AddContrib
|
|||||||
my $subdir = shift;
|
my $subdir = shift;
|
||||||
my $n = shift;
|
my $n = shift;
|
||||||
my $mf = Project::read_file("$subdir/$n/Makefile");
|
my $mf = Project::read_file("$subdir/$n/Makefile");
|
||||||
|
my @projects = ();
|
||||||
|
|
||||||
if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
|
if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
|
||||||
{
|
{
|
||||||
@ -971,6 +972,7 @@ sub AddContrib
|
|||||||
my $proj = $solution->AddProject($dn, 'dll', 'contrib', "$subdir/$n");
|
my $proj = $solution->AddProject($dn, 'dll', 'contrib', "$subdir/$n");
|
||||||
$proj->AddReference($postgres);
|
$proj->AddReference($postgres);
|
||||||
AdjustContribProj($proj);
|
AdjustContribProj($proj);
|
||||||
|
push @projects, $proj;
|
||||||
}
|
}
|
||||||
elsif ($mf =~ /^MODULES\s*=\s*(.*)$/mg)
|
elsif ($mf =~ /^MODULES\s*=\s*(.*)$/mg)
|
||||||
{
|
{
|
||||||
@ -982,18 +984,35 @@ sub AddContrib
|
|||||||
$proj->AddFile("$subdir/$n/$filename");
|
$proj->AddFile("$subdir/$n/$filename");
|
||||||
$proj->AddReference($postgres);
|
$proj->AddReference($postgres);
|
||||||
AdjustContribProj($proj);
|
AdjustContribProj($proj);
|
||||||
|
push @projects, $proj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg)
|
elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg)
|
||||||
{
|
{
|
||||||
my $proj = $solution->AddProject($1, 'exe', 'contrib', "$subdir/$n");
|
my $proj = $solution->AddProject($1, 'exe', 'contrib', "$subdir/$n");
|
||||||
AdjustContribProj($proj);
|
AdjustContribProj($proj);
|
||||||
|
push @projects, $proj;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
croak "Could not determine contrib module type for $n\n";
|
croak "Could not determine contrib module type for $n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Process custom compiler flags
|
||||||
|
if ($mf =~ /^PG_CPPFLAGS\s*=\s*(.*)$/mg || $mf =~ /^override\s*CPPFLAGS\s*[+:]?=\s*(.*)$/mg)
|
||||||
|
{
|
||||||
|
foreach my $flag (split /\s+/, $1)
|
||||||
|
{
|
||||||
|
if ($flag =~ /^-D(.*)$/)
|
||||||
|
{
|
||||||
|
foreach my $proj (@projects)
|
||||||
|
{
|
||||||
|
$proj->AddDefine($1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Are there any output data files to build?
|
# Are there any output data files to build?
|
||||||
GenerateContribSqlFiles($n, $mf);
|
GenerateContribSqlFiles($n, $mf);
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user