forward vs backward slashes in msvc build code
I understand that on Windows, you can use forward slashes in path names
interchangeably with backward slashes (except possibly in the shell). I
have developed the attached patch to change the msvc build code to use
forward slashes consistently. Together with the other attached patch,
which is an unpolished hack, this allows me to run the build.pl script
on not-Windows. It won't actually build, but it will create all the
project files. That way, I can check whether some makefile hackery
would break the Windows build. Could someone verify this please?
Attachments:
0001-Workarounds-for-lack-of-Win32-module.patchtext/x-patch; name=0001-Workarounds-for-lack-of-Win32-module.patchDownload
>From 46c7e31ee49f32fb373a8bd10c3bd5e777359053 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sat, 14 Feb 2015 22:42:41 -0500
Subject: [PATCH 1/2] Workarounds for lack of Win32 module
---
src/tools/msvc/Mkvcbuild.pm | 2 +-
src/tools/msvc/Project.pm | 2 +-
src/tools/msvc/Solution.pm | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index dba9b63..879589d 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -6,7 +6,7 @@ package Mkvcbuild;
# src/tools/msvc/Mkvcbuild.pm
#
use Carp;
-use Win32;
+#use Win32;
use strict;
use warnings;
use Project;
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index b9b5a23..6d84d89 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -21,7 +21,7 @@ sub _new
my $self = {
name => $name,
type => $type,
- guid => Win32::GuidGen(),
+ guid => $^O eq 'MSWin32' ? Win32::GuidGen() : '{FIXME}',
files => {},
references => [],
libraries => [],
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 39e41f6..9bd864c 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -562,7 +562,7 @@ EOF
}
if ($fld ne "")
{
- $flduid{$fld} = Win32::GuidGen();
+ $flduid{$fld} = $^O eq 'MSWin32' ? Win32::GuidGen() : '{FIXME}';
print SLN <<EOF;
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "$fld", "$fld", "$flduid{$fld}"
EndProject
--
2.3.0
0002-Use-forward-slash-instead-of-backward-slash-in-msvc-.patchtext/x-patch; name=0002-Use-forward-slash-instead-of-backward-slash-in-msvc-.patchDownload
>From 1898bb7812920c64d19476a77db8adaaa54cba46 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sat, 14 Feb 2015 22:43:03 -0500
Subject: [PATCH 2/2] Use forward slash instead of backward slash in msvc build
code
---
src/tools/msvc/MSBuildProject.pm | 2 +-
src/tools/msvc/Mkvcbuild.pm | 322 +++++++++++++++++++--------------------
src/tools/msvc/Project.pm | 41 +++--
src/tools/msvc/Solution.pm | 138 ++++++++---------
4 files changed, 250 insertions(+), 253 deletions(-)
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index 37958f9..a16f9ac 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -127,7 +127,7 @@ EOF
foreach my $fileNameWithPath (sort keys %{ $self->{files} })
{
confess "Bad format filename '$fileNameWithPath'\n"
- unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
+ unless ($fileNameWithPath =~ m!^(.*)/([^/]+)\.(c|cpp|y|l|rc)$!);
my $dir = $1;
my $fileName = $2;
if ($fileNameWithPath =~ /\.y$/ or $fileNameWithPath =~ /\.l$/)
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 879589d..8820d3a 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -56,9 +56,9 @@ sub mkvcbuild
{
our $config = shift;
- chdir('..\..\..') if (-d '..\msvc' && -d '..\..\..\src');
+ chdir('../../..') if (-d '../msvc' && -d '../../../src');
die 'Must run from root or msvc directory'
- unless (-d 'src\tools\msvc' && -d 'src');
+ unless (-d 'src/tools/msvc' && -d 'src');
my $vsVersion = DetermineVisualStudioVersion();
@@ -85,36 +85,36 @@ sub mkvcbuild
$libpgport = $solution->AddProject('libpgport', 'lib', 'misc');
$libpgport->AddDefine('FRONTEND');
- $libpgport->AddFiles('src\port', @pgportfiles);
+ $libpgport->AddFiles('src/port', @pgportfiles);
$libpgcommon = $solution->AddProject('libpgcommon', 'lib', 'misc');
$libpgcommon->AddDefine('FRONTEND');
- $libpgcommon->AddFiles('src\common', @pgcommonfrontendfiles);
+ $libpgcommon->AddFiles('src/common', @pgcommonfrontendfiles);
- $postgres = $solution->AddProject('postgres', 'exe', '', 'src\backend');
- $postgres->AddIncludeDir('src\backend');
- $postgres->AddDir('src\backend\port\win32');
- $postgres->AddFile('src\backend\utils\fmgrtab.c');
+ $postgres = $solution->AddProject('postgres', 'exe', '', 'src/backend');
+ $postgres->AddIncludeDir('src/backend');
+ $postgres->AddDir('src/backend/port/win32');
+ $postgres->AddFile('src/backend/utils/fmgrtab.c');
$postgres->ReplaceFile(
- 'src\backend\port\dynloader.c',
- 'src\backend\port\dynloader\win32.c');
- $postgres->ReplaceFile('src\backend\port\pg_sema.c',
- 'src\backend\port\win32_sema.c');
- $postgres->ReplaceFile('src\backend\port\pg_shmem.c',
- 'src\backend\port\win32_shmem.c');
- $postgres->ReplaceFile('src\backend\port\pg_latch.c',
- 'src\backend\port\win32_latch.c');
- $postgres->AddFiles('src\port', @pgportfiles);
- $postgres->AddFiles('src\common', @pgcommonbkndfiles);
- $postgres->AddDir('src\timezone');
- # We need source files from src\timezone, but that directory's resource
+ 'src/backend/port/dynloader.c',
+ 'src/backend/port/dynloader/win32.c');
+ $postgres->ReplaceFile('src/backend/port/pg_sema.c',
+ 'src/backend/port/win32_sema.c');
+ $postgres->ReplaceFile('src/backend/port/pg_shmem.c',
+ 'src/backend/port/win32_shmem.c');
+ $postgres->ReplaceFile('src/backend/port/pg_latch.c',
+ 'src/backend/port/win32_latch.c');
+ $postgres->AddFiles('src/port', @pgportfiles);
+ $postgres->AddFiles('src/common', @pgcommonbkndfiles);
+ $postgres->AddDir('src/timezone');
+ # We need source files from src/timezone, but that directory's resource
# file pertains to "zic", not to the backend.
- $postgres->RemoveFile('src\timezone\win32ver.rc');
- $postgres->AddFiles('src\backend\parser', 'scan.l', 'gram.y');
- $postgres->AddFiles('src\backend\bootstrap', 'bootscanner.l',
+ $postgres->RemoveFile('src/timezone/win32ver.rc');
+ $postgres->AddFiles('src/backend/parser', 'scan.l', 'gram.y');
+ $postgres->AddFiles('src/backend/bootstrap', 'bootscanner.l',
'bootparse.y');
- $postgres->AddFiles('src\backend\utils\misc', 'guc-file.l');
- $postgres->AddFiles('src\backend\replication', 'repl_scanner.l',
+ $postgres->AddFiles('src/backend/utils\misc', 'guc-file.l');
+ $postgres->AddFiles('src/backend/replication', 'repl_scanner.l',
'repl_gram.y');
$postgres->AddDefine('BUILDING_DLL');
$postgres->AddLibrary('secur32.lib');
@@ -125,30 +125,30 @@ sub mkvcbuild
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $postgres->RemoveFile('src\backend\libpq\be-secure-openssl.c');
+ $postgres->RemoveFile('src/backend/libpq/be-secure-openssl.c');
}
my $snowball = $solution->AddProject('dict_snowball', 'dll', '',
- 'src\backend\snowball');
+ 'src/backend/snowball');
# This Makefile uses VPATH to find most source files in a subdirectory.
$snowball->RelocateFiles(
- 'src\backend\snowball\libstemmer',
+ 'src/backend/snowball/libstemmer',
sub {
return shift !~ /(dict_snowball.c|win32ver.rc)$/;
});
- $snowball->AddIncludeDir('src\include\snowball');
+ $snowball->AddIncludeDir('src/include/snowball');
$snowball->AddReference($postgres);
my $plpgsql =
- $solution->AddProject('plpgsql', 'dll', 'PLs', 'src\pl\plpgsql\src');
- $plpgsql->AddFiles('src\pl\plpgsql\src', 'pl_gram.y');
+ $solution->AddProject('plpgsql', 'dll', 'PLs', 'src/pl/plpgsql/src');
+ $plpgsql->AddFiles('src/pl/plpgsql/src', 'pl_gram.y');
$plpgsql->AddReference($postgres);
if ($solution->{options}->{perl})
{
- my $plperlsrc = "src\\pl\\plperl\\";
+ my $plperlsrc = "src/pl/plperl/";
my $plperl =
- $solution->AddProject('plperl', 'dll', 'PLs', 'src\pl\plperl');
+ $solution->AddProject('plperl', 'dll', 'PLs', 'src/pl/plperl');
$plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE');
$plperl->AddDefine('PLPERL_HAVE_UID_GID');
foreach my $xs ('SPI.xs', 'Util.xs')
@@ -173,15 +173,15 @@ sub mkvcbuild
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_perlboot.pl')
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_perlboot.pl')
|| Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_trusted.pl'))
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_trusted.pl'))
{
- print 'Building src\pl\plperl\perlchunks.h ...' . "\n";
+ print 'Building src/pl/plperl/perlchunks.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'text2macro.pl '
@@ -189,29 +189,29 @@ sub mkvcbuild
. 'plc_perlboot.pl plc_trusted.pl '
. '>perlchunks.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\perlchunks.h'))
- || -z 'src\pl\plperl\perlchunks.h')
+ if ((!(-f 'src/pl/plperl/perlchunks.h'))
+ || -z 'src/pl/plperl/perlchunks.h')
{
- unlink('src\pl\plperl\perlchunks.h'); # if zero size
+ unlink('src/pl/plperl/perlchunks.h'); # if zero size
die 'Failed to create perlchunks.h' . "\n";
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\plperl_opmask.h',
- 'src\pl\plperl\plperl_opmask.pl'))
+ 'src/pl/plperl/plperl_opmask.h',
+ 'src/pl/plperl/plperl_opmask.pl'))
{
- print 'Building src\pl\plperl\plperl_opmask.h ...' . "\n";
+ print 'Building src/pl/plperl/plperl_opmask.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'plperl_opmask.pl '
. 'plperl_opmask.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\plperl_opmask.h'))
- || -z 'src\pl\plperl\plperl_opmask.h')
+ if ((!(-f 'src/pl/plperl/plperl_opmask.h'))
+ || -z 'src/pl/plperl/plperl_opmask.h')
{
- unlink('src\pl\plperl\plperl_opmask.h'); # if zero size
+ unlink('src/pl/plperl/plperl_opmask.h'); # if zero size
die 'Failed to create plperl_opmask.h' . "\n";
}
}
@@ -276,62 +276,62 @@ sub mkvcbuild
}
$libpq = $solution->AddProject('libpq', 'dll', 'interfaces',
- 'src\interfaces\libpq');
+ 'src/interfaces/libpq');
$libpq->AddDefine('FRONTEND');
$libpq->AddDefine('UNSAFE_STAT_OK');
- $libpq->AddIncludeDir('src\port');
+ $libpq->AddIncludeDir('src/port');
$libpq->AddLibrary('secur32.lib');
$libpq->AddLibrary('ws2_32.lib');
$libpq->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap});
- $libpq->UseDef('src\interfaces\libpq\libpqdll.def');
- $libpq->ReplaceFile('src\interfaces\libpq\libpqrc.c',
- 'src\interfaces\libpq\libpq.rc');
+ $libpq->UseDef('src/interfaces/libpq/libpqdll.def');
+ $libpq->ReplaceFile('src/interfaces/libpq/libpqrc.c',
+ 'src/interfaces/libpq/libpq.rc');
$libpq->AddReference($libpgport);
# The OBJS scraper doesn't know about ifdefs, so remove fe-secure-openssl.c
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $libpq->RemoveFile('src\interfaces\libpq\fe-secure-openssl.c');
+ $libpq->RemoveFile('src/interfaces/libpq/fe-secure-openssl.c');
}
my $libpqwalreceiver =
$solution->AddProject('libpqwalreceiver', 'dll', '',
- 'src\backend\replication\libpqwalreceiver');
- $libpqwalreceiver->AddIncludeDir('src\interfaces\libpq');
+ 'src/backend/replication/libpqwalreceiver');
+ $libpqwalreceiver->AddIncludeDir('src/interfaces/libpq');
$libpqwalreceiver->AddReference($postgres, $libpq);
my $pgtypes = $solution->AddProject(
'libpgtypes', 'dll',
- 'interfaces', 'src\interfaces\ecpg\pgtypeslib');
+ 'interfaces', 'src/interfaces/ecpg/pgtypeslib');
$pgtypes->AddDefine('FRONTEND');
$pgtypes->AddReference($libpgport);
- $pgtypes->UseDef('src\interfaces\ecpg\pgtypeslib\pgtypeslib.def');
- $pgtypes->AddIncludeDir('src\interfaces\ecpg\include');
+ $pgtypes->UseDef('src/interfaces/ecpg/pgtypeslib/pgtypeslib.def');
+ $pgtypes->AddIncludeDir('src/interfaces/ecpg/include');
my $libecpg = $solution->AddProject('libecpg', 'dll', 'interfaces',
- 'src\interfaces\ecpg\ecpglib');
+ 'src/interfaces/ecpg/ecpglib');
$libecpg->AddDefine('FRONTEND');
- $libecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpg->AddIncludeDir('src\interfaces\libpq');
- $libecpg->AddIncludeDir('src\port');
- $libecpg->UseDef('src\interfaces\ecpg\ecpglib\ecpglib.def');
+ $libecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpg->AddIncludeDir('src/interfaces/libpq');
+ $libecpg->AddIncludeDir('src/port');
+ $libecpg->UseDef('src/interfaces/ecpg/ecpglib/ecpglib.def');
$libecpg->AddLibrary('ws2_32.lib');
$libecpg->AddReference($libpq, $pgtypes, $libpgport);
my $libecpgcompat = $solution->AddProject(
'libecpg_compat', 'dll',
- 'interfaces', 'src\interfaces\ecpg\compatlib');
- $libecpgcompat->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpgcompat->AddIncludeDir('src\interfaces\libpq');
- $libecpgcompat->UseDef('src\interfaces\ecpg\compatlib\compatlib.def');
+ 'interfaces', 'src/interfaces/ecpg/compatlib');
+ $libecpgcompat->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpgcompat->AddIncludeDir('src/interfaces/libpq');
+ $libecpgcompat->UseDef('src/interfaces/ecpg/compatlib/compatlib.def');
$libecpgcompat->AddReference($pgtypes, $libecpg, $libpgport);
my $ecpg = $solution->AddProject('ecpg', 'exe', 'interfaces',
- 'src\interfaces\ecpg\preproc');
- $ecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $ecpg->AddIncludeDir('src\interfaces\libpq');
- $ecpg->AddPrefixInclude('src\interfaces\ecpg\preproc');
- $ecpg->AddFiles('src\interfaces\ecpg\preproc', 'pgc.l', 'preproc.y');
+ 'src/interfaces/ecpg/preproc');
+ $ecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $ecpg->AddIncludeDir('src/interfaces/libpq');
+ $ecpg->AddPrefixInclude('src/interfaces/ecpg/preproc');
+ $ecpg->AddFiles('src/interfaces/ecpg/preproc', 'pgc.l', 'preproc.y');
$ecpg->AddDefine('MAJOR_VERSION=4');
$ecpg->AddDefine('MINOR_VERSION=11');
$ecpg->AddDefine('PATCHLEVEL=0');
@@ -340,63 +340,63 @@ sub mkvcbuild
my $pgregress_ecpg =
$solution->AddProject('pg_regress_ecpg', 'exe', 'misc');
- $pgregress_ecpg->AddFile('src\interfaces\ecpg\test\pg_regress_ecpg.c');
- $pgregress_ecpg->AddFile('src\test\regress\pg_regress.c');
- $pgregress_ecpg->AddIncludeDir('src\port');
- $pgregress_ecpg->AddIncludeDir('src\test\regress');
+ $pgregress_ecpg->AddFile('src/interfaces/ecpg/test/pg_regress_ecpg.c');
+ $pgregress_ecpg->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_ecpg->AddIncludeDir('src/port');
+ $pgregress_ecpg->AddIncludeDir('src/test/regress');
$pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_ecpg->AddDefine('FRONTEND');
$pgregress_ecpg->AddLibrary('ws2_32.lib');
- $pgregress_ecpg->AddDirResourceFile('src\interfaces\ecpg\test');
+ $pgregress_ecpg->AddDirResourceFile('src/interfaces/ecpg/test');
$pgregress_ecpg->AddReference($libpgcommon, $libpgport);
my $isolation_tester =
$solution->AddProject('isolationtester', 'exe', 'misc');
- $isolation_tester->AddFile('src\test\isolation\isolationtester.c');
- $isolation_tester->AddFile('src\test\isolation\specparse.y');
- $isolation_tester->AddFile('src\test\isolation\specscanner.l');
- $isolation_tester->AddFile('src\test\isolation\specparse.c');
- $isolation_tester->AddIncludeDir('src\test\isolation');
- $isolation_tester->AddIncludeDir('src\port');
- $isolation_tester->AddIncludeDir('src\test\regress');
- $isolation_tester->AddIncludeDir('src\interfaces\libpq');
+ $isolation_tester->AddFile('src/test/isolation/isolationtester.c');
+ $isolation_tester->AddFile('src/test/isolation/specparse.y');
+ $isolation_tester->AddFile('src/test/isolation/specscanner.l');
+ $isolation_tester->AddFile('src/test/isolation/specparse.c');
+ $isolation_tester->AddIncludeDir('src/test/isolation');
+ $isolation_tester->AddIncludeDir('src/port');
+ $isolation_tester->AddIncludeDir('src/test/regress');
+ $isolation_tester->AddIncludeDir('src/interfaces/libpq');
$isolation_tester->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$isolation_tester->AddDefine('FRONTEND');
$isolation_tester->AddLibrary('ws2_32.lib');
- $isolation_tester->AddDirResourceFile('src\test\isolation');
+ $isolation_tester->AddDirResourceFile('src/test/isolation');
$isolation_tester->AddReference($libpq, $libpgcommon, $libpgport);
my $pgregress_isolation =
$solution->AddProject('pg_isolation_regress', 'exe', 'misc');
- $pgregress_isolation->AddFile('src\test\isolation\isolation_main.c');
- $pgregress_isolation->AddFile('src\test\regress\pg_regress.c');
- $pgregress_isolation->AddIncludeDir('src\port');
- $pgregress_isolation->AddIncludeDir('src\test\regress');
+ $pgregress_isolation->AddFile('src/test/isolation/isolation_main.c');
+ $pgregress_isolation->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_isolation->AddIncludeDir('src/port');
+ $pgregress_isolation->AddIncludeDir('src/test/regress');
$pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_isolation->AddDefine('FRONTEND');
$pgregress_isolation->AddLibrary('ws2_32.lib');
- $pgregress_isolation->AddDirResourceFile('src\test\isolation');
+ $pgregress_isolation->AddDirResourceFile('src/test/isolation');
$pgregress_isolation->AddReference($libpgcommon, $libpgport);
# src/bin
my $initdb = AddSimpleFrontend('initdb');
- $initdb->AddIncludeDir('src\interfaces\libpq');
- $initdb->AddIncludeDir('src\timezone');
+ $initdb->AddIncludeDir('src/interfaces/libpq');
+ $initdb->AddIncludeDir('src/timezone');
$initdb->AddDefine('FRONTEND');
$initdb->AddLibrary('ws2_32.lib');
my $pgbasebackup = AddSimpleFrontend('pg_basebackup', 1);
- $pgbasebackup->AddFile('src\bin\pg_basebackup\pg_basebackup.c');
+ $pgbasebackup->AddFile('src/bin/pg_basebackup/pg_basebackup.c');
$pgbasebackup->AddLibrary('ws2_32.lib');
my $pgreceivexlog = AddSimpleFrontend('pg_basebackup', 1);
$pgreceivexlog->{name} = 'pg_receivexlog';
- $pgreceivexlog->AddFile('src\bin\pg_basebackup\pg_receivexlog.c');
+ $pgreceivexlog->AddFile('src/bin/pg_basebackup/pg_receivexlog.c');
$pgreceivexlog->AddLibrary('ws2_32.lib');
my $pgrecvlogical = AddSimpleFrontend('pg_basebackup', 1);
$pgrecvlogical->{name} = 'pg_recvlogical';
- $pgrecvlogical->AddFile('src\bin\pg_basebackup\pg_recvlogical.c');
+ $pgrecvlogical->AddFile('src/bin/pg_basebackup/pg_recvlogical.c');
$pgrecvlogical->AddLibrary('ws2_32.lib');
my $pgconfig = AddSimpleFrontend('pg_config');
@@ -408,26 +408,26 @@ sub mkvcbuild
my $pgreset = AddSimpleFrontend('pg_resetxlog');
my $pgevent = $solution->AddProject('pgevent', 'dll', 'bin');
- $pgevent->AddFiles('src\bin\pgevent', 'pgevent.c', 'pgmsgevent.rc');
- $pgevent->AddResourceFile('src\bin\pgevent', 'Eventlog message formatter',
+ $pgevent->AddFiles('src/bin/pgevent', 'pgevent.c', 'pgmsgevent.rc');
+ $pgevent->AddResourceFile('src/bin/pgevent', 'Eventlog message formatter',
'win32');
- $pgevent->RemoveFile('src\bin\pgevent\win32ver.rc');
- $pgevent->UseDef('src\bin\pgevent\pgevent.def');
+ $pgevent->RemoveFile('src/bin/pgevent/win32ver.rc');
+ $pgevent->UseDef('src/bin/pgevent/pgevent.def');
$pgevent->DisableLinkerWarnings('4104');
my $psql = AddSimpleFrontend('psql', 1);
- $psql->AddIncludeDir('src\bin\pg_dump');
- $psql->AddIncludeDir('src\backend');
- $psql->AddFile('src\bin\psql\psqlscan.l');
+ $psql->AddIncludeDir('src/bin/pg_dump');
+ $psql->AddIncludeDir('src/backend');
+ $psql->AddFile('src/bin/psql/psqlscan.l');
$psql->AddLibrary('ws2_32.lib');
my $pgdump = AddSimpleFrontend('pg_dump', 1);
- $pgdump->AddIncludeDir('src\backend');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump.c');
- $pgdump->AddFile('src\bin\pg_dump\common.c');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump_sort.c');
- $pgdump->AddFile('src\bin\pg_dump\keywords.c');
- $pgdump->AddFile('src\backend\parser\kwlookup.c');
+ $pgdump->AddIncludeDir('src/backend');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump.c');
+ $pgdump->AddFile('src/bin/pg_dump/common.c');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump_sort.c');
+ $pgdump->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdump->AddFile('src/backend/parser/kwlookup.c');
$pgdump->AddLibrary('ws2_32.lib');
my $pgdumpall = AddSimpleFrontend('pg_dump', 1);
@@ -436,41 +436,41 @@ sub mkvcbuild
# pg_dump and pg_restore.
# So remove their sources from the object, keeping the other setup that
# AddSimpleFrontend() has done.
- my @nodumpall = grep { m/src\\bin\\pg_dump\\.*\.c$/ }
+ my @nodumpall = grep { m!src/bin/pg_dump/.*\.c$! }
keys %{ $pgdumpall->{files} };
delete @{ $pgdumpall->{files} }{@nodumpall};
$pgdumpall->{name} = 'pg_dumpall';
- $pgdumpall->AddIncludeDir('src\backend');
- $pgdumpall->AddFile('src\bin\pg_dump\pg_dumpall.c');
- $pgdumpall->AddFile('src\bin\pg_dump\dumputils.c');
- $pgdumpall->AddFile('src\bin\pg_dump\keywords.c');
- $pgdumpall->AddFile('src\backend\parser\kwlookup.c');
+ $pgdumpall->AddIncludeDir('src/backend');
+ $pgdumpall->AddFile('src/bin/pg_dump/pg_dumpall.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/dumputils.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdumpall->AddFile('src/backend/parser/kwlookup.c');
$pgdumpall->AddLibrary('ws2_32.lib');
my $pgrestore = AddSimpleFrontend('pg_dump', 1);
$pgrestore->{name} = 'pg_restore';
- $pgrestore->AddIncludeDir('src\backend');
- $pgrestore->AddFile('src\bin\pg_dump\pg_restore.c');
- $pgrestore->AddFile('src\bin\pg_dump\keywords.c');
- $pgrestore->AddFile('src\backend\parser\kwlookup.c');
+ $pgrestore->AddIncludeDir('src/backend');
+ $pgrestore->AddFile('src/bin/pg_dump/pg_restore.c');
+ $pgrestore->AddFile('src/bin/pg_dump/keywords.c');
+ $pgrestore->AddFile('src/backend/parser/kwlookup.c');
$pgrestore->AddLibrary('ws2_32.lib');
my $zic = $solution->AddProject('zic', 'exe', 'utils');
- $zic->AddFiles('src\timezone', 'zic.c', 'ialloc.c', 'scheck.c',
+ $zic->AddFiles('src/timezone', 'zic.c', 'ialloc.c', 'scheck.c',
'localtime.c');
- $zic->AddDirResourceFile('src\timezone');
+ $zic->AddDirResourceFile('src/timezone');
$zic->AddReference($libpgcommon, $libpgport);
if ($solution->{options}->{xml})
{
$contrib_extraincludes->{'pgxml'} = [
- $solution->{options}->{xml} . '\include',
- $solution->{options}->{xslt} . '\include',
- $solution->{options}->{iconv} . '\include' ];
+ $solution->{options}->{xml} . '/include',
+ $solution->{options}->{xslt} . '/include',
+ $solution->{options}->{iconv} . '/include' ];
$contrib_extralibs->{'pgxml'} = [
- $solution->{options}->{xml} . '\lib\libxml2.lib',
- $solution->{options}->{xslt} . '\lib\libxslt.lib' ];
+ $solution->{options}->{xml} . '/lib/libxml2.lib',
+ $solution->{options}->{xslt} . '/lib/libxslt.lib' ];
}
else
{
@@ -485,9 +485,9 @@ sub mkvcbuild
if ($solution->{options}->{uuid})
{
$contrib_extraincludes->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\include' ];
+ [ $solution->{options}->{uuid} . '/include' ];
$contrib_extralibs->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\lib\uuid.lib' ];
+ [ $solution->{options}->{uuid} . '/lib/uuid.lib' ];
}
else
{
@@ -497,7 +497,7 @@ sub mkvcbuild
# AddProject() does not recognize the constructs used to populate OBJS in
# the pgcrypto Makefile, so it will discover no files.
my $pgcrypto =
- $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib\\pgcrypto');
+ $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib/pgcrypto');
$pgcrypto->AddFiles(
'contrib\pgcrypto', 'pgcrypto.c',
'px.c', 'px-hmac.c',
@@ -513,13 +513,13 @@ sub mkvcbuild
'pgp-pgsql.c');
if ($solution->{options}->{openssl})
{
- $pgcrypto->AddFiles('contrib\pgcrypto', 'openssl.c',
+ $pgcrypto->AddFiles('contrib/pgcrypto', 'openssl.c',
'pgp-mpi-openssl.c');
}
else
{
$pgcrypto->AddFiles(
- 'contrib\pgcrypto', 'md5.c',
+ 'contrib/pgcrypto', 'md5.c',
'sha1.c', 'sha2.c',
'internal.c', 'internal-sha2.c',
'blf.c', 'rijndael.c',
@@ -543,22 +543,22 @@ sub mkvcbuild
closedir($D);
$mf =
- Project::read_file('src\backend\utils\mb\conversion_procs\Makefile');
+ Project::read_file('src/backend/utils/mb/conversion_procs/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{SUBDIRS\s*=\s*(.*)$}m
|| die 'Could not match in conversion makefile' . "\n";
foreach my $sub (split /\s+/, $1)
{
- my $dir = 'src\backend\utils\mb\conversion_procs\\' . $sub;
+ my $dir = 'src/backend/utils/mb/conversion_procs/' . $sub;
my $p = $solution->AddProject($sub, 'dll', 'conversion procs', $dir);
- $p->AddFile("$dir\\$sub.c"); # implicit source file
+ $p->AddFile("$dir/$sub.c"); # implicit source file
$p->AddReference($postgres);
}
- $mf = Project::read_file('src\bin\scripts\Makefile');
+ $mf = Project::read_file('src/bin/scripts/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{PROGRAMS\s*=\s*(.*)$}m
- || die 'Could not match in bin\scripts\Makefile' . "\n";
+ || die 'Could not match in bin/scripts/Makefile' . "\n";
foreach my $prg (split /\s+/, $1)
{
my $proj = $solution->AddProject($prg, 'exe', 'bin');
@@ -570,47 +570,47 @@ sub mkvcbuild
$f =~ s/\.o$/\.c/;
if ($f eq 'keywords.c')
{
- $proj->AddFile('src\bin\pg_dump\keywords.c');
+ $proj->AddFile('src/bin/pg_dump/keywords.c');
}
elsif ($f eq 'kwlookup.c')
{
- $proj->AddFile('src\backend\parser\kwlookup.c');
+ $proj->AddFile('src/backend/parser/kwlookup.c');
}
elsif ($f eq 'dumputils.c')
{
- $proj->AddFile('src\bin\pg_dump\dumputils.c');
+ $proj->AddFile('src/bin/pg_dump/dumputils.c');
}
elsif ($f =~ /print\.c$/)
{ # Also catches mbprint.c
- $proj->AddFile('src\bin\psql\\' . $f);
+ $proj->AddFile('src/bin/psql/' . $f);
}
elsif ($f =~ /\.c$/)
{
- $proj->AddFile('src\bin\scripts\\' . $f);
+ $proj->AddFile('src/bin/scripts/' . $f);
}
}
- $proj->AddIncludeDir('src\interfaces\libpq');
- $proj->AddIncludeDir('src\bin\pg_dump');
- $proj->AddIncludeDir('src\bin\psql');
+ $proj->AddIncludeDir('src/interfaces/libpq');
+ $proj->AddIncludeDir('src/bin/pg_dump');
+ $proj->AddIncludeDir('src/bin/psql');
$proj->AddReference($libpq, $libpgcommon, $libpgport);
- $proj->AddDirResourceFile('src\bin\scripts');
+ $proj->AddDirResourceFile('src/bin/scripts');
$proj->AddLibrary('ws2_32.lib');
}
# Regression DLL and EXE
my $regress = $solution->AddProject('regress', 'dll', 'misc');
- $regress->AddFile('src\test\regress\regress.c');
- $regress->AddDirResourceFile('src\test\regress');
+ $regress->AddFile('src/test/regress/regress.c');
+ $regress->AddDirResourceFile('src/test/regress');
$regress->AddReference($postgres);
my $pgregress = $solution->AddProject('pg_regress', 'exe', 'misc');
- $pgregress->AddFile('src\test\regress\pg_regress.c');
- $pgregress->AddFile('src\test\regress\pg_regress_main.c');
- $pgregress->AddIncludeDir('src\port');
+ $pgregress->AddFile('src/test/regress/pg_regress.c');
+ $pgregress->AddFile('src/test/regress/pg_regress_main.c');
+ $pgregress->AddIncludeDir('src/port');
$pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress->AddDefine('FRONTEND');
$pgregress->AddLibrary('ws2_32.lib');
- $pgregress->AddDirResourceFile('src\test\regress');
+ $pgregress->AddDirResourceFile('src/test/regress');
$pgregress->AddReference($libpgcommon, $libpgport);
# fix up pg_xlogdump once it's been set up
@@ -623,7 +623,7 @@ sub mkvcbuild
{
my $bf = basename $xf;
copy($xf, "contrib/pg_xlogdump/$bf");
- $pg_xlogdump->AddFile("contrib\\pg_xlogdump\\$bf");
+ $pg_xlogdump->AddFile("contrib/pg_xlogdump/$bf");
}
copy(
'src/backend/access/transam/xlogreader.c',
@@ -644,11 +644,11 @@ sub AddSimpleFrontend
my $uselibpq = shift;
my $p = $solution->AddProject($n, 'exe', 'bin');
- $p->AddDir('src\bin\\' . $n);
+ $p->AddDir('src/bin/' . $n);
$p->AddReference($libpgcommon, $libpgport);
if ($uselibpq)
{
- $p->AddIncludeDir('src\interfaces\libpq');
+ $p->AddIncludeDir('src/interfaces/libpq');
$p->AddReference($libpq);
}
return $p;
@@ -658,13 +658,13 @@ sub AddSimpleFrontend
sub AddContrib
{
my $n = shift;
- my $mf = Project::read_file('contrib\\' . $n . '\Makefile');
+ my $mf = Project::read_file('contrib/' . $n . '/Makefile');
if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
{
my $dn = $1;
my $proj =
- $solution->AddProject($dn, 'dll', 'contrib', 'contrib\\' . $n);
+ $solution->AddProject($dn, 'dll', 'contrib', 'contrib/' . $n);
$proj->AddReference($postgres);
AdjustContribProj($proj);
}
@@ -673,8 +673,8 @@ sub AddContrib
foreach my $mod (split /\s+/, $1)
{
my $proj =
- $solution->AddProject($mod, 'dll', 'contrib', 'contrib\\' . $n);
- $proj->AddFile('contrib\\' . $n . '\\' . $mod . '.c');
+ $solution->AddProject($mod, 'dll', 'contrib', 'contrib/' . $n);
+ $proj->AddFile('contrib/' . $n . '/' . $mod . '.c');
$proj->AddReference($postgres);
AdjustContribProj($proj);
}
@@ -682,7 +682,7 @@ sub AddContrib
elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg)
{
my $proj =
- $solution->AddProject($1, 'exe', 'contrib', 'contrib\\' . $n);
+ $solution->AddProject($1, 'exe', 'contrib', 'contrib/' . $n);
AdjustContribProj($proj);
}
else
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index 6d84d89..56a88e8 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -52,20 +52,20 @@ sub AddFiles
while (my $f = shift)
{
- $self->{files}->{ $dir . "\\" . $f } = 1;
+ $self->{files}->{ $dir . "/" . $f } = 1;
}
}
sub ReplaceFile
{
my ($self, $filename, $newname) = @_;
- my $re = "\\\\$filename\$";
+ my $re = "\\/$filename\$";
foreach my $file (keys %{ $self->{files} })
{
# Match complete filename
- if ($filename =~ /\\/)
+ if ($filename =~ m!/!)
{
if ($file eq $filename)
{
@@ -77,7 +77,7 @@ sub ReplaceFile
elsif ($file =~ m/($re)/)
{
delete $self->{files}{$file};
- $self->{files}{"$newname\\$filename"} = 1;
+ $self->{files}{"$newname/$filename"} = 1;
return;
}
}
@@ -105,7 +105,7 @@ sub RelocateFiles
if ($r)
{
$self->RemoveFile($f);
- $self->AddFile($targetdir . '\\' . basename($f));
+ $self->AddFile($targetdir . '/' . basename($f));
}
}
}
@@ -118,7 +118,7 @@ sub AddReference
{
push @{ $self->{references} }, $ref;
$self->AddLibrary(
- "__CFGNAME__\\" . $ref->{name} . "\\" . $ref->{name} . ".lib");
+ "__CFGNAME__/" . $ref->{name} . "/" . $ref->{name} . ".lib");
}
}
@@ -169,8 +169,8 @@ sub FullExportDLL
my ($self, $libname) = @_;
$self->{builddef} = 1;
- $self->{def} = ".\\__CFGNAME__\\$self->{name}\\$self->{name}.def";
- $self->{implib} = "__CFGNAME__\\$self->{name}\\$libname";
+ $self->{def} = "./__CFGNAME__/$self->{name}/$self->{name}.def";
+ $self->{implib} = "__CFGNAME__/$self->{name}/$libname";
}
sub UseDef
@@ -194,9 +194,9 @@ sub AddDir
if $subdir eq "\$(top_builddir)/src/timezone"
; #special case for non-standard include
next
- if $reldir . "\\" . $subdir eq "src\\backend\\port\\darwin";
+ if $reldir . "/" . $subdir eq "src/backend/port/darwin";
- $self->AddDir($reldir . "\\" . $subdir);
+ $self->AddDir($reldir . "/" . $subdir);
}
}
while ($mf =~ m{^(?:EXTRA_)?OBJS[^=]*=\s*(.*)$}m)
@@ -243,13 +243,11 @@ sub AddDir
if ($f =~ /^\$\(top_builddir\)\/(.*)/)
{
$f = $1;
- $f =~ s/\//\\/g;
$self->{files}->{$f} = 1;
}
else
{
- $f =~ s/\//\\/g;
- $self->{files}->{"$reldir\\$f"} = 1;
+ $self->{files}->{"$reldir/$f"} = 1;
}
}
$mf =~ s{OBJS[^=]*=\s*(.*)$}{}m;
@@ -264,7 +262,6 @@ sub AddDir
my $match = $1;
my $top = $2;
my $target = $3;
- $target =~ s{/}{\\}g;
my @pieces = split /\s+/, $match;
foreach my $fn (@pieces)
{
@@ -274,7 +271,7 @@ sub AddDir
}
elsif ($top eq "(backend_src)")
{
- eval { $self->ReplaceFile($fn, "src\\backend\\$target") };
+ eval { $self->ReplaceFile($fn, "src/backend/$target") };
}
else
{
@@ -310,12 +307,12 @@ sub AddResourceFile
localtime(time);
my $d = sprintf("%02d%03d", ($year - 100), $yday);
- if (Solution::IsNewer("$dir\\win32ver.rc", 'src\port\win32ver.rc'))
+ if (Solution::IsNewer("$dir/win32ver.rc", 'src/port/win32ver.rc'))
{
print "Generating win32ver.rc for $dir\n";
- open(I, 'src\port\win32ver.rc')
+ open(I, 'src/port/win32ver.rc')
|| confess "Could not open win32ver.rc";
- open(O, ">$dir\\win32ver.rc")
+ open(O, ">$dir/win32ver.rc")
|| confess "Could not write win32ver.rc";
my $icostr = $ico ? "IDI_ICON ICON \"src/port/$ico.ico\"" : "";
while (<I>)
@@ -332,7 +329,7 @@ sub AddResourceFile
}
close(O);
close(I);
- $self->AddFile("$dir\\win32ver.rc");
+ $self->AddFile("$dir/win32ver.rc");
}
sub DisableLinkerWarnings
@@ -415,9 +412,9 @@ sub read_makefile
my $t = $/;
undef $/;
- open($F, "$reldir\\GNUmakefile")
- || open($F, "$reldir\\Makefile")
- || croak "Could not open $reldir\\Makefile\n";
+ open($F, "$reldir/GNUmakefile")
+ || open($F, "$reldir/Makefile")
+ || confess "Could not open $reldir/Makefile\n";
my $txt = <$F>;
close($F);
$/ = $t;
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 9bd864c..e8f2355 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -90,15 +90,15 @@ sub DeterminePlatform
sub IsNewer
{
my ($newfile, $oldfile) = @_;
- if ( $oldfile ne 'src\tools\msvc\config.pl'
- && $oldfile ne 'src\tools\msvc\config_default.pl')
+ if ( $oldfile ne 'src/tools/msvc/config.pl'
+ && $oldfile ne 'src/tools/msvc/config_default.pl')
{
return 1
- if (-f 'src\tools\msvc\config.pl')
- && IsNewer($newfile, 'src\tools\msvc\config.pl');
+ if (-f 'src/tools/msvc/config.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config.pl');
return 1
- if (-f 'src\tools\msvc\config_default.pl')
- && IsNewer($newfile, 'src\tools\msvc\config_default.pl');
+ if (-f 'src/tools/msvc/config_default.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config_default.pl');
}
return 1 if (!(-e $newfile));
my @nstat = stat($newfile);
@@ -147,20 +147,20 @@ sub GenerateFiles
if ($self->{strver} eq '' || $self->{numver} eq '');
if (IsNewer(
- "src\\include\\pg_config_os.h", "src\\include\\port\\win32.h"))
+ "src/include/pg_config_os.h", "src/include/port/win32.h"))
{
print "Copying pg_config_os.h...\n";
- copyFile("src\\include\\port\\win32.h",
- "src\\include\\pg_config_os.h");
+ copyFile("src/include/port/win32.h",
+ "src/include/pg_config_os.h");
}
if (IsNewer(
- "src\\include\\pg_config.h", "src\\include\\pg_config.h.win32"))
+ "src/include/pg_config.h", "src/include/pg_config.h.win32"))
{
print "Generating pg_config.h...\n";
- open(I, "src\\include\\pg_config.h.win32")
+ open(I, "src/include/pg_config.h.win32")
|| confess "Could not open pg_config.h.win32\n";
- open(O, ">src\\include\\pg_config.h")
+ open(O, ">src/include/pg_config.h")
|| confess "Could not write to pg_config.h\n";
my $extraver = $self->{options}->{extraver};
$extraver = '' unless defined $extraver;
@@ -248,111 +248,111 @@ sub GenerateFiles
}
if (IsNewer(
- "src\\include\\pg_config_ext.h",
- "src\\include\\pg_config_ext.h.win32"))
+ "src/include/pg_config_ext.h",
+ "src/include/pg_config_ext.h.win32"))
{
print "Copying pg_config_ext.h...\n";
copyFile(
- "src\\include\\pg_config_ext.h.win32",
- "src\\include\\pg_config_ext.h");
+ "src/include/pg_config_ext.h.win32",
+ "src/include/pg_config_ext.h");
}
$self->GenerateDefFile(
- "src\\interfaces\\libpq\\libpqdll.def",
- "src\\interfaces\\libpq\\exports.txt",
+ "src/interfaces/libpq/libpqdll.def",
+ "src/interfaces/libpq/exports.txt",
"LIBPQ");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\ecpglib\\ecpglib.def",
- "src\\interfaces\\ecpg\\ecpglib\\exports.txt",
+ "src/interfaces/ecpg/ecpglib/ecpglib.def",
+ "src/interfaces/ecpg/ecpglib/exports.txt",
"LIBECPG");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\compatlib\\compatlib.def",
- "src\\interfaces\\ecpg\\compatlib\\exports.txt",
+ "src/interfaces/ecpg/compatlib/compatlib.def",
+ "src/interfaces/ecpg/compatlib/exports.txt",
"LIBECPG_COMPAT");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\pgtypeslib\\pgtypeslib.def",
- "src\\interfaces\\ecpg\\pgtypeslib\\exports.txt",
+ "src/interfaces/ecpg/pgtypeslib/pgtypeslib.def",
+ "src/interfaces/ecpg/pgtypeslib/exports.txt",
"LIBPGTYPES");
if (IsNewer(
- 'src\backend\utils\fmgrtab.c', 'src\include\catalog\pg_proc.h'))
+ 'src/backend/utils/fmgrtab.c', 'src/include/catalog/pg_proc.h'))
{
print "Generating fmgrtab.c and fmgroids.h...\n";
- chdir('src\backend\utils');
+ chdir('src/backend/utils');
system(
"perl -I ../catalog Gen_fmgrtab.pl ../../../src/include/catalog/pg_proc.h");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\include\utils\fmgroids.h',
- 'src\backend\utils\fmgroids.h'))
+ 'src/include/utils/fmgroids.h',
+ 'src/backend/utils/fmgroids.h'))
{
- copyFile('src\backend\utils\fmgroids.h',
- 'src\include\utils\fmgroids.h');
+ copyFile('src/backend/utils/fmgroids.h',
+ 'src/include/utils/fmgroids.h');
}
- if (IsNewer('src\include\utils\probes.h', 'src\backend\utils\probes.d'))
+ if (IsNewer('src/include/utils/probes.h', 'src/backend/utils/probes.d'))
{
print "Generating probes.h...\n";
system(
-'psed -f src\backend\utils\Gen_dummy_probes.sed src\backend\utils\probes.d > src\include\utils\probes.h'
+'psed -f src/backend/utils/Gen_dummy_probes.sed src/backend/utils/probes.d > src/include/utils/probes.h'
);
}
if ($self->{options}->{python}
&& IsNewer(
- 'src\pl\plpython\spiexceptions.h',
- 'src\include\backend\errcodes.txt'))
+ 'src/pl/plpython/spiexceptions.h',
+ 'src/include/backend/errcodes.txt'))
{
print "Generating spiexceptions.h...\n";
system(
-'perl src\pl\plpython\generate-spiexceptions.pl src\backend\utils\errcodes.txt > src\pl\plpython\spiexceptions.h'
+'perl src/pl/plpython/generate-spiexceptions.pl src/backend/utils/errcodes.txt > src/pl/plpython/spiexceptions.h'
);
}
if (IsNewer(
- 'src\include\utils\errcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/include/utils/errcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating errcodes.h...\n";
system(
-'perl src\backend\utils\generate-errcodes.pl src\backend\utils\errcodes.txt > src\backend\utils\errcodes.h'
+'perl src/backend/utils/generate-errcodes.pl src/backend/utils/errcodes.txt > src/backend/utils/errcodes.h'
);
- copyFile('src\backend\utils\errcodes.h',
- 'src\include\utils\errcodes.h');
+ copyFile('src/backend/utils/errcodes.h',
+ 'src/include/utils/errcodes.h');
}
if (IsNewer(
- 'src\pl\plpgsql\src\plerrcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/pl/plpgsql/src/plerrcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating plerrcodes.h...\n";
system(
-'perl src\pl\plpgsql\src\generate-plerrcodes.pl src\backend\utils\errcodes.txt > src\pl\plpgsql\src\plerrcodes.h'
+'perl src/pl/plpgsql/src/generate-plerrcodes.pl src/backend/utils/errcodes.txt > src/pl/plpgsql/src/plerrcodes.h'
);
}
if (IsNewer(
- 'src\backend\utils\sort\qsort_tuple.c',
- 'src\backend\utils\sort\gen_qsort_tuple.pl'))
+ 'src/backend/utils/sort/qsort_tuple.c',
+ 'src/backend/utils/sort/gen_qsort_tuple.pl'))
{
print "Generating qsort_tuple.c...\n";
system(
-'perl src\backend\utils\sort\gen_qsort_tuple.pl > src\backend\utils\sort\qsort_tuple.c'
+'perl src/backend/utils/sort/gen_qsort_tuple.pl > src/backend/utils/sort/qsort_tuple.c'
);
}
if (IsNewer(
- 'src\interfaces\libpq\libpq.rc',
- 'src\interfaces\libpq\libpq.rc.in'))
+ 'src/interfaces/libpq/libpq.rc',
+ 'src/interfaces/libpq/libpq.rc.in'))
{
print "Generating libpq.rc...\n";
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime(time);
my $d = ($year - 100) . "$yday";
- open(I, '<', 'src\interfaces\libpq\libpq.rc.in')
+ open(I, '<', 'src/interfaces/libpq/libpq.rc.in')
|| confess "Could not open libpq.rc.in";
- open(O, '>', 'src\interfaces\libpq\libpq.rc')
+ open(O, '>', 'src/interfaces/libpq/libpq.rc')
|| confess "Could not open libpq.rc";
while (<I>)
{
@@ -363,30 +363,30 @@ sub GenerateFiles
close(O);
}
- if (IsNewer('src\bin\psql\sql_help.h', 'src\bin\psql\create_help.pl'))
+ if (IsNewer('src/bin/psql/sql_help.h', 'src/bin/psql/create_help.pl'))
{
print "Generating sql_help.h...\n";
- chdir('src\bin\psql');
+ chdir('src/bin/psql');
system("perl create_help.pl ../../../doc/src/sgml/ref sql_help");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\preproc\preproc.y',
- 'src\backend\parser\gram.y'))
+ 'src/interfaces/ecpg/preproc/preproc.y',
+ 'src/backend/parser/gram.y'))
{
print "Generating preproc.y...\n";
- chdir('src\interfaces\ecpg\preproc');
- system('perl parse.pl < ..\..\..\backend\parser\gram.y > preproc.y');
- chdir('..\..\..\..');
+ chdir('src/interfaces/ecpg/preproc');
+ system('perl parse.pl < ../../../backend/parser/gram.y > preproc.y');
+ chdir('../../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\include\ecpg_config.h',
- 'src\interfaces\ecpg\include\ecpg_config.h.in'))
+ 'src/interfaces/ecpg/include/ecpg_config.h',
+ 'src/interfaces/ecpg/include/ecpg_config.h.in'))
{
print "Generating ecpg_config.h...\n";
- open(O, '>', 'src\interfaces\ecpg\include\ecpg_config.h')
+ open(O, '>', 'src/interfaces/ecpg/include/ecpg_config.h')
|| confess "Could not open ecpg_config.h";
print O <<EOF;
#if (_MSC_VER > 1200)
@@ -399,10 +399,10 @@ EOF
close(O);
}
- unless (-f "src\\port\\pg_config_paths.h")
+ unless (-f "src/port/pg_config_paths.h")
{
print "Generating pg_config_paths.h...\n";
- open(O, '>', 'src\port\pg_config_paths.h')
+ open(O, '>', 'src/port/pg_config_paths.h')
|| confess "Could not open pg_config_paths.h";
print O <<EOF;
#define PGBINDIR "/bin"
@@ -421,7 +421,7 @@ EOF
close(O);
}
- my $mf = Project::read_file('src\backend\catalog\Makefile');
+ my $mf = Project::read_file('src/backend/catalog/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
|| croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
@@ -434,15 +434,15 @@ EOF
"src/include/catalog/$bki"))
{
print "Generating postgres.bki and schemapg.h...\n";
- chdir('src\backend\catalog');
+ chdir('src/backend/catalog');
my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
system(
"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
);
- chdir('..\..\..');
+ chdir('../../..');
copyFile(
- 'src\backend\catalog\schemapg.h',
- 'src\include\catalog\schemapg.h');
+ 'src/backend/catalog/schemapg.h',
+ 'src/include/catalog/schemapg.h');
last;
}
}
--
2.3.0
On Sun, Feb 15, 2015 at 12:51 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
I understand that on Windows, you can use forward slashes in path names
interchangeably with backward slashes (except possibly in the shell). I
have developed the attached patch to change the msvc build code to use
forward slashes consistently. Together with the other attached patch,
which is an unpolished hack, this allows me to run the build.pl script
on not-Windows. It won't actually build, but it will create all the
project files. That way, I can check whether some makefile hackery
would break the Windows build.
This sounds like a good idea to improve the checks of the scripts of
Windows, like the presence of win32rc files, etc.
Could someone verify this please?
I tested quickly the second patch with MS 2010 and I am getting a
build failure: chkpass cannot complete because of crypt missing. On
master build passes. More details here:
"C:\Users\mpaquier\git\postgres\pgsql.sln" (default target) (1) ->
"C:\Users\mpaquier\git\postgres\chkpass.vcxproj" (default target) (36) ->
(Link target) ->
chkpass.obj : error LNK2019: unresolved external symbol crypt
referenced in function chkpass_in
[C:\Users\ioltas\git\postgres\chkpass.vcxproj]
.\Release\chkpass\chkpass.dll : fatal error LNK1120: 1 unresolved
externals [C:\Users\mpaquier\git\postgres\chkpass.vcxproj]
0 Warning(s)
2 Error(s)
Regards,
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 2/15/15 6:55 AM, Michael Paquier wrote:
I tested quickly the second patch with MS 2010 and I am getting a
build failure: chkpass cannot complete because of crypt missing. On
master build passes. More details here:
"C:\Users\mpaquier\git\postgres\pgsql.sln" (default target) (1) ->
"C:\Users\mpaquier\git\postgres\chkpass.vcxproj" (default target) (36) ->
(Link target) ->
chkpass.obj : error LNK2019: unresolved external symbol crypt
referenced in function chkpass_in
[C:\Users\ioltas\git\postgres\chkpass.vcxproj]
.\Release\chkpass\chkpass.dll : fatal error LNK1120: 1 unresolved
externals [C:\Users\mpaquier\git\postgres\chkpass.vcxproj]
I can't tell from just looking at the code how chkpass would normally
find crypt. The msvc tools neither parse SHLIB_LINK nor have hardcoded
knowledge. Any idea?
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 03/04/2015 10:37 PM, Peter Eisentraut wrote:
On 2/15/15 6:55 AM, Michael Paquier wrote:
I tested quickly the second patch with MS 2010 and I am getting a
build failure: chkpass cannot complete because of crypt missing. On
master build passes. More details here:
"C:\Users\mpaquier\git\postgres\pgsql.sln" (default target) (1) ->
"C:\Users\mpaquier\git\postgres\chkpass.vcxproj" (default target) (36) ->
(Link target) ->
chkpass.obj : error LNK2019: unresolved external symbol crypt
referenced in function chkpass_in
[C:\Users\ioltas\git\postgres\chkpass.vcxproj]
.\Release\chkpass\chkpass.dll : fatal error LNK1120: 1 unresolved
externals [C:\Users\mpaquier\git\postgres\chkpass.vcxproj]I can't tell from just looking at the code how chkpass would normally
find crypt. The msvc tools neither parse SHLIB_LINK nor have hardcoded
knowledge. Any idea?
Which library is it in? There are sections at the top of Mkvcbuild.pm
for including various libraries in contrib modules that need them.
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 3/4/15 11:00 PM, Andrew Dunstan wrote:
On 03/04/2015 10:37 PM, Peter Eisentraut wrote:
On 2/15/15 6:55 AM, Michael Paquier wrote:
I tested quickly the second patch with MS 2010 and I am getting a
build failure: chkpass cannot complete because of crypt missing. On
master build passes. More details here:
"C:\Users\mpaquier\git\postgres\pgsql.sln" (default target) (1) ->
"C:\Users\mpaquier\git\postgres\chkpass.vcxproj" (default target)
(36) ->
(Link target) ->
chkpass.obj : error LNK2019: unresolved external symbol crypt
referenced in function chkpass_in
[C:\Users\ioltas\git\postgres\chkpass.vcxproj]
.\Release\chkpass\chkpass.dll : fatal error LNK1120: 1 unresolved
externals [C:\Users\mpaquier\git\postgres\chkpass.vcxproj]I can't tell from just looking at the code how chkpass would normally
find crypt. The msvc tools neither parse SHLIB_LINK nor have hardcoded
knowledge. Any idea?
Which library is it in? There are sections at the top of Mkvcbuild.pm
for including various libraries in contrib modules that need them.
This is contrib/chkpass not finding the crypt symbol, which is
presumably in some library. But I can't see how it would normally find
it, without my patch.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Peter Eisentraut wrote:
On 3/4/15 11:00 PM, Andrew Dunstan wrote:
On 03/04/2015 10:37 PM, Peter Eisentraut wrote:
I can't tell from just looking at the code how chkpass would normally
find crypt. The msvc tools neither parse SHLIB_LINK nor have hardcoded
knowledge. Any idea?Which library is it in? There are sections at the top of Mkvcbuild.pm
for including various libraries in contrib modules that need them.This is contrib/chkpass not finding the crypt symbol, which is
presumably in some library. But I can't see how it would normally find
it, without my patch.
It seems crypt is provided by libpgport. So chkpass should be mentioned
in @contrib_uselibpgport, but isn't. Maybe the fix is just to add it
there?
--
�lvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Fri, Mar 13, 2015 at 6:20 AM, Alvaro Herrera wrote:
Peter Eisentraut wrote:
This is contrib/chkpass not finding the crypt symbol, which is
presumably in some library. But I can't see how it would normally find
it, without my patch.It seems crypt is provided by libpgport. So chkpass should be mentioned
in @contrib_uselibpgport, but isn't. Maybe the fix is just to add it
there?
I had a closer look at this patch, and yes indeed, the problem was
exactly that. Now honestly I cannot understand why this dependency
with libpgport was not necessary before... In any case, attached is a
patch rebased on HEAD that builds correctly with MSVC.
--
Michael
Attachments:
20150313_msvc_backslash_fix.patchtext/x-diff; charset=US-ASCII; name=20150313_msvc_backslash_fix.patchDownload
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index 37958f9..a16f9ac 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -127,7 +127,7 @@ EOF
foreach my $fileNameWithPath (sort keys %{ $self->{files} })
{
confess "Bad format filename '$fileNameWithPath'\n"
- unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
+ unless ($fileNameWithPath =~ m!^(.*)/([^/]+)\.(c|cpp|y|l|rc)$!);
my $dir = $1;
my $fileName = $2;
if ($fileNameWithPath =~ /\.y$/ or $fileNameWithPath =~ /\.l$/)
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 989a2ec..5634b3a 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -34,11 +34,11 @@ my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' };
my @contrib_uselibpq =
('dblink', 'oid2name', 'pgbench', 'pg_upgrade', 'postgres_fdw', 'vacuumlo');
my @contrib_uselibpgport = (
- 'oid2name', 'pgbench',
- 'pg_standby', 'pg_archivecleanup',
- 'pg_test_fsync', 'pg_test_timing',
- 'pg_upgrade', 'pg_xlogdump',
- 'vacuumlo');
+ 'chkpass', 'oid2name',
+ 'pgbench', 'pg_standby',
+ 'pg_archivecleanup', 'pg_test_fsync',
+ 'pg_test_timing', 'pg_upgrade',
+ 'pg_xlogdump', 'vacuumlo');
my @contrib_uselibpgcommon = (
'oid2name', 'pgbench',
'pg_standby', 'pg_archivecleanup',
@@ -49,10 +49,10 @@ my $contrib_extralibs = { 'pgbench' => ['ws2_32.lib'] };
my $contrib_extraincludes =
{ 'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend'] };
my $contrib_extrasource = {
- 'cube' => [ 'contrib\cube\cubescan.l', 'contrib\cube\cubeparse.y' ],
+ 'cube' => [ 'contrib/cube/cubescan.l', 'contrib/cube/cubeparse.y' ],
'pgbench' =>
- [ 'contrib\pgbench\exprscan.l', 'contrib\pgbench\exprparse.y' ],
- 'seg' => [ 'contrib\seg\segscan.l', 'contrib\seg\segparse.y' ], };
+ [ 'contrib/pgbench/exprscan.l', 'contrib/pgbench/exprparse.y' ],
+ 'seg' => [ 'contrib/seg/segscan.l', 'contrib/seg/segparse.y' ], };
my @contrib_excludes = ('pgcrypto', 'intagg', 'sepgsql');
# Set of variables for frontend modules
@@ -63,18 +63,18 @@ my $frontend_extralibs = {
'pg_restore' => ['ws2_32.lib'],
'psql' => ['ws2_32.lib'] };
my $frontend_extraincludes = {
- 'initdb' => ['src\timezone'],
- 'psql' => [ 'src\bin\pg_dump', 'src\backend' ] };
-my $frontend_extrasource = { 'psql' => ['src\bin\psql\psqlscan.l'] };
+ 'initdb' => [ 'src/timezone' ],
+ 'psql' => [ 'src/bin/pg_dump', 'src/backend' ] };
+my $frontend_extrasource = { 'psql' => ['src/bin/psql/psqlscan.l'] };
my @frontend_excludes = ('pgevent', 'pg_basebackup', 'pg_dump', 'scripts');
sub mkvcbuild
{
our $config = shift;
- chdir('..\..\..') if (-d '..\msvc' && -d '..\..\..\src');
+ chdir('../../..') if (-d '../msvc' && -d '../../../src');
die 'Must run from root or msvc directory'
- unless (-d 'src\tools\msvc' && -d 'src');
+ unless (-d 'src/tools/msvc' && -d 'src');
my $vsVersion = DetermineVisualStudioVersion();
@@ -101,37 +101,37 @@ sub mkvcbuild
$libpgport = $solution->AddProject('libpgport', 'lib', 'misc');
$libpgport->AddDefine('FRONTEND');
- $libpgport->AddFiles('src\port', @pgportfiles);
+ $libpgport->AddFiles('src/port', @pgportfiles);
$libpgcommon = $solution->AddProject('libpgcommon', 'lib', 'misc');
$libpgcommon->AddDefine('FRONTEND');
- $libpgcommon->AddFiles('src\common', @pgcommonfrontendfiles);
+ $libpgcommon->AddFiles('src/common', @pgcommonfrontendfiles);
- $postgres = $solution->AddProject('postgres', 'exe', '', 'src\backend');
- $postgres->AddIncludeDir('src\backend');
- $postgres->AddDir('src\backend\port\win32');
- $postgres->AddFile('src\backend\utils\fmgrtab.c');
+ $postgres = $solution->AddProject('postgres', 'exe', '', 'src/backend');
+ $postgres->AddIncludeDir('src/backend');
+ $postgres->AddDir('src/backend/port/win32');
+ $postgres->AddFile('src/backend/utils/fmgrtab.c');
$postgres->ReplaceFile(
- 'src\backend\port\dynloader.c',
- 'src\backend\port\dynloader\win32.c');
- $postgres->ReplaceFile('src\backend\port\pg_sema.c',
- 'src\backend\port\win32_sema.c');
- $postgres->ReplaceFile('src\backend\port\pg_shmem.c',
- 'src\backend\port\win32_shmem.c');
- $postgres->ReplaceFile('src\backend\port\pg_latch.c',
- 'src\backend\port\win32_latch.c');
- $postgres->AddFiles('src\port', @pgportfiles);
- $postgres->AddFiles('src\common', @pgcommonbkndfiles);
- $postgres->AddDir('src\timezone');
-
- # We need source files from src\timezone, but that directory's resource
+ 'src/backend/port/dynloader.c',
+ 'src/backend/port/dynloader/win32.c');
+ $postgres->ReplaceFile('src/backend/port/pg_sema.c',
+ 'src/backend/port/win32_sema.c');
+ $postgres->ReplaceFile('src/backend/port/pg_shmem.c',
+ 'src/backend/port/win32_shmem.c');
+ $postgres->ReplaceFile('src/backend/port/pg_latch.c',
+ 'src/backend/port/win32_latch.c');
+ $postgres->AddFiles('src/port', @pgportfiles);
+ $postgres->AddFiles('src/common', @pgcommonbkndfiles);
+ $postgres->AddDir('src/timezone');
+
+ # We need source files from src/timezone, but that directory's resource
# file pertains to "zic", not to the backend.
- $postgres->RemoveFile('src\timezone\win32ver.rc');
- $postgres->AddFiles('src\backend\parser', 'scan.l', 'gram.y');
- $postgres->AddFiles('src\backend\bootstrap', 'bootscanner.l',
+ $postgres->RemoveFile('src/timezone/win32ver.rc');
+ $postgres->AddFiles('src/backend/parser', 'scan.l', 'gram.y');
+ $postgres->AddFiles('src/backend/bootstrap', 'bootscanner.l',
'bootparse.y');
- $postgres->AddFiles('src\backend\utils\misc', 'guc-file.l');
- $postgres->AddFiles('src\backend\replication', 'repl_scanner.l',
+ $postgres->AddFiles('src/backend/utils/misc', 'guc-file.l');
+ $postgres->AddFiles('src/backend/replication', 'repl_scanner.l',
'repl_gram.y');
$postgres->AddDefine('BUILDING_DLL');
$postgres->AddLibrary('secur32.lib');
@@ -143,31 +143,31 @@ sub mkvcbuild
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $postgres->RemoveFile('src\backend\libpq\be-secure-openssl.c');
+ $postgres->RemoveFile('src/backend/libpq/be-secure-openssl.c');
}
my $snowball = $solution->AddProject('dict_snowball', 'dll', '',
- 'src\backend\snowball');
+ 'src/backend/snowball');
# This Makefile uses VPATH to find most source files in a subdirectory.
$snowball->RelocateFiles(
- 'src\backend\snowball\libstemmer',
+ 'src/backend/snowball/libstemmer',
sub {
return shift !~ /(dict_snowball.c|win32ver.rc)$/;
});
- $snowball->AddIncludeDir('src\include\snowball');
+ $snowball->AddIncludeDir('src/include/snowball');
$snowball->AddReference($postgres);
my $plpgsql =
- $solution->AddProject('plpgsql', 'dll', 'PLs', 'src\pl\plpgsql\src');
- $plpgsql->AddFiles('src\pl\plpgsql\src', 'pl_gram.y');
+ $solution->AddProject('plpgsql', 'dll', 'PLs', 'src/pl/plpgsql/src');
+ $plpgsql->AddFiles('src/pl/plpgsql/src', 'pl_gram.y');
$plpgsql->AddReference($postgres);
if ($solution->{options}->{perl})
{
- my $plperlsrc = "src\\pl\\plperl\\";
+ my $plperlsrc = "src/pl/plperl/";
my $plperl =
- $solution->AddProject('plperl', 'dll', 'PLs', 'src\pl\plperl');
+ $solution->AddProject('plperl', 'dll', 'PLs', 'src/pl/plperl');
$plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE');
$plperl->AddDefine('PLPERL_HAVE_UID_GID');
foreach my $xs ('SPI.xs', 'Util.xs')
@@ -192,15 +192,15 @@ sub mkvcbuild
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_perlboot.pl')
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_perlboot.pl')
|| Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_trusted.pl'))
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_trusted.pl'))
{
- print 'Building src\pl\plperl\perlchunks.h ...' . "\n";
+ print 'Building src/pl/plperl/perlchunks.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'text2macro.pl '
@@ -208,29 +208,29 @@ sub mkvcbuild
. 'plc_perlboot.pl plc_trusted.pl '
. '>perlchunks.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\perlchunks.h'))
- || -z 'src\pl\plperl\perlchunks.h')
+ if ((!(-f 'src/pl/plperl/perlchunks.h'))
+ || -z 'src/pl/plperl/perlchunks.h')
{
- unlink('src\pl\plperl\perlchunks.h'); # if zero size
+ unlink('src/pl/plperl/perlchunks.h'); # if zero size
die 'Failed to create perlchunks.h' . "\n";
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\plperl_opmask.h',
- 'src\pl\plperl\plperl_opmask.pl'))
+ 'src/pl/plperl/plperl_opmask.h',
+ 'src/pl/plperl/plperl_opmask.pl'))
{
- print 'Building src\pl\plperl\plperl_opmask.h ...' . "\n";
+ print 'Building src/pl/plperl/plperl_opmask.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'plperl_opmask.pl '
. 'plperl_opmask.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\plperl_opmask.h'))
- || -z 'src\pl\plperl\plperl_opmask.h')
+ if ((!(-f 'src/pl/plperl/plperl_opmask.h'))
+ || -z 'src/pl/plperl/plperl_opmask.h')
{
- unlink('src\pl\plperl\plperl_opmask.h'); # if zero size
+ unlink('src/pl/plperl/plperl_opmask.h'); # if zero size
die 'Failed to create plperl_opmask.h' . "\n";
}
}
@@ -270,88 +270,88 @@ sub mkvcbuild
my $pymajorver = substr($pyver, 0, 1);
my $plpython = $solution->AddProject('plpython' . $pymajorver,
- 'dll', 'PLs', 'src\pl\plpython');
- $plpython->AddIncludeDir($pyprefix . '\include');
- $plpython->AddLibrary($pyprefix . "\\Libs\\python$pyver.lib");
+ 'dll', 'PLs', 'src/pl/plpython');
+ $plpython->AddIncludeDir($pyprefix . '/include');
+ $plpython->AddLibrary($pyprefix . "/Libs/python$pyver.lib");
$plpython->AddReference($postgres);
}
if ($solution->{options}->{tcl})
{
my $pltcl =
- $solution->AddProject('pltcl', 'dll', 'PLs', 'src\pl\tcl');
- $pltcl->AddIncludeDir($solution->{options}->{tcl} . '\include');
+ $solution->AddProject('pltcl', 'dll', 'PLs', 'src/pl/tcl');
+ $pltcl->AddIncludeDir($solution->{options}->{tcl} . '/include');
$pltcl->AddReference($postgres);
- if (-e $solution->{options}->{tcl} . '\lib\tcl85.lib')
+ if (-e $solution->{options}->{tcl} . '/lib/tcl85.lib')
{
$pltcl->AddLibrary(
- $solution->{options}->{tcl} . '\lib\tcl85.lib');
+ $solution->{options}->{tcl} . '/lib/tcl85.lib');
}
else
{
$pltcl->AddLibrary(
- $solution->{options}->{tcl} . '\lib\tcl84.lib');
+ $solution->{options}->{tcl} . '/lib/tcl84.lib');
}
}
$libpq = $solution->AddProject('libpq', 'dll', 'interfaces',
- 'src\interfaces\libpq');
+ 'src/interfaces/libpq');
$libpq->AddDefine('FRONTEND');
$libpq->AddDefine('UNSAFE_STAT_OK');
- $libpq->AddIncludeDir('src\port');
+ $libpq->AddIncludeDir('src/port');
$libpq->AddLibrary('secur32.lib');
$libpq->AddLibrary('ws2_32.lib');
$libpq->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap});
- $libpq->UseDef('src\interfaces\libpq\libpqdll.def');
- $libpq->ReplaceFile('src\interfaces\libpq\libpqrc.c',
- 'src\interfaces\libpq\libpq.rc');
+ $libpq->UseDef('src/interfaces/libpq/libpqdll.def');
+ $libpq->ReplaceFile('src/interfaces/libpq/libpqrc.c',
+ 'src/interfaces/libpq/libpq.rc');
$libpq->AddReference($libpgport);
# The OBJS scraper doesn't know about ifdefs, so remove fe-secure-openssl.c
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $libpq->RemoveFile('src\interfaces\libpq\fe-secure-openssl.c');
+ $libpq->RemoveFile('src/interfaces/libpq/fe-secure-openssl.c');
}
my $libpqwalreceiver =
$solution->AddProject('libpqwalreceiver', 'dll', '',
- 'src\backend\replication\libpqwalreceiver');
- $libpqwalreceiver->AddIncludeDir('src\interfaces\libpq');
+ 'src/backend/replication/libpqwalreceiver');
+ $libpqwalreceiver->AddIncludeDir('src/interfaces/libpq');
$libpqwalreceiver->AddReference($postgres, $libpq);
my $pgtypes = $solution->AddProject(
'libpgtypes', 'dll',
- 'interfaces', 'src\interfaces\ecpg\pgtypeslib');
+ 'interfaces', 'src/interfaces/ecpg/pgtypeslib');
$pgtypes->AddDefine('FRONTEND');
$pgtypes->AddReference($libpgport);
- $pgtypes->UseDef('src\interfaces\ecpg\pgtypeslib\pgtypeslib.def');
- $pgtypes->AddIncludeDir('src\interfaces\ecpg\include');
+ $pgtypes->UseDef('src/interfaces/ecpg/pgtypeslib/pgtypeslib.def');
+ $pgtypes->AddIncludeDir('src/interfaces/ecpg/include');
my $libecpg = $solution->AddProject('libecpg', 'dll', 'interfaces',
- 'src\interfaces\ecpg\ecpglib');
+ 'src/interfaces/ecpg/ecpglib');
$libecpg->AddDefine('FRONTEND');
- $libecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpg->AddIncludeDir('src\interfaces\libpq');
- $libecpg->AddIncludeDir('src\port');
- $libecpg->UseDef('src\interfaces\ecpg\ecpglib\ecpglib.def');
+ $libecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpg->AddIncludeDir('src/interfaces/libpq');
+ $libecpg->AddIncludeDir('src/port');
+ $libecpg->UseDef('src/interfaces/ecpg/ecpglib/ecpglib.def');
$libecpg->AddLibrary('ws2_32.lib');
$libecpg->AddReference($libpq, $pgtypes, $libpgport);
my $libecpgcompat = $solution->AddProject(
'libecpg_compat', 'dll',
- 'interfaces', 'src\interfaces\ecpg\compatlib');
- $libecpgcompat->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpgcompat->AddIncludeDir('src\interfaces\libpq');
- $libecpgcompat->UseDef('src\interfaces\ecpg\compatlib\compatlib.def');
+ 'interfaces', 'src/interfaces/ecpg/compatlib');
+ $libecpgcompat->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpgcompat->AddIncludeDir('src/interfaces/libpq');
+ $libecpgcompat->UseDef('src/interfaces/ecpg/compatlib/compatlib.def');
$libecpgcompat->AddReference($pgtypes, $libecpg, $libpgport);
my $ecpg = $solution->AddProject('ecpg', 'exe', 'interfaces',
- 'src\interfaces\ecpg\preproc');
- $ecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $ecpg->AddIncludeDir('src\interfaces\libpq');
- $ecpg->AddPrefixInclude('src\interfaces\ecpg\preproc');
- $ecpg->AddFiles('src\interfaces\ecpg\preproc', 'pgc.l', 'preproc.y');
+ 'src/interfaces/ecpg/preproc');
+ $ecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $ecpg->AddIncludeDir('src/interfaces/libpq');
+ $ecpg->AddPrefixInclude('src/interfaces/ecpg/preproc');
+ $ecpg->AddFiles('src/interfaces/ecpg/preproc', 'pgc.l', 'preproc.y');
$ecpg->AddDefine('MAJOR_VERSION=4');
$ecpg->AddDefine('MINOR_VERSION=11');
$ecpg->AddDefine('PATCHLEVEL=0');
@@ -360,42 +360,42 @@ sub mkvcbuild
my $pgregress_ecpg =
$solution->AddProject('pg_regress_ecpg', 'exe', 'misc');
- $pgregress_ecpg->AddFile('src\interfaces\ecpg\test\pg_regress_ecpg.c');
- $pgregress_ecpg->AddFile('src\test\regress\pg_regress.c');
- $pgregress_ecpg->AddIncludeDir('src\port');
- $pgregress_ecpg->AddIncludeDir('src\test\regress');
+ $pgregress_ecpg->AddFile('src/interfaces/ecpg/test/pg_regress_ecpg.c');
+ $pgregress_ecpg->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_ecpg->AddIncludeDir('src/port');
+ $pgregress_ecpg->AddIncludeDir('src/test/regress');
$pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_ecpg->AddDefine('FRONTEND');
$pgregress_ecpg->AddLibrary('ws2_32.lib');
- $pgregress_ecpg->AddDirResourceFile('src\interfaces\ecpg\test');
+ $pgregress_ecpg->AddDirResourceFile('src/interfaces/ecpg/test');
$pgregress_ecpg->AddReference($libpgcommon, $libpgport);
my $isolation_tester =
$solution->AddProject('isolationtester', 'exe', 'misc');
- $isolation_tester->AddFile('src\test\isolation\isolationtester.c');
- $isolation_tester->AddFile('src\test\isolation\specparse.y');
- $isolation_tester->AddFile('src\test\isolation\specscanner.l');
- $isolation_tester->AddFile('src\test\isolation\specparse.c');
- $isolation_tester->AddIncludeDir('src\test\isolation');
- $isolation_tester->AddIncludeDir('src\port');
- $isolation_tester->AddIncludeDir('src\test\regress');
- $isolation_tester->AddIncludeDir('src\interfaces\libpq');
+ $isolation_tester->AddFile('src/test/isolation/isolationtester.c');
+ $isolation_tester->AddFile('src/test/isolation/specparse.y');
+ $isolation_tester->AddFile('src/test/isolation/specscanner.l');
+ $isolation_tester->AddFile('src/test/isolation/specparse.c');
+ $isolation_tester->AddIncludeDir('src/test/isolation');
+ $isolation_tester->AddIncludeDir('src/port');
+ $isolation_tester->AddIncludeDir('src/test/regress');
+ $isolation_tester->AddIncludeDir('src/interfaces/libpq');
$isolation_tester->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$isolation_tester->AddDefine('FRONTEND');
$isolation_tester->AddLibrary('ws2_32.lib');
- $isolation_tester->AddDirResourceFile('src\test\isolation');
+ $isolation_tester->AddDirResourceFile('src/test/isolation');
$isolation_tester->AddReference($libpq, $libpgcommon, $libpgport);
my $pgregress_isolation =
$solution->AddProject('pg_isolation_regress', 'exe', 'misc');
- $pgregress_isolation->AddFile('src\test\isolation\isolation_main.c');
- $pgregress_isolation->AddFile('src\test\regress\pg_regress.c');
- $pgregress_isolation->AddIncludeDir('src\port');
- $pgregress_isolation->AddIncludeDir('src\test\regress');
+ $pgregress_isolation->AddFile('src/test/isolation/isolation_main.c');
+ $pgregress_isolation->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_isolation->AddIncludeDir('src/port');
+ $pgregress_isolation->AddIncludeDir('src/test/regress');
$pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_isolation->AddDefine('FRONTEND');
$pgregress_isolation->AddLibrary('ws2_32.lib');
- $pgregress_isolation->AddDirResourceFile('src\test\isolation');
+ $pgregress_isolation->AddDirResourceFile('src/test/isolation');
$pgregress_isolation->AddReference($libpgcommon, $libpgport);
# src/bin
@@ -410,34 +410,34 @@ sub mkvcbuild
}
my $pgbasebackup = AddSimpleFrontend('pg_basebackup', 1);
- $pgbasebackup->AddFile('src\bin\pg_basebackup\pg_basebackup.c');
+ $pgbasebackup->AddFile('src/bin/pg_basebackup/pg_basebackup.c');
$pgbasebackup->AddLibrary('ws2_32.lib');
my $pgreceivexlog = AddSimpleFrontend('pg_basebackup', 1);
$pgreceivexlog->{name} = 'pg_receivexlog';
- $pgreceivexlog->AddFile('src\bin\pg_basebackup\pg_receivexlog.c');
+ $pgreceivexlog->AddFile('src/bin/pg_basebackup/pg_receivexlog.c');
$pgreceivexlog->AddLibrary('ws2_32.lib');
my $pgrecvlogical = AddSimpleFrontend('pg_basebackup', 1);
$pgrecvlogical->{name} = 'pg_recvlogical';
- $pgrecvlogical->AddFile('src\bin\pg_basebackup\pg_recvlogical.c');
+ $pgrecvlogical->AddFile('src/bin/pg_basebackup/pg_recvlogical.c');
$pgrecvlogical->AddLibrary('ws2_32.lib');
my $pgevent = $solution->AddProject('pgevent', 'dll', 'bin');
- $pgevent->AddFiles('src\bin\pgevent', 'pgevent.c', 'pgmsgevent.rc');
- $pgevent->AddResourceFile('src\bin\pgevent', 'Eventlog message formatter',
+ $pgevent->AddFiles('src/bin/pgevent', 'pgevent.c', 'pgmsgevent.rc');
+ $pgevent->AddResourceFile('src/bin/pgevent', 'Eventlog message formatter',
'win32');
- $pgevent->RemoveFile('src\bin\pgevent\win32ver.rc');
- $pgevent->UseDef('src\bin\pgevent\pgevent.def');
+ $pgevent->RemoveFile('src/bin/pgevent/win32ver.rc');
+ $pgevent->UseDef('src/bin/pgevent/pgevent.def');
$pgevent->DisableLinkerWarnings('4104');
my $pgdump = AddSimpleFrontend('pg_dump', 1);
- $pgdump->AddIncludeDir('src\backend');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump.c');
- $pgdump->AddFile('src\bin\pg_dump\common.c');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump_sort.c');
- $pgdump->AddFile('src\bin\pg_dump\keywords.c');
- $pgdump->AddFile('src\backend\parser\kwlookup.c');
+ $pgdump->AddIncludeDir('src/backend');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump.c');
+ $pgdump->AddFile('src/bin/pg_dump/common.c');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump_sort.c');
+ $pgdump->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdump->AddFile('src/backend/parser/kwlookup.c');
$pgdump->AddLibrary('ws2_32.lib');
my $pgdumpall = AddSimpleFrontend('pg_dump', 1);
@@ -446,41 +446,41 @@ sub mkvcbuild
# pg_dump and pg_restore.
# So remove their sources from the object, keeping the other setup that
# AddSimpleFrontend() has done.
- my @nodumpall = grep { m/src\\bin\\pg_dump\\.*\.c$/ }
+ my @nodumpall = grep { m!src/bin/pg_dump/.*\.c$! }
keys %{ $pgdumpall->{files} };
delete @{ $pgdumpall->{files} }{@nodumpall};
$pgdumpall->{name} = 'pg_dumpall';
- $pgdumpall->AddIncludeDir('src\backend');
- $pgdumpall->AddFile('src\bin\pg_dump\pg_dumpall.c');
- $pgdumpall->AddFile('src\bin\pg_dump\dumputils.c');
- $pgdumpall->AddFile('src\bin\pg_dump\keywords.c');
- $pgdumpall->AddFile('src\backend\parser\kwlookup.c');
+ $pgdumpall->AddIncludeDir('src/backend');
+ $pgdumpall->AddFile('src/bin/pg_dump/pg_dumpall.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/dumputils.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdumpall->AddFile('src/backend/parser/kwlookup.c');
$pgdumpall->AddLibrary('ws2_32.lib');
my $pgrestore = AddSimpleFrontend('pg_dump', 1);
$pgrestore->{name} = 'pg_restore';
- $pgrestore->AddIncludeDir('src\backend');
- $pgrestore->AddFile('src\bin\pg_dump\pg_restore.c');
- $pgrestore->AddFile('src\bin\pg_dump\keywords.c');
- $pgrestore->AddFile('src\backend\parser\kwlookup.c');
+ $pgrestore->AddIncludeDir('src/backend');
+ $pgrestore->AddFile('src/bin/pg_dump/pg_restore.c');
+ $pgrestore->AddFile('src/bin/pg_dump/keywords.c');
+ $pgrestore->AddFile('src/backend/parser/kwlookup.c');
$pgrestore->AddLibrary('ws2_32.lib');
my $zic = $solution->AddProject('zic', 'exe', 'utils');
- $zic->AddFiles('src\timezone', 'zic.c', 'ialloc.c', 'scheck.c',
+ $zic->AddFiles('src/timezone', 'zic.c', 'ialloc.c', 'scheck.c',
'localtime.c');
- $zic->AddDirResourceFile('src\timezone');
+ $zic->AddDirResourceFile('src/timezone');
$zic->AddReference($libpgcommon, $libpgport);
if ($solution->{options}->{xml})
{
$contrib_extraincludes->{'pgxml'} = [
- $solution->{options}->{xml} . '\include',
- $solution->{options}->{xslt} . '\include',
- $solution->{options}->{iconv} . '\include' ];
+ $solution->{options}->{xml} . '/include',
+ $solution->{options}->{xslt} . '/include',
+ $solution->{options}->{iconv} . '/include' ];
$contrib_extralibs->{'pgxml'} = [
- $solution->{options}->{xml} . '\lib\libxml2.lib',
- $solution->{options}->{xslt} . '\lib\libxslt.lib' ];
+ $solution->{options}->{xml} . '/lib/libxml2.lib',
+ $solution->{options}->{xslt} . '/lib/libxslt.lib' ];
}
else
{
@@ -495,9 +495,9 @@ sub mkvcbuild
if ($solution->{options}->{uuid})
{
$contrib_extraincludes->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\include' ];
+ [ $solution->{options}->{uuid} . '/include' ];
$contrib_extralibs->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\lib\uuid.lib' ];
+ [ $solution->{options}->{uuid} . '/lib/uuid.lib' ];
}
else
{
@@ -507,9 +507,9 @@ sub mkvcbuild
# AddProject() does not recognize the constructs used to populate OBJS in
# the pgcrypto Makefile, so it will discover no files.
my $pgcrypto =
- $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib\\pgcrypto');
+ $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib/pgcrypto');
$pgcrypto->AddFiles(
- 'contrib\pgcrypto', 'pgcrypto.c',
+ 'contrib/pgcrypto', 'pgcrypto.c',
'px.c', 'px-hmac.c',
'px-crypt.c', 'crypt-gensalt.c',
'crypt-blowfish.c', 'crypt-des.c',
@@ -523,13 +523,13 @@ sub mkvcbuild
'pgp-pgsql.c');
if ($solution->{options}->{openssl})
{
- $pgcrypto->AddFiles('contrib\pgcrypto', 'openssl.c',
+ $pgcrypto->AddFiles('contrib/pgcrypto', 'openssl.c',
'pgp-mpi-openssl.c');
}
else
{
$pgcrypto->AddFiles(
- 'contrib\pgcrypto', 'md5.c',
+ 'contrib/pgcrypto', 'md5.c',
'sha1.c', 'sha2.c',
'internal.c', 'internal-sha2.c',
'blf.c', 'rijndael.c',
@@ -552,22 +552,22 @@ sub mkvcbuild
closedir($D);
$mf =
- Project::read_file('src\backend\utils\mb\conversion_procs\Makefile');
+ Project::read_file('src/backend/utils/mb/conversion_procs/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{SUBDIRS\s*=\s*(.*)$}m
|| die 'Could not match in conversion makefile' . "\n";
foreach my $sub (split /\s+/, $1)
{
- my $dir = 'src\backend\utils\mb\conversion_procs\\' . $sub;
+ my $dir = 'src/backend/utils/mb/conversion_procs/' . $sub;
my $p = $solution->AddProject($sub, 'dll', 'conversion procs', $dir);
- $p->AddFile("$dir\\$sub.c"); # implicit source file
+ $p->AddFile("$dir/$sub.c"); # implicit source file
$p->AddReference($postgres);
}
- $mf = Project::read_file('src\bin\scripts\Makefile');
+ $mf = Project::read_file('src/bin/scripts/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{PROGRAMS\s*=\s*(.*)$}m
- || die 'Could not match in bin\scripts\Makefile' . "\n";
+ || die 'Could not match in bin/scripts/Makefile' . "\n";
foreach my $prg (split /\s+/, $1)
{
my $proj = $solution->AddProject($prg, 'exe', 'bin');
@@ -579,47 +579,47 @@ sub mkvcbuild
$f =~ s/\.o$/\.c/;
if ($f eq 'keywords.c')
{
- $proj->AddFile('src\bin\pg_dump\keywords.c');
+ $proj->AddFile('src/bin/pg_dump/keywords.c');
}
elsif ($f eq 'kwlookup.c')
{
- $proj->AddFile('src\backend\parser\kwlookup.c');
+ $proj->AddFile('src/backend/parser/kwlookup.c');
}
elsif ($f eq 'dumputils.c')
{
- $proj->AddFile('src\bin\pg_dump\dumputils.c');
+ $proj->AddFile('src/bin/pg_dump/dumputils.c');
}
elsif ($f =~ /print\.c$/)
{ # Also catches mbprint.c
- $proj->AddFile('src\bin\psql\\' . $f);
+ $proj->AddFile('src/bin/psql/' . $f);
}
elsif ($f =~ /\.c$/)
{
- $proj->AddFile('src\bin\scripts\\' . $f);
+ $proj->AddFile('src/bin/scripts/' . $f);
}
}
- $proj->AddIncludeDir('src\interfaces\libpq');
- $proj->AddIncludeDir('src\bin\pg_dump');
- $proj->AddIncludeDir('src\bin\psql');
+ $proj->AddIncludeDir('src/interfaces/libpq');
+ $proj->AddIncludeDir('src/bin/pg_dump');
+ $proj->AddIncludeDir('src/bin/psql');
$proj->AddReference($libpq, $libpgcommon, $libpgport);
- $proj->AddDirResourceFile('src\bin\scripts');
+ $proj->AddDirResourceFile('src/bin/scripts');
$proj->AddLibrary('ws2_32.lib');
}
# Regression DLL and EXE
my $regress = $solution->AddProject('regress', 'dll', 'misc');
- $regress->AddFile('src\test\regress\regress.c');
- $regress->AddDirResourceFile('src\test\regress');
+ $regress->AddFile('src/test/regress/regress.c');
+ $regress->AddDirResourceFile('src/test/regress');
$regress->AddReference($postgres);
my $pgregress = $solution->AddProject('pg_regress', 'exe', 'misc');
- $pgregress->AddFile('src\test\regress\pg_regress.c');
- $pgregress->AddFile('src\test\regress\pg_regress_main.c');
- $pgregress->AddIncludeDir('src\port');
+ $pgregress->AddFile('src/test/regress/pg_regress.c');
+ $pgregress->AddFile('src/test/regress/pg_regress_main.c');
+ $pgregress->AddIncludeDir('src/port');
$pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress->AddDefine('FRONTEND');
$pgregress->AddLibrary('ws2_32.lib');
- $pgregress->AddDirResourceFile('src\test\regress');
+ $pgregress->AddDirResourceFile('src/test/regress');
$pgregress->AddReference($libpgcommon, $libpgport);
# fix up pg_xlogdump once it's been set up
@@ -632,7 +632,7 @@ sub mkvcbuild
{
my $bf = basename $xf;
copy($xf, "contrib/pg_xlogdump/$bf");
- $pg_xlogdump->AddFile("contrib\\pg_xlogdump\\$bf");
+ $pg_xlogdump->AddFile("contrib/pg_xlogdump/$bf");
}
copy(
'src/backend/access/transam/xlogreader.c',
@@ -653,11 +653,11 @@ sub AddSimpleFrontend
my $uselibpq = shift;
my $p = $solution->AddProject($n, 'exe', 'bin');
- $p->AddDir('src\bin\\' . $n);
+ $p->AddDir('src/bin/' . $n);
$p->AddReference($libpgcommon, $libpgport);
if ($uselibpq)
{
- $p->AddIncludeDir('src\interfaces\libpq');
+ $p->AddIncludeDir('src/interfaces/libpq');
$p->AddReference($libpq);
}
@@ -671,13 +671,13 @@ sub AddSimpleFrontend
sub AddContrib
{
my $n = shift;
- my $mf = Project::read_file('contrib\\' . $n . '\Makefile');
+ my $mf = Project::read_file('contrib/' . $n . '/Makefile');
if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg)
{
my $dn = $1;
my $proj =
- $solution->AddProject($dn, 'dll', 'contrib', 'contrib\\' . $n);
+ $solution->AddProject($dn, 'dll', 'contrib', 'contrib/' . $n);
$proj->AddReference($postgres);
AdjustContribProj($proj);
}
@@ -686,8 +686,8 @@ sub AddContrib
foreach my $mod (split /\s+/, $1)
{
my $proj =
- $solution->AddProject($mod, 'dll', 'contrib', 'contrib\\' . $n);
- $proj->AddFile('contrib\\' . $n . '\\' . $mod . '.c');
+ $solution->AddProject($mod, 'dll', 'contrib', 'contrib/' . $n);
+ $proj->AddFile('contrib/' . $n . '/' . $mod . '.c');
$proj->AddReference($postgres);
AdjustContribProj($proj);
}
@@ -695,7 +695,7 @@ sub AddContrib
elsif ($mf =~ /^PROGRAM\s*=\s*(.*)$/mg)
{
my $proj =
- $solution->AddProject($1, 'exe', 'contrib', 'contrib\\' . $n);
+ $solution->AddProject($1, 'exe', 'contrib', 'contrib/' . $n);
AdjustContribProj($proj);
}
else
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index b9b5a23..6fd5644 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -52,23 +52,24 @@ sub AddFiles
while (my $f = shift)
{
- $self->{files}->{ $dir . "\\" . $f } = 1;
+ $self->{files}->{ $dir . "/" . $f } = 1;
}
}
sub ReplaceFile
{
my ($self, $filename, $newname) = @_;
- my $re = "\\\\$filename\$";
+ my $re = "\\/$filename\$";
foreach my $file (keys %{ $self->{files} })
{
-
# Match complete filename
- if ($filename =~ /\\/)
+ if ($filename =~ m!/!)
{
if ($file eq $filename)
{
+ print "$file\n";
+
delete $self->{files}{$file};
$self->{files}{$newname} = 1;
return;
@@ -77,7 +78,7 @@ sub ReplaceFile
elsif ($file =~ m/($re)/)
{
delete $self->{files}{$file};
- $self->{files}{"$newname\\$filename"} = 1;
+ $self->{files}{"$newname/$filename"} = 1;
return;
}
}
@@ -105,7 +106,7 @@ sub RelocateFiles
if ($r)
{
$self->RemoveFile($f);
- $self->AddFile($targetdir . '\\' . basename($f));
+ $self->AddFile($targetdir . '/' . basename($f));
}
}
}
@@ -118,7 +119,7 @@ sub AddReference
{
push @{ $self->{references} }, $ref;
$self->AddLibrary(
- "__CFGNAME__\\" . $ref->{name} . "\\" . $ref->{name} . ".lib");
+ "__CFGNAME__/" . $ref->{name} . "/" . $ref->{name} . ".lib");
}
}
@@ -169,8 +170,8 @@ sub FullExportDLL
my ($self, $libname) = @_;
$self->{builddef} = 1;
- $self->{def} = ".\\__CFGNAME__\\$self->{name}\\$self->{name}.def";
- $self->{implib} = "__CFGNAME__\\$self->{name}\\$libname";
+ $self->{def} = "./__CFGNAME__/$self->{name}/$self->{name}.def";
+ $self->{implib} = "__CFGNAME__/$self->{name}/$libname";
}
sub UseDef
@@ -194,9 +195,9 @@ sub AddDir
if $subdir eq "\$(top_builddir)/src/timezone"
; #special case for non-standard include
next
- if $reldir . "\\" . $subdir eq "src\\backend\\port\\darwin";
+ if $reldir . "/" . $subdir eq "src/backend/port/darwin";
- $self->AddDir($reldir . "\\" . $subdir);
+ $self->AddDir($reldir . "/" . $subdir);
}
}
while ($mf =~ m{^(?:EXTRA_)?OBJS[^=]*=\s*(.*)$}m)
@@ -243,13 +244,11 @@ sub AddDir
if ($f =~ /^\$\(top_builddir\)\/(.*)/)
{
$f = $1;
- $f =~ s/\//\\/g;
$self->{files}->{$f} = 1;
}
else
{
- $f =~ s/\//\\/g;
- $self->{files}->{"$reldir\\$f"} = 1;
+ $self->{files}->{"$reldir/$f"} = 1;
}
}
$mf =~ s{OBJS[^=]*=\s*(.*)$}{}m;
@@ -264,7 +263,6 @@ sub AddDir
my $match = $1;
my $top = $2;
my $target = $3;
- $target =~ s{/}{\\}g;
my @pieces = split /\s+/, $match;
foreach my $fn (@pieces)
{
@@ -274,7 +272,7 @@ sub AddDir
}
elsif ($top eq "(backend_src)")
{
- eval { $self->ReplaceFile($fn, "src\\backend\\$target") };
+ eval { $self->ReplaceFile($fn, "src/backend/$target") };
}
else
{
@@ -310,12 +308,12 @@ sub AddResourceFile
localtime(time);
my $d = sprintf("%02d%03d", ($year - 100), $yday);
- if (Solution::IsNewer("$dir\\win32ver.rc", 'src\port\win32ver.rc'))
+ if (Solution::IsNewer("$dir/win32ver.rc", 'src/port/win32ver.rc'))
{
print "Generating win32ver.rc for $dir\n";
- open(I, 'src\port\win32ver.rc')
+ open(I, 'src/port/win32ver.rc')
|| confess "Could not open win32ver.rc";
- open(O, ">$dir\\win32ver.rc")
+ open(O, ">$dir/win32ver.rc")
|| confess "Could not write win32ver.rc";
my $icostr = $ico ? "IDI_ICON ICON \"src/port/$ico.ico\"" : "";
while (<I>)
@@ -332,7 +330,7 @@ sub AddResourceFile
}
close(O);
close(I);
- $self->AddFile("$dir\\win32ver.rc");
+ $self->AddFile("$dir/win32ver.rc");
}
sub DisableLinkerWarnings
@@ -415,9 +413,9 @@ sub read_makefile
my $t = $/;
undef $/;
- open($F, "$reldir\\GNUmakefile")
- || open($F, "$reldir\\Makefile")
- || croak "Could not open $reldir\\Makefile\n";
+ open($F, "$reldir/GNUmakefile")
+ || open($F, "$reldir/Makefile")
+ || confess "Could not open $reldir/Makefile\n";
my $txt = <$F>;
close($F);
$/ = $t;
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 714585f..f524821 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -82,15 +82,15 @@ sub DeterminePlatform
sub IsNewer
{
my ($newfile, $oldfile) = @_;
- if ( $oldfile ne 'src\tools\msvc\config.pl'
- && $oldfile ne 'src\tools\msvc\config_default.pl')
+ if ( $oldfile ne 'src/tools/msvc/config.pl'
+ && $oldfile ne 'src/tools/msvc/config_default.pl')
{
return 1
- if (-f 'src\tools\msvc\config.pl')
- && IsNewer($newfile, 'src\tools\msvc\config.pl');
+ if (-f 'src/tools/msvc/config.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config.pl');
return 1
- if (-f 'src\tools\msvc\config_default.pl')
- && IsNewer($newfile, 'src\tools\msvc\config_default.pl');
+ if (-f 'src/tools/msvc/config_default.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config_default.pl');
}
return 1 if (!(-e $newfile));
my @nstat = stat($newfile);
@@ -139,20 +139,20 @@ sub GenerateFiles
if ($self->{strver} eq '' || $self->{numver} eq '');
if (IsNewer(
- "src\\include\\pg_config_os.h", "src\\include\\port\\win32.h"))
+ "src/include/pg_config_os.h", "src/include/port/win32.h"))
{
print "Copying pg_config_os.h...\n";
- copyFile("src\\include\\port\\win32.h",
- "src\\include\\pg_config_os.h");
+ copyFile("src/include/port/win32.h",
+ "src/include/pg_config_os.h");
}
if (IsNewer(
- "src\\include\\pg_config.h", "src\\include\\pg_config.h.win32"))
+ "src/include/pg_config.h", "src/include/pg_config.h.win32"))
{
print "Generating pg_config.h...\n";
- open(I, "src\\include\\pg_config.h.win32")
+ open(I, "src/include/pg_config.h.win32")
|| confess "Could not open pg_config.h.win32\n";
- open(O, ">src\\include\\pg_config.h")
+ open(O, ">src/include/pg_config.h")
|| confess "Could not write to pg_config.h\n";
my $extraver = $self->{options}->{extraver};
$extraver = '' unless defined $extraver;
@@ -240,111 +240,111 @@ sub GenerateFiles
}
if (IsNewer(
- "src\\include\\pg_config_ext.h",
- "src\\include\\pg_config_ext.h.win32"))
+ "src/include/pg_config_ext.h",
+ "src/include/pg_config_ext.h.win32"))
{
print "Copying pg_config_ext.h...\n";
copyFile(
- "src\\include\\pg_config_ext.h.win32",
- "src\\include\\pg_config_ext.h");
+ "src/include/pg_config_ext.h.win32",
+ "src/include/pg_config_ext.h");
}
$self->GenerateDefFile(
- "src\\interfaces\\libpq\\libpqdll.def",
- "src\\interfaces\\libpq\\exports.txt",
+ "src/interfaces/libpq/libpqdll.def",
+ "src/interfaces/libpq/exports.txt",
"LIBPQ");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\ecpglib\\ecpglib.def",
- "src\\interfaces\\ecpg\\ecpglib\\exports.txt",
+ "src/interfaces/ecpg/ecpglib/ecpglib.def",
+ "src/interfaces/ecpg/ecpglib/exports.txt",
"LIBECPG");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\compatlib\\compatlib.def",
- "src\\interfaces\\ecpg\\compatlib\\exports.txt",
+ "src/interfaces/ecpg/compatlib/compatlib.def",
+ "src/interfaces/ecpg/compatlib/exports.txt",
"LIBECPG_COMPAT");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\pgtypeslib\\pgtypeslib.def",
- "src\\interfaces\\ecpg\\pgtypeslib\\exports.txt",
+ "src/interfaces/ecpg/pgtypeslib/pgtypeslib.def",
+ "src/interfaces/ecpg/pgtypeslib/exports.txt",
"LIBPGTYPES");
if (IsNewer(
- 'src\backend\utils\fmgrtab.c', 'src\include\catalog\pg_proc.h'))
+ 'src/backend/utils/fmgrtab.c', 'src/include/catalog/pg_proc.h'))
{
print "Generating fmgrtab.c and fmgroids.h...\n";
- chdir('src\backend\utils');
+ chdir('src/backend/utils');
system(
"perl -I ../catalog Gen_fmgrtab.pl ../../../src/include/catalog/pg_proc.h");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\include\utils\fmgroids.h',
- 'src\backend\utils\fmgroids.h'))
+ 'src/include/utils/fmgroids.h',
+ 'src/backend/utils/fmgroids.h'))
{
- copyFile('src\backend\utils\fmgroids.h',
- 'src\include\utils\fmgroids.h');
+ copyFile('src/backend/utils/fmgroids.h',
+ 'src/include/utils/fmgroids.h');
}
- if (IsNewer('src\include\utils\probes.h', 'src\backend\utils\probes.d'))
+ if (IsNewer('src/include/utils/probes.h', 'src/backend/utils/probes.d'))
{
print "Generating probes.h...\n";
system(
-'psed -f src\backend\utils\Gen_dummy_probes.sed src\backend\utils\probes.d > src\include\utils\probes.h'
+'psed -f src/backend/utils/Gen_dummy_probes.sed src/backend/utils/probes.d > src/include/utils/probes.h'
);
}
if ($self->{options}->{python}
&& IsNewer(
- 'src\pl\plpython\spiexceptions.h',
- 'src\include\backend\errcodes.txt'))
+ 'src/pl/plpython/spiexceptions.h',
+ 'src/include/backend/errcodes.txt'))
{
print "Generating spiexceptions.h...\n";
system(
-'perl src\pl\plpython\generate-spiexceptions.pl src\backend\utils\errcodes.txt > src\pl\plpython\spiexceptions.h'
+'perl src/pl/plpython/generate-spiexceptions.pl src/backend/utils/errcodes.txt > src/pl/plpython/spiexceptions.h'
);
}
if (IsNewer(
- 'src\include\utils\errcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/include/utils/errcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating errcodes.h...\n";
system(
-'perl src\backend\utils\generate-errcodes.pl src\backend\utils\errcodes.txt > src\backend\utils\errcodes.h'
+'perl src/backend/utils/generate-errcodes.pl src/backend/utils/errcodes.txt > src/backend/utils/errcodes.h'
);
- copyFile('src\backend\utils\errcodes.h',
- 'src\include\utils\errcodes.h');
+ copyFile('src/backend/utils/errcodes.h',
+ 'src/include/utils/errcodes.h');
}
if (IsNewer(
- 'src\pl\plpgsql\src\plerrcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/pl/plpgsql/src/plerrcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating plerrcodes.h...\n";
system(
-'perl src\pl\plpgsql\src\generate-plerrcodes.pl src\backend\utils\errcodes.txt > src\pl\plpgsql\src\plerrcodes.h'
+'perl src/pl/plpgsql/src/generate-plerrcodes.pl src/backend/utils/errcodes.txt > src/pl/plpgsql/src/plerrcodes.h'
);
}
if (IsNewer(
- 'src\backend\utils\sort\qsort_tuple.c',
- 'src\backend\utils\sort\gen_qsort_tuple.pl'))
+ 'src/backend/utils/sort/qsort_tuple.c',
+ 'src/backend/utils/sort/gen_qsort_tuple.pl'))
{
print "Generating qsort_tuple.c...\n";
system(
-'perl src\backend\utils\sort\gen_qsort_tuple.pl > src\backend\utils\sort\qsort_tuple.c'
+'perl src/backend/utils/sort/gen_qsort_tuple.pl > src/backend/utils/sort/qsort_tuple.c'
);
}
if (IsNewer(
- 'src\interfaces\libpq\libpq.rc',
- 'src\interfaces\libpq\libpq.rc.in'))
+ 'src/interfaces/libpq/libpq.rc',
+ 'src/interfaces/libpq/libpq.rc.in'))
{
print "Generating libpq.rc...\n";
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime(time);
my $d = ($year - 100) . "$yday";
- open(I, '<', 'src\interfaces\libpq\libpq.rc.in')
+ open(I, '<', 'src/interfaces/libpq/libpq.rc.in')
|| confess "Could not open libpq.rc.in";
- open(O, '>', 'src\interfaces\libpq\libpq.rc')
+ open(O, '>', 'src/interfaces/libpq/libpq.rc')
|| confess "Could not open libpq.rc";
while (<I>)
{
@@ -355,30 +355,30 @@ sub GenerateFiles
close(O);
}
- if (IsNewer('src\bin\psql\sql_help.h', 'src\bin\psql\create_help.pl'))
+ if (IsNewer('src/bin/psql/sql_help.h', 'src/bin/psql/create_help.pl'))
{
print "Generating sql_help.h...\n";
- chdir('src\bin\psql');
+ chdir('src/bin/psql');
system("perl create_help.pl ../../../doc/src/sgml/ref sql_help");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\preproc\preproc.y',
- 'src\backend\parser\gram.y'))
+ 'src/interfaces/ecpg/preproc/preproc.y',
+ 'src/backend/parser/gram.y'))
{
print "Generating preproc.y...\n";
- chdir('src\interfaces\ecpg\preproc');
- system('perl parse.pl < ..\..\..\backend\parser\gram.y > preproc.y');
- chdir('..\..\..\..');
+ chdir('src/interfaces/ecpg/preproc');
+ system('perl parse.pl < ../../../backend/parser/gram.y > preproc.y');
+ chdir('../../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\include\ecpg_config.h',
- 'src\interfaces\ecpg\include\ecpg_config.h.in'))
+ 'src/interfaces/ecpg/include/ecpg_config.h',
+ 'src/interfaces/ecpg/include/ecpg_config.h.in'))
{
print "Generating ecpg_config.h...\n";
- open(O, '>', 'src\interfaces\ecpg\include\ecpg_config.h')
+ open(O, '>', 'src/interfaces/ecpg/include/ecpg_config.h')
|| confess "Could not open ecpg_config.h";
print O <<EOF;
#if (_MSC_VER > 1200)
@@ -391,10 +391,10 @@ EOF
close(O);
}
- unless (-f "src\\port\\pg_config_paths.h")
+ unless (-f "src/port/pg_config_paths.h")
{
print "Generating pg_config_paths.h...\n";
- open(O, '>', 'src\port\pg_config_paths.h')
+ open(O, '>', 'src/port/pg_config_paths.h')
|| confess "Could not open pg_config_paths.h";
print O <<EOF;
#define PGBINDIR "/bin"
@@ -413,7 +413,7 @@ EOF
close(O);
}
- my $mf = Project::read_file('src\backend\catalog\Makefile');
+ my $mf = Project::read_file('src/backend/catalog/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
|| croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
@@ -426,15 +426,15 @@ EOF
"src/include/catalog/$bki"))
{
print "Generating postgres.bki and schemapg.h...\n";
- chdir('src\backend\catalog');
+ chdir('src/backend/catalog');
my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
system(
"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
);
- chdir('..\..\..');
+ chdir('../../..');
copyFile(
- 'src\backend\catalog\schemapg.h',
- 'src\include\catalog\schemapg.h');
+ 'src/backend/catalog/schemapg.h',
+ 'src/include/catalog/schemapg.h');
last;
}
}
On Fri, Mar 13, 2015 at 6:04 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
On Fri, Mar 13, 2015 at 6:20 AM, Alvaro Herrera wrote:
Peter Eisentraut wrote:
This is contrib/chkpass not finding the crypt symbol, which is
presumably in some library. But I can't see how it would normally find
it, without my patch.It seems crypt is provided by libpgport. So chkpass should be mentioned
in @contrib_uselibpgport, but isn't. Maybe the fix is just to add it
there?I had a closer look at this patch, and yes indeed, the problem was
exactly that. Now honestly I cannot understand why this dependency
with libpgport was not necessary before... In any case, attached is a
patch rebased on HEAD that builds correctly with MSVC.
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.
--
Michael
Attachments:
0001-Replace-backslashes-by-slash-in-MSVC-build-script.patchtext/x-patch; charset=US-ASCII; name=0001-Replace-backslashes-by-slash-in-MSVC-build-script.patchDownload
From 3599bab7b0e37df2a47e497dc9049aa7d78a880b Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@otacoo.com>
Date: Thu, 23 Apr 2015 20:13:30 -0700
Subject: [PATCH] Replace backslashes by slash in MSVC build script
This makes it easier to run on Linux to check file paths.
---
src/tools/msvc/MSBuildProject.pm | 2 +-
src/tools/msvc/Mkvcbuild.pm | 344 ++++++++++++++++++++-------------------
src/tools/msvc/Project.pm | 44 +++--
src/tools/msvc/Solution.pm | 138 ++++++++--------
4 files changed, 264 insertions(+), 264 deletions(-)
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index 37958f9..a16f9ac 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -127,7 +127,7 @@ EOF
foreach my $fileNameWithPath (sort keys %{ $self->{files} })
{
confess "Bad format filename '$fileNameWithPath'\n"
- unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
+ unless ($fileNameWithPath =~ m!^(.*)/([^/]+)\.(c|cpp|y|l|rc)$!);
my $dir = $1;
my $fileName = $2;
if ($fileNameWithPath =~ /\.y$/ or $fileNameWithPath =~ /\.l$/)
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 8654bfe..2f0e837 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -33,10 +33,12 @@ my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' };
my @contrib_uselibpq =
('dblink', 'oid2name', 'postgres_fdw', 'vacuumlo');
my @contrib_uselibpgport = (
+ 'chkpass',
'oid2name',
'pg_standby',
'vacuumlo');
my @contrib_uselibpgcommon = (
+ 'chkpass',
'oid2name',
'pg_standby',
'vacuumlo');
@@ -44,8 +46,8 @@ my $contrib_extralibs = undef;
my $contrib_extraincludes =
{ 'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend'] };
my $contrib_extrasource = {
- 'cube' => [ 'contrib\cube\cubescan.l', 'contrib\cube\cubeparse.y' ],
- 'seg' => [ 'contrib\seg\segscan.l', 'contrib\seg\segparse.y' ], };
+ 'cube' => [ 'contrib/cube/cubescan.l', 'contrib/cube/cubeparse.y' ],
+ 'seg' => [ 'contrib/seg/segscan.l', 'contrib/seg/segparse.y' ], };
my @contrib_excludes = ('pgcrypto', 'commit_ts', 'intagg', 'sepgsql');
# Set of variables for frontend modules
@@ -59,12 +61,12 @@ my $frontend_extralibs = {
'pgbench' => ['ws2_32.lib'],
'psql' => ['ws2_32.lib'] };
my $frontend_extraincludes = {
- 'initdb' => ['src\timezone'],
- 'psql' => [ 'src\bin\pg_dump', 'src\backend' ] };
+ 'initdb' => ['src/timezone'],
+ 'psql' => [ 'src/bin/pg_dump', 'src/backend' ] };
my $frontend_extrasource = {
- 'psql' => ['src\bin\psql\psqlscan.l'],
+ 'psql' => ['src/bin/psql/psqlscan.l'],
'pgbench' =>
- [ 'src\bin\pgbench\exprscan.l', 'src\bin\pgbench\exprparse.y' ],
+ [ 'src/bin/pgbench/exprscan.l', 'src/bin/pgbench/exprparse.y' ],
};
my @frontend_excludes =
('pgevent', 'pg_basebackup', 'pg_rewind', 'pg_dump', 'pg_xlogdump', 'scripts');
@@ -73,9 +75,9 @@ sub mkvcbuild
{
our $config = shift;
- chdir('..\..\..') if (-d '..\msvc' && -d '..\..\..\src');
+ chdir('../../..') if (-d '../msvc' && -d '../../../src');
die 'Must run from root or msvc directory'
- unless (-d 'src\tools\msvc' && -d 'src');
+ unless (-d 'src/tools/msvc' && -d 'src');
my $vsVersion = DetermineVisualStudioVersion();
@@ -114,37 +116,37 @@ sub mkvcbuild
$libpgport = $solution->AddProject('libpgport', 'lib', 'misc');
$libpgport->AddDefine('FRONTEND');
- $libpgport->AddFiles('src\port', @pgportfiles);
+ $libpgport->AddFiles('src/port', @pgportfiles);
$libpgcommon = $solution->AddProject('libpgcommon', 'lib', 'misc');
$libpgcommon->AddDefine('FRONTEND');
- $libpgcommon->AddFiles('src\common', @pgcommonfrontendfiles);
+ $libpgcommon->AddFiles('src/common', @pgcommonfrontendfiles);
- $postgres = $solution->AddProject('postgres', 'exe', '', 'src\backend');
- $postgres->AddIncludeDir('src\backend');
- $postgres->AddDir('src\backend\port\win32');
- $postgres->AddFile('src\backend\utils\fmgrtab.c');
+ $postgres = $solution->AddProject('postgres', 'exe', '', 'src/backend');
+ $postgres->AddIncludeDir('src/backend');
+ $postgres->AddDir('src/backend/port/win32');
+ $postgres->AddFile('src/backend/utils/fmgrtab.c');
$postgres->ReplaceFile(
- 'src\backend\port\dynloader.c',
- 'src\backend\port\dynloader\win32.c');
- $postgres->ReplaceFile('src\backend\port\pg_sema.c',
- 'src\backend\port\win32_sema.c');
- $postgres->ReplaceFile('src\backend\port\pg_shmem.c',
- 'src\backend\port\win32_shmem.c');
- $postgres->ReplaceFile('src\backend\port\pg_latch.c',
- 'src\backend\port\win32_latch.c');
- $postgres->AddFiles('src\port', @pgportfiles);
- $postgres->AddFiles('src\common', @pgcommonbkndfiles);
- $postgres->AddDir('src\timezone');
-
- # We need source files from src\timezone, but that directory's resource
+ 'src/backend/port/dynloader.c',
+ 'src/backend/port/dynloader/win32.c');
+ $postgres->ReplaceFile('src/backend/port/pg_sema.c',
+ 'src/backend/port/win32_sema.c');
+ $postgres->ReplaceFile('src/backend/port/pg_shmem.c',
+ 'src/backend/port/win32_shmem.c');
+ $postgres->ReplaceFile('src/backend/port/pg_latch.c',
+ 'src/backend/port/win32_latch.c');
+ $postgres->AddFiles('src/port', @pgportfiles);
+ $postgres->AddFiles('src/common', @pgcommonbkndfiles);
+ $postgres->AddDir('src/timezone');
+
+ # We need source files from src/timezone, but that directory's resource
# file pertains to "zic", not to the backend.
- $postgres->RemoveFile('src\timezone\win32ver.rc');
- $postgres->AddFiles('src\backend\parser', 'scan.l', 'gram.y');
- $postgres->AddFiles('src\backend\bootstrap', 'bootscanner.l',
+ $postgres->RemoveFile('src/timezone/win32ver.rc');
+ $postgres->AddFiles('src/backend/parser', 'scan.l', 'gram.y');
+ $postgres->AddFiles('src/backend/bootstrap', 'bootscanner.l',
'bootparse.y');
- $postgres->AddFiles('src\backend\utils\misc', 'guc-file.l');
- $postgres->AddFiles('src\backend\replication', 'repl_scanner.l',
+ $postgres->AddFiles('src/backend/utils/misc', 'guc-file.l');
+ $postgres->AddFiles('src/backend/replication', 'repl_scanner.l',
'repl_gram.y');
$postgres->AddDefine('BUILDING_DLL');
$postgres->AddLibrary('secur32.lib');
@@ -156,31 +158,31 @@ sub mkvcbuild
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $postgres->RemoveFile('src\backend\libpq\be-secure-openssl.c');
+ $postgres->RemoveFile('src/backend/libpq/be-secure-openssl.c');
}
my $snowball = $solution->AddProject('dict_snowball', 'dll', '',
- 'src\backend\snowball');
+ 'src/backend/snowball');
# This Makefile uses VPATH to find most source files in a subdirectory.
$snowball->RelocateFiles(
- 'src\backend\snowball\libstemmer',
+ 'src/backend/snowball/libstemmer',
sub {
return shift !~ /(dict_snowball.c|win32ver.rc)$/;
});
- $snowball->AddIncludeDir('src\include\snowball');
+ $snowball->AddIncludeDir('src/include/snowball');
$snowball->AddReference($postgres);
my $plpgsql =
- $solution->AddProject('plpgsql', 'dll', 'PLs', 'src\pl\plpgsql\src');
- $plpgsql->AddFiles('src\pl\plpgsql\src', 'pl_gram.y');
+ $solution->AddProject('plpgsql', 'dll', 'PLs', 'src/pl/plpgsql/src');
+ $plpgsql->AddFiles('src/pl/plpgsql/src', 'pl_gram.y');
$plpgsql->AddReference($postgres);
if ($solution->{options}->{perl})
{
- my $plperlsrc = "src\\pl\\plperl\\";
+ my $plperlsrc = "src/pl/plperl/";
my $plperl =
- $solution->AddProject('plperl', 'dll', 'PLs', 'src\pl\plperl');
+ $solution->AddProject('plperl', 'dll', 'PLs', 'src/pl/plperl');
$plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE');
$plperl->AddDefine('PLPERL_HAVE_UID_GID');
foreach my $xs ('SPI.xs', 'Util.xs')
@@ -188,7 +190,7 @@ sub mkvcbuild
(my $xsc = $xs) =~ s/\.xs/.c/;
if (Solution::IsNewer("$plperlsrc$xsc", "$plperlsrc$xs"))
{
- my $xsubppdir = first { -e "$_\\ExtUtils\\xsubpp" } @INC;
+ my $xsubppdir = first { -e "$_/ExtUtils/xsubpp" } @INC;
print "Building $plperlsrc$xsc...\n";
system( $solution->{options}->{perl}
. '/bin/perl '
@@ -205,15 +207,15 @@ sub mkvcbuild
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_perlboot.pl')
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_perlboot.pl')
|| Solution::IsNewer(
- 'src\pl\plperl\perlchunks.h',
- 'src\pl\plperl\plc_trusted.pl'))
+ 'src/pl/plperl/perlchunks.h',
+ 'src/pl/plperl/plc_trusted.pl'))
{
- print 'Building src\pl\plperl\perlchunks.h ...' . "\n";
+ print 'Building src/pl/plperl/perlchunks.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'text2macro.pl '
@@ -221,29 +223,29 @@ sub mkvcbuild
. 'plc_perlboot.pl plc_trusted.pl '
. '>perlchunks.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\perlchunks.h'))
- || -z 'src\pl\plperl\perlchunks.h')
+ if ((!(-f 'src/pl/plperl/perlchunks.h'))
+ || -z 'src/pl/plperl/perlchunks.h')
{
- unlink('src\pl\plperl\perlchunks.h'); # if zero size
+ unlink('src/pl/plperl/perlchunks.h'); # if zero size
die 'Failed to create perlchunks.h' . "\n";
}
}
if (Solution::IsNewer(
- 'src\pl\plperl\plperl_opmask.h',
- 'src\pl\plperl\plperl_opmask.pl'))
+ 'src/pl/plperl/plperl_opmask.h',
+ 'src/pl/plperl/plperl_opmask.pl'))
{
- print 'Building src\pl\plperl\plperl_opmask.h ...' . "\n";
+ print 'Building src/pl/plperl/plperl_opmask.h ...' . "\n";
my $basedir = getcwd;
- chdir 'src\pl\plperl';
+ chdir 'src/pl/plperl';
system( $solution->{options}->{perl}
. '/bin/perl '
. 'plperl_opmask.pl '
. 'plperl_opmask.h');
chdir $basedir;
- if ((!(-f 'src\pl\plperl\plperl_opmask.h'))
- || -z 'src\pl\plperl\plperl_opmask.h')
+ if ((!(-f 'src/pl/plperl/plperl_opmask.h'))
+ || -z 'src/pl/plperl/plperl_opmask.h')
{
- unlink('src\pl\plperl\plperl_opmask.h'); # if zero size
+ unlink('src/pl/plperl/plperl_opmask.h'); # if zero size
die 'Failed to create plperl_opmask.h' . "\n";
}
}
@@ -283,88 +285,88 @@ sub mkvcbuild
my $pymajorver = substr($pyver, 0, 1);
my $plpython = $solution->AddProject('plpython' . $pymajorver,
- 'dll', 'PLs', 'src\pl\plpython');
- $plpython->AddIncludeDir($pyprefix . '\include');
- $plpython->AddLibrary($pyprefix . "\\Libs\\python$pyver.lib");
+ 'dll', 'PLs', 'src/pl/plpython');
+ $plpython->AddIncludeDir($pyprefix . '/include');
+ $plpython->AddLibrary($pyprefix . "/Libs/python$pyver.lib");
$plpython->AddReference($postgres);
}
if ($solution->{options}->{tcl})
{
my $pltcl =
- $solution->AddProject('pltcl', 'dll', 'PLs', 'src\pl\tcl');
- $pltcl->AddIncludeDir($solution->{options}->{tcl} . '\include');
+ $solution->AddProject('pltcl', 'dll', 'PLs', 'src/pl/tcl');
+ $pltcl->AddIncludeDir($solution->{options}->{tcl} . '/include');
$pltcl->AddReference($postgres);
- if (-e $solution->{options}->{tcl} . '\lib\tcl85.lib')
+ if (-e $solution->{options}->{tcl} . '/lib/tcl85.lib')
{
$pltcl->AddLibrary(
- $solution->{options}->{tcl} . '\lib\tcl85.lib');
+ $solution->{options}->{tcl} . '/lib/tcl85.lib');
}
else
{
$pltcl->AddLibrary(
- $solution->{options}->{tcl} . '\lib\tcl84.lib');
+ $solution->{options}->{tcl} . '/lib/tcl84.lib');
}
}
$libpq = $solution->AddProject('libpq', 'dll', 'interfaces',
- 'src\interfaces\libpq');
+ 'src/interfaces/libpq');
$libpq->AddDefine('FRONTEND');
$libpq->AddDefine('UNSAFE_STAT_OK');
- $libpq->AddIncludeDir('src\port');
+ $libpq->AddIncludeDir('src/port');
$libpq->AddLibrary('secur32.lib');
$libpq->AddLibrary('ws2_32.lib');
$libpq->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap});
- $libpq->UseDef('src\interfaces\libpq\libpqdll.def');
- $libpq->ReplaceFile('src\interfaces\libpq\libpqrc.c',
- 'src\interfaces\libpq\libpq.rc');
+ $libpq->UseDef('src/interfaces/libpq/libpqdll.def');
+ $libpq->ReplaceFile('src/interfaces/libpq/libpqrc.c',
+ 'src/interfaces/libpq/libpq.rc');
$libpq->AddReference($libpgport);
# The OBJS scraper doesn't know about ifdefs, so remove fe-secure-openssl.c
# if building without OpenSSL
if (!$solution->{options}->{openssl})
{
- $libpq->RemoveFile('src\interfaces\libpq\fe-secure-openssl.c');
+ $libpq->RemoveFile('src/interfaces/libpq/fe-secure-openssl.c');
}
my $libpqwalreceiver =
$solution->AddProject('libpqwalreceiver', 'dll', '',
- 'src\backend\replication\libpqwalreceiver');
- $libpqwalreceiver->AddIncludeDir('src\interfaces\libpq');
+ 'src/backend/replication/libpqwalreceiver');
+ $libpqwalreceiver->AddIncludeDir('src/interfaces/libpq');
$libpqwalreceiver->AddReference($postgres, $libpq);
my $pgtypes = $solution->AddProject(
'libpgtypes', 'dll',
- 'interfaces', 'src\interfaces\ecpg\pgtypeslib');
+ 'interfaces', 'src/interfaces/ecpg/pgtypeslib');
$pgtypes->AddDefine('FRONTEND');
$pgtypes->AddReference($libpgport);
- $pgtypes->UseDef('src\interfaces\ecpg\pgtypeslib\pgtypeslib.def');
- $pgtypes->AddIncludeDir('src\interfaces\ecpg\include');
+ $pgtypes->UseDef('src/interfaces/ecpg/pgtypeslib/pgtypeslib.def');
+ $pgtypes->AddIncludeDir('src/interfaces/ecpg/include');
my $libecpg = $solution->AddProject('libecpg', 'dll', 'interfaces',
- 'src\interfaces\ecpg\ecpglib');
+ 'src/interfaces/ecpg/ecpglib');
$libecpg->AddDefine('FRONTEND');
- $libecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpg->AddIncludeDir('src\interfaces\libpq');
- $libecpg->AddIncludeDir('src\port');
- $libecpg->UseDef('src\interfaces\ecpg\ecpglib\ecpglib.def');
+ $libecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpg->AddIncludeDir('src/interfaces/libpq');
+ $libecpg->AddIncludeDir('src/port');
+ $libecpg->UseDef('src/interfaces/ecpg/ecpglib/ecpglib.def');
$libecpg->AddLibrary('ws2_32.lib');
$libecpg->AddReference($libpq, $pgtypes, $libpgport);
my $libecpgcompat = $solution->AddProject(
'libecpg_compat', 'dll',
- 'interfaces', 'src\interfaces\ecpg\compatlib');
- $libecpgcompat->AddIncludeDir('src\interfaces\ecpg\include');
- $libecpgcompat->AddIncludeDir('src\interfaces\libpq');
- $libecpgcompat->UseDef('src\interfaces\ecpg\compatlib\compatlib.def');
+ 'interfaces', 'src/interfaces/ecpg/compatlib');
+ $libecpgcompat->AddIncludeDir('src/interfaces/ecpg/include');
+ $libecpgcompat->AddIncludeDir('src/interfaces/libpq');
+ $libecpgcompat->UseDef('src/interfaces/ecpg/compatlib/compatlib.def');
$libecpgcompat->AddReference($pgtypes, $libecpg, $libpgport);
my $ecpg = $solution->AddProject('ecpg', 'exe', 'interfaces',
- 'src\interfaces\ecpg\preproc');
- $ecpg->AddIncludeDir('src\interfaces\ecpg\include');
- $ecpg->AddIncludeDir('src\interfaces\libpq');
- $ecpg->AddPrefixInclude('src\interfaces\ecpg\preproc');
- $ecpg->AddFiles('src\interfaces\ecpg\preproc', 'pgc.l', 'preproc.y');
+ 'src/interfaces/ecpg/preproc');
+ $ecpg->AddIncludeDir('src/interfaces/ecpg/include');
+ $ecpg->AddIncludeDir('src/interfaces/libpq');
+ $ecpg->AddPrefixInclude('src/interfaces/ecpg/preproc');
+ $ecpg->AddFiles('src/interfaces/ecpg/preproc', 'pgc.l', 'preproc.y');
$ecpg->AddDefine('MAJOR_VERSION=4');
$ecpg->AddDefine('MINOR_VERSION=11');
$ecpg->AddDefine('PATCHLEVEL=0');
@@ -373,42 +375,42 @@ sub mkvcbuild
my $pgregress_ecpg =
$solution->AddProject('pg_regress_ecpg', 'exe', 'misc');
- $pgregress_ecpg->AddFile('src\interfaces\ecpg\test\pg_regress_ecpg.c');
- $pgregress_ecpg->AddFile('src\test\regress\pg_regress.c');
- $pgregress_ecpg->AddIncludeDir('src\port');
- $pgregress_ecpg->AddIncludeDir('src\test\regress');
+ $pgregress_ecpg->AddFile('src/interfaces/ecpg/test/pg_regress_ecpg.c');
+ $pgregress_ecpg->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_ecpg->AddIncludeDir('src/port');
+ $pgregress_ecpg->AddIncludeDir('src/test/regress');
$pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_ecpg->AddDefine('FRONTEND');
$pgregress_ecpg->AddLibrary('ws2_32.lib');
- $pgregress_ecpg->AddDirResourceFile('src\interfaces\ecpg\test');
+ $pgregress_ecpg->AddDirResourceFile('src/interfaces/ecpg/test');
$pgregress_ecpg->AddReference($libpgcommon, $libpgport);
my $isolation_tester =
$solution->AddProject('isolationtester', 'exe', 'misc');
- $isolation_tester->AddFile('src\test\isolation\isolationtester.c');
- $isolation_tester->AddFile('src\test\isolation\specparse.y');
- $isolation_tester->AddFile('src\test\isolation\specscanner.l');
- $isolation_tester->AddFile('src\test\isolation\specparse.c');
- $isolation_tester->AddIncludeDir('src\test\isolation');
- $isolation_tester->AddIncludeDir('src\port');
- $isolation_tester->AddIncludeDir('src\test\regress');
- $isolation_tester->AddIncludeDir('src\interfaces\libpq');
+ $isolation_tester->AddFile('src/test/isolation/isolationtester.c');
+ $isolation_tester->AddFile('src/test/isolation/specparse.y');
+ $isolation_tester->AddFile('src/test/isolation/specscanner.l');
+ $isolation_tester->AddFile('src/test/isolation/specparse.c');
+ $isolation_tester->AddIncludeDir('src/test/isolation');
+ $isolation_tester->AddIncludeDir('src/port');
+ $isolation_tester->AddIncludeDir('src/test/regress');
+ $isolation_tester->AddIncludeDir('src/interfaces/libpq');
$isolation_tester->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$isolation_tester->AddDefine('FRONTEND');
$isolation_tester->AddLibrary('ws2_32.lib');
- $isolation_tester->AddDirResourceFile('src\test\isolation');
+ $isolation_tester->AddDirResourceFile('src/test/isolation');
$isolation_tester->AddReference($libpq, $libpgcommon, $libpgport);
my $pgregress_isolation =
$solution->AddProject('pg_isolation_regress', 'exe', 'misc');
- $pgregress_isolation->AddFile('src\test\isolation\isolation_main.c');
- $pgregress_isolation->AddFile('src\test\regress\pg_regress.c');
- $pgregress_isolation->AddIncludeDir('src\port');
- $pgregress_isolation->AddIncludeDir('src\test\regress');
+ $pgregress_isolation->AddFile('src/test/isolation/isolation_main.c');
+ $pgregress_isolation->AddFile('src/test/regress/pg_regress.c');
+ $pgregress_isolation->AddIncludeDir('src/port');
+ $pgregress_isolation->AddIncludeDir('src/test/regress');
$pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress_isolation->AddDefine('FRONTEND');
$pgregress_isolation->AddLibrary('ws2_32.lib');
- $pgregress_isolation->AddDirResourceFile('src\test\isolation');
+ $pgregress_isolation->AddDirResourceFile('src/test/isolation');
$pgregress_isolation->AddReference($libpgcommon, $libpgport);
# src/bin
@@ -423,40 +425,40 @@ sub mkvcbuild
}
my $pgbasebackup = AddSimpleFrontend('pg_basebackup', 1);
- $pgbasebackup->AddFile('src\bin\pg_basebackup\pg_basebackup.c');
+ $pgbasebackup->AddFile('src/bin/pg_basebackup/pg_basebackup.c');
$pgbasebackup->AddLibrary('ws2_32.lib');
my $pgreceivexlog = AddSimpleFrontend('pg_basebackup', 1);
$pgreceivexlog->{name} = 'pg_receivexlog';
- $pgreceivexlog->AddFile('src\bin\pg_basebackup\pg_receivexlog.c');
+ $pgreceivexlog->AddFile('src/bin/pg_basebackup/pg_receivexlog.c');
$pgreceivexlog->AddLibrary('ws2_32.lib');
my $pgrecvlogical = AddSimpleFrontend('pg_basebackup', 1);
$pgrecvlogical->{name} = 'pg_recvlogical';
- $pgrecvlogical->AddFile('src\bin\pg_basebackup\pg_recvlogical.c');
+ $pgrecvlogical->AddFile('src/bin/pg_basebackup/pg_recvlogical.c');
$pgrecvlogical->AddLibrary('ws2_32.lib');
my $pgrewind = AddSimpleFrontend('pg_rewind', 1);
$pgrewind->{name} = 'pg_rewind';
- $pgrewind->AddFile('src\backend\access\transam\xlogreader.c');
+ $pgrewind->AddFile('src/backend/access/transam/xlogreader.c');
$pgrewind->AddLibrary('ws2_32.lib');
$pgrewind->AddDefine('FRONTEND');
my $pgevent = $solution->AddProject('pgevent', 'dll', 'bin');
- $pgevent->AddFiles('src\bin\pgevent', 'pgevent.c', 'pgmsgevent.rc');
- $pgevent->AddResourceFile('src\bin\pgevent', 'Eventlog message formatter',
+ $pgevent->AddFiles('src/bin/pgevent', 'pgevent.c', 'pgmsgevent.rc');
+ $pgevent->AddResourceFile('src/bin/pgevent', 'Eventlog message formatter',
'win32');
- $pgevent->RemoveFile('src\bin\pgevent\win32ver.rc');
- $pgevent->UseDef('src\bin\pgevent\pgevent.def');
+ $pgevent->RemoveFile('src/bin/pgevent/win32ver.rc');
+ $pgevent->UseDef('src/bin/pgevent/pgevent.def');
$pgevent->DisableLinkerWarnings('4104');
my $pgdump = AddSimpleFrontend('pg_dump', 1);
- $pgdump->AddIncludeDir('src\backend');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump.c');
- $pgdump->AddFile('src\bin\pg_dump\common.c');
- $pgdump->AddFile('src\bin\pg_dump\pg_dump_sort.c');
- $pgdump->AddFile('src\bin\pg_dump\keywords.c');
- $pgdump->AddFile('src\backend\parser\kwlookup.c');
+ $pgdump->AddIncludeDir('src/backend');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump.c');
+ $pgdump->AddFile('src/bin/pg_dump/common.c');
+ $pgdump->AddFile('src/bin/pg_dump/pg_dump_sort.c');
+ $pgdump->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdump->AddFile('src/backend/parser/kwlookup.c');
$pgdump->AddLibrary('ws2_32.lib');
my $pgdumpall = AddSimpleFrontend('pg_dump', 1);
@@ -465,41 +467,41 @@ sub mkvcbuild
# pg_dump and pg_restore.
# So remove their sources from the object, keeping the other setup that
# AddSimpleFrontend() has done.
- my @nodumpall = grep { m/src\\bin\\pg_dump\\.*\.c$/ }
+ my @nodumpall = grep { m!src/bin/pg_dump/.*\.c$! }
keys %{ $pgdumpall->{files} };
delete @{ $pgdumpall->{files} }{@nodumpall};
$pgdumpall->{name} = 'pg_dumpall';
- $pgdumpall->AddIncludeDir('src\backend');
- $pgdumpall->AddFile('src\bin\pg_dump\pg_dumpall.c');
- $pgdumpall->AddFile('src\bin\pg_dump\dumputils.c');
- $pgdumpall->AddFile('src\bin\pg_dump\keywords.c');
- $pgdumpall->AddFile('src\backend\parser\kwlookup.c');
+ $pgdumpall->AddIncludeDir('src/backend');
+ $pgdumpall->AddFile('src/bin/pg_dump/pg_dumpall.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/dumputils.c');
+ $pgdumpall->AddFile('src/bin/pg_dump/keywords.c');
+ $pgdumpall->AddFile('src/backend/parser/kwlookup.c');
$pgdumpall->AddLibrary('ws2_32.lib');
my $pgrestore = AddSimpleFrontend('pg_dump', 1);
$pgrestore->{name} = 'pg_restore';
- $pgrestore->AddIncludeDir('src\backend');
- $pgrestore->AddFile('src\bin\pg_dump\pg_restore.c');
- $pgrestore->AddFile('src\bin\pg_dump\keywords.c');
- $pgrestore->AddFile('src\backend\parser\kwlookup.c');
+ $pgrestore->AddIncludeDir('src/backend');
+ $pgrestore->AddFile('src/bin/pg_dump/pg_restore.c');
+ $pgrestore->AddFile('src/bin/pg_dump/keywords.c');
+ $pgrestore->AddFile('src/backend/parser/kwlookup.c');
$pgrestore->AddLibrary('ws2_32.lib');
my $zic = $solution->AddProject('zic', 'exe', 'utils');
- $zic->AddFiles('src\timezone', 'zic.c', 'ialloc.c', 'scheck.c',
+ $zic->AddFiles('src/timezone', 'zic.c', 'ialloc.c', 'scheck.c',
'localtime.c');
- $zic->AddDirResourceFile('src\timezone');
+ $zic->AddDirResourceFile('src/timezone');
$zic->AddReference($libpgcommon, $libpgport);
if ($solution->{options}->{xml})
{
$contrib_extraincludes->{'pgxml'} = [
- $solution->{options}->{xml} . '\include',
- $solution->{options}->{xslt} . '\include',
- $solution->{options}->{iconv} . '\include' ];
+ $solution->{options}->{xml} . '/include',
+ $solution->{options}->{xslt} . '/include',
+ $solution->{options}->{iconv} . '/include' ];
$contrib_extralibs->{'pgxml'} = [
- $solution->{options}->{xml} . '\lib\libxml2.lib',
- $solution->{options}->{xslt} . '\lib\libxslt.lib' ];
+ $solution->{options}->{xml} . '/lib/libxml2.lib',
+ $solution->{options}->{xslt} . '/lib/libxslt.lib' ];
}
else
{
@@ -514,9 +516,9 @@ sub mkvcbuild
if ($solution->{options}->{uuid})
{
$contrib_extraincludes->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\include' ];
+ [ $solution->{options}->{uuid} . '/include' ];
$contrib_extralibs->{'uuid-ossp'} =
- [ $solution->{options}->{uuid} . '\lib\uuid.lib' ];
+ [ $solution->{options}->{uuid} . '/lib/uuid.lib' ];
}
else
{
@@ -526,9 +528,9 @@ sub mkvcbuild
# AddProject() does not recognize the constructs used to populate OBJS in
# the pgcrypto Makefile, so it will discover no files.
my $pgcrypto =
- $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib\\pgcrypto');
+ $solution->AddProject('pgcrypto', 'dll', 'crypto', 'contrib/pgcrypto');
$pgcrypto->AddFiles(
- 'contrib\pgcrypto', 'pgcrypto.c',
+ 'contrib/pgcrypto', 'pgcrypto.c',
'px.c', 'px-hmac.c',
'px-crypt.c', 'crypt-gensalt.c',
'crypt-blowfish.c', 'crypt-des.c',
@@ -542,13 +544,13 @@ sub mkvcbuild
'pgp-pgsql.c');
if ($solution->{options}->{openssl})
{
- $pgcrypto->AddFiles('contrib\pgcrypto', 'openssl.c',
+ $pgcrypto->AddFiles('contrib/pgcrypto', 'openssl.c',
'pgp-mpi-openssl.c');
}
else
{
$pgcrypto->AddFiles(
- 'contrib\pgcrypto', 'md5.c',
+ 'contrib/pgcrypto', 'md5.c',
'sha1.c', 'sha2.c',
'internal.c', 'internal-sha2.c',
'blf.c', 'rijndael.c',
@@ -574,22 +576,22 @@ sub mkvcbuild
}
$mf =
- Project::read_file('src\backend\utils\mb\conversion_procs\Makefile');
+ Project::read_file('src/backend/utils/mb/conversion_procs/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{SUBDIRS\s*=\s*(.*)$}m
|| die 'Could not match in conversion makefile' . "\n";
foreach my $sub (split /\s+/, $1)
{
- my $dir = 'src\backend\utils\mb\conversion_procs\\' . $sub;
+ my $dir = 'src/backend/utils/mb/conversion_procs/' . $sub;
my $p = $solution->AddProject($sub, 'dll', 'conversion procs', $dir);
- $p->AddFile("$dir\\$sub.c"); # implicit source file
+ $p->AddFile("$dir/$sub.c"); # implicit source file
$p->AddReference($postgres);
}
- $mf = Project::read_file('src\bin\scripts\Makefile');
+ $mf = Project::read_file('src/bin/scripts/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ m{PROGRAMS\s*=\s*(.*)$}m
- || die 'Could not match in bin\scripts\Makefile' . "\n";
+ || die 'Could not match in bin/scripts/Makefile' . "\n";
foreach my $prg (split /\s+/, $1)
{
my $proj = $solution->AddProject($prg, 'exe', 'bin');
@@ -601,58 +603,58 @@ sub mkvcbuild
$f =~ s/\.o$/\.c/;
if ($f eq 'keywords.c')
{
- $proj->AddFile('src\bin\pg_dump\keywords.c');
+ $proj->AddFile('src/bin/pg_dump/keywords.c');
}
elsif ($f eq 'kwlookup.c')
{
- $proj->AddFile('src\backend\parser\kwlookup.c');
+ $proj->AddFile('src/backend/parser/kwlookup.c');
}
elsif ($f eq 'dumputils.c')
{
- $proj->AddFile('src\bin\pg_dump\dumputils.c');
+ $proj->AddFile('src/bin/pg_dump/dumputils.c');
}
elsif ($f =~ /print\.c$/)
{ # Also catches mbprint.c
- $proj->AddFile('src\bin\psql\\' . $f);
+ $proj->AddFile('src/bin/psql/' . $f);
}
elsif ($f =~ /\.c$/)
{
- $proj->AddFile('src\bin\scripts\\' . $f);
+ $proj->AddFile('src/bin/scripts/' . $f);
}
}
- $proj->AddIncludeDir('src\interfaces\libpq');
- $proj->AddIncludeDir('src\bin\pg_dump');
- $proj->AddIncludeDir('src\bin\psql');
+ $proj->AddIncludeDir('src/interfaces/libpq');
+ $proj->AddIncludeDir('src/bin/pg_dump');
+ $proj->AddIncludeDir('src/bin/psql');
$proj->AddReference($libpq, $libpgcommon, $libpgport);
- $proj->AddDirResourceFile('src\bin\scripts');
+ $proj->AddDirResourceFile('src/bin/scripts');
$proj->AddLibrary('ws2_32.lib');
}
# Regression DLL and EXE
my $regress = $solution->AddProject('regress', 'dll', 'misc');
- $regress->AddFile('src\test\regress\regress.c');
- $regress->AddDirResourceFile('src\test\regress');
+ $regress->AddFile('src/test/regress/regress.c');
+ $regress->AddDirResourceFile('src/test/regress');
$regress->AddReference($postgres);
my $pgregress = $solution->AddProject('pg_regress', 'exe', 'misc');
- $pgregress->AddFile('src\test\regress\pg_regress.c');
- $pgregress->AddFile('src\test\regress\pg_regress_main.c');
- $pgregress->AddIncludeDir('src\port');
+ $pgregress->AddFile('src/test/regress/pg_regress.c');
+ $pgregress->AddFile('src/test/regress/pg_regress_main.c');
+ $pgregress->AddIncludeDir('src/port');
$pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"');
$pgregress->AddDefine('FRONTEND');
$pgregress->AddLibrary('ws2_32.lib');
- $pgregress->AddDirResourceFile('src\test\regress');
+ $pgregress->AddDirResourceFile('src/test/regress');
$pgregress->AddReference($libpgcommon, $libpgport);
# fix up pg_xlogdump once it's been set up
# files symlinked on Unix are copied on windows
my $pg_xlogdump = AddSimpleFrontend('pg_xlogdump');
$pg_xlogdump->AddDefine('FRONTEND');
- foreach my $xf (glob('src\\backend\\access\\rmgrdesc\\*desc.c'))
+ foreach my $xf (glob('src/backend/access/rmgrdesc/*desc.c'))
{
$pg_xlogdump->AddFile($xf)
}
- $pg_xlogdump->AddFile('src\backend\access\transam\xlogreader.c');
+ $pg_xlogdump->AddFile('src/backend/access/transam/xlogreader.c');
$solution->Save();
return $solution->{vcver};
@@ -669,11 +671,11 @@ sub AddSimpleFrontend
my $uselibpq = shift;
my $p = $solution->AddProject($n, 'exe', 'bin');
- $p->AddDir('src\bin\\' . $n);
+ $p->AddDir('src/bin/' . $n);
$p->AddReference($libpgcommon, $libpgport);
if ($uselibpq)
{
- $p->AddIncludeDir('src\interfaces\libpq');
+ $p->AddIncludeDir('src/interfaces/libpq');
$p->AddReference($libpq);
}
@@ -705,7 +707,7 @@ sub AddContrib
my $proj =
$solution->AddProject($mod, 'dll', 'contrib', "$subdir/$n");
my $filename = $mod . '.c';
- $proj->AddFile($subdir . '\\' . $n . '\\' . $mod . '.c');
+ $proj->AddFile("$subdir/$n/$filename");
$proj->AddReference($postgres);
AdjustContribProj($proj);
}
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index b9b5a23..6fd5644 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -52,23 +52,24 @@ sub AddFiles
while (my $f = shift)
{
- $self->{files}->{ $dir . "\\" . $f } = 1;
+ $self->{files}->{ $dir . "/" . $f } = 1;
}
}
sub ReplaceFile
{
my ($self, $filename, $newname) = @_;
- my $re = "\\\\$filename\$";
+ my $re = "\\/$filename\$";
foreach my $file (keys %{ $self->{files} })
{
-
# Match complete filename
- if ($filename =~ /\\/)
+ if ($filename =~ m!/!)
{
if ($file eq $filename)
{
+ print "$file\n";
+
delete $self->{files}{$file};
$self->{files}{$newname} = 1;
return;
@@ -77,7 +78,7 @@ sub ReplaceFile
elsif ($file =~ m/($re)/)
{
delete $self->{files}{$file};
- $self->{files}{"$newname\\$filename"} = 1;
+ $self->{files}{"$newname/$filename"} = 1;
return;
}
}
@@ -105,7 +106,7 @@ sub RelocateFiles
if ($r)
{
$self->RemoveFile($f);
- $self->AddFile($targetdir . '\\' . basename($f));
+ $self->AddFile($targetdir . '/' . basename($f));
}
}
}
@@ -118,7 +119,7 @@ sub AddReference
{
push @{ $self->{references} }, $ref;
$self->AddLibrary(
- "__CFGNAME__\\" . $ref->{name} . "\\" . $ref->{name} . ".lib");
+ "__CFGNAME__/" . $ref->{name} . "/" . $ref->{name} . ".lib");
}
}
@@ -169,8 +170,8 @@ sub FullExportDLL
my ($self, $libname) = @_;
$self->{builddef} = 1;
- $self->{def} = ".\\__CFGNAME__\\$self->{name}\\$self->{name}.def";
- $self->{implib} = "__CFGNAME__\\$self->{name}\\$libname";
+ $self->{def} = "./__CFGNAME__/$self->{name}/$self->{name}.def";
+ $self->{implib} = "__CFGNAME__/$self->{name}/$libname";
}
sub UseDef
@@ -194,9 +195,9 @@ sub AddDir
if $subdir eq "\$(top_builddir)/src/timezone"
; #special case for non-standard include
next
- if $reldir . "\\" . $subdir eq "src\\backend\\port\\darwin";
+ if $reldir . "/" . $subdir eq "src/backend/port/darwin";
- $self->AddDir($reldir . "\\" . $subdir);
+ $self->AddDir($reldir . "/" . $subdir);
}
}
while ($mf =~ m{^(?:EXTRA_)?OBJS[^=]*=\s*(.*)$}m)
@@ -243,13 +244,11 @@ sub AddDir
if ($f =~ /^\$\(top_builddir\)\/(.*)/)
{
$f = $1;
- $f =~ s/\//\\/g;
$self->{files}->{$f} = 1;
}
else
{
- $f =~ s/\//\\/g;
- $self->{files}->{"$reldir\\$f"} = 1;
+ $self->{files}->{"$reldir/$f"} = 1;
}
}
$mf =~ s{OBJS[^=]*=\s*(.*)$}{}m;
@@ -264,7 +263,6 @@ sub AddDir
my $match = $1;
my $top = $2;
my $target = $3;
- $target =~ s{/}{\\}g;
my @pieces = split /\s+/, $match;
foreach my $fn (@pieces)
{
@@ -274,7 +272,7 @@ sub AddDir
}
elsif ($top eq "(backend_src)")
{
- eval { $self->ReplaceFile($fn, "src\\backend\\$target") };
+ eval { $self->ReplaceFile($fn, "src/backend/$target") };
}
else
{
@@ -310,12 +308,12 @@ sub AddResourceFile
localtime(time);
my $d = sprintf("%02d%03d", ($year - 100), $yday);
- if (Solution::IsNewer("$dir\\win32ver.rc", 'src\port\win32ver.rc'))
+ if (Solution::IsNewer("$dir/win32ver.rc", 'src/port/win32ver.rc'))
{
print "Generating win32ver.rc for $dir\n";
- open(I, 'src\port\win32ver.rc')
+ open(I, 'src/port/win32ver.rc')
|| confess "Could not open win32ver.rc";
- open(O, ">$dir\\win32ver.rc")
+ open(O, ">$dir/win32ver.rc")
|| confess "Could not write win32ver.rc";
my $icostr = $ico ? "IDI_ICON ICON \"src/port/$ico.ico\"" : "";
while (<I>)
@@ -332,7 +330,7 @@ sub AddResourceFile
}
close(O);
close(I);
- $self->AddFile("$dir\\win32ver.rc");
+ $self->AddFile("$dir/win32ver.rc");
}
sub DisableLinkerWarnings
@@ -415,9 +413,9 @@ sub read_makefile
my $t = $/;
undef $/;
- open($F, "$reldir\\GNUmakefile")
- || open($F, "$reldir\\Makefile")
- || croak "Could not open $reldir\\Makefile\n";
+ open($F, "$reldir/GNUmakefile")
+ || open($F, "$reldir/Makefile")
+ || confess "Could not open $reldir/Makefile\n";
my $txt = <$F>;
close($F);
$/ = $t;
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 764ba1e..db95afa 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -87,15 +87,15 @@ sub DeterminePlatform
sub IsNewer
{
my ($newfile, $oldfile) = @_;
- if ( $oldfile ne 'src\tools\msvc\config.pl'
- && $oldfile ne 'src\tools\msvc\config_default.pl')
+ if ( $oldfile ne 'src/tools/msvc/config.pl'
+ && $oldfile ne 'src/tools/msvc/config_default.pl')
{
return 1
- if (-f 'src\tools\msvc\config.pl')
- && IsNewer($newfile, 'src\tools\msvc\config.pl');
+ if (-f 'src/tools/msvc/config.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config.pl');
return 1
- if (-f 'src\tools\msvc\config_default.pl')
- && IsNewer($newfile, 'src\tools\msvc\config_default.pl');
+ if (-f 'src/tools/msvc/config_default.pl')
+ && IsNewer($newfile, 'src/tools/msvc/config_default.pl');
}
return 1 if (!(-e $newfile));
my @nstat = stat($newfile);
@@ -144,20 +144,20 @@ sub GenerateFiles
if ($self->{strver} eq '' || $self->{numver} eq '');
if (IsNewer(
- "src\\include\\pg_config_os.h", "src\\include\\port\\win32.h"))
+ "src/include/pg_config_os.h", "src/include/port/win32.h"))
{
print "Copying pg_config_os.h...\n";
- copyFile("src\\include\\port\\win32.h",
- "src\\include\\pg_config_os.h");
+ copyFile("src/include/port/win32.h",
+ "src/include/pg_config_os.h");
}
if (IsNewer(
- "src\\include\\pg_config.h", "src\\include\\pg_config.h.win32"))
+ "src/include/pg_config.h", "src/include/pg_config.h.win32"))
{
print "Generating pg_config.h...\n";
- open(I, "src\\include\\pg_config.h.win32")
+ open(I, "src/include/pg_config.h.win32")
|| confess "Could not open pg_config.h.win32\n";
- open(O, ">src\\include\\pg_config.h")
+ open(O, ">src/include/pg_config.h")
|| confess "Could not write to pg_config.h\n";
my $extraver = $self->{options}->{extraver};
$extraver = '' unless defined $extraver;
@@ -245,111 +245,111 @@ sub GenerateFiles
}
if (IsNewer(
- "src\\include\\pg_config_ext.h",
- "src\\include\\pg_config_ext.h.win32"))
+ "src/include/pg_config_ext.h",
+ "src/include/pg_config_ext.h.win32"))
{
print "Copying pg_config_ext.h...\n";
copyFile(
- "src\\include\\pg_config_ext.h.win32",
- "src\\include\\pg_config_ext.h");
+ "src/include/pg_config_ext.h.win32",
+ "src/include/pg_config_ext.h");
}
$self->GenerateDefFile(
- "src\\interfaces\\libpq\\libpqdll.def",
- "src\\interfaces\\libpq\\exports.txt",
+ "src/interfaces/libpq/libpqdll.def",
+ "src/interfaces/libpq/exports.txt",
"LIBPQ");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\ecpglib\\ecpglib.def",
- "src\\interfaces\\ecpg\\ecpglib\\exports.txt",
+ "src/interfaces/ecpg/ecpglib/ecpglib.def",
+ "src/interfaces/ecpg/ecpglib/exports.txt",
"LIBECPG");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\compatlib\\compatlib.def",
- "src\\interfaces\\ecpg\\compatlib\\exports.txt",
+ "src/interfaces/ecpg/compatlib/compatlib.def",
+ "src/interfaces/ecpg/compatlib/exports.txt",
"LIBECPG_COMPAT");
$self->GenerateDefFile(
- "src\\interfaces\\ecpg\\pgtypeslib\\pgtypeslib.def",
- "src\\interfaces\\ecpg\\pgtypeslib\\exports.txt",
+ "src/interfaces/ecpg/pgtypeslib/pgtypeslib.def",
+ "src/interfaces/ecpg/pgtypeslib/exports.txt",
"LIBPGTYPES");
if (IsNewer(
- 'src\backend\utils\fmgrtab.c', 'src\include\catalog\pg_proc.h'))
+ 'src/backend/utils/fmgrtab.c', 'src/include/catalog/pg_proc.h'))
{
print "Generating fmgrtab.c and fmgroids.h...\n";
- chdir('src\backend\utils');
+ chdir('src/backend/utils');
system(
"perl -I ../catalog Gen_fmgrtab.pl ../../../src/include/catalog/pg_proc.h");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\include\utils\fmgroids.h',
- 'src\backend\utils\fmgroids.h'))
+ 'src/include/utils/fmgroids.h',
+ 'src/backend/utils/fmgroids.h'))
{
- copyFile('src\backend\utils\fmgroids.h',
- 'src\include\utils\fmgroids.h');
+ copyFile('src/backend/utils/fmgroids.h',
+ 'src/include/utils/fmgroids.h');
}
- if (IsNewer('src\include\utils\probes.h', 'src\backend\utils\probes.d'))
+ if (IsNewer('src/include/utils/probes.h', 'src/backend/utils/probes.d'))
{
print "Generating probes.h...\n";
system(
-'psed -f src\backend\utils\Gen_dummy_probes.sed src\backend\utils\probes.d > src\include\utils\probes.h'
+'psed -f src/backend/utils/Gen_dummy_probes.sed src/backend/utils/probes.d > src/include/utils/probes.h'
);
}
if ($self->{options}->{python}
&& IsNewer(
- 'src\pl\plpython\spiexceptions.h',
- 'src\include\backend\errcodes.txt'))
+ 'src/pl/plpython/spiexceptions.h',
+ 'src/include/backend/errcodes.txt'))
{
print "Generating spiexceptions.h...\n";
system(
-'perl src\pl\plpython\generate-spiexceptions.pl src\backend\utils\errcodes.txt > src\pl\plpython\spiexceptions.h'
+'perl src/pl/plpython/generate-spiexceptions.pl src/backend/utils/errcodes.txt > src/pl/plpython/spiexceptions.h'
);
}
if (IsNewer(
- 'src\include\utils\errcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/include/utils/errcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating errcodes.h...\n";
system(
-'perl src\backend\utils\generate-errcodes.pl src\backend\utils\errcodes.txt > src\backend\utils\errcodes.h'
+'perl src/backend/utils/generate-errcodes.pl src/backend/utils/errcodes.txt > src/backend/utils/errcodes.h'
);
- copyFile('src\backend\utils\errcodes.h',
- 'src\include\utils\errcodes.h');
+ copyFile('src/backend/utils/errcodes.h',
+ 'src/include/utils/errcodes.h');
}
if (IsNewer(
- 'src\pl\plpgsql\src\plerrcodes.h',
- 'src\backend\utils\errcodes.txt'))
+ 'src/pl/plpgsql/src/plerrcodes.h',
+ 'src/backend/utils/errcodes.txt'))
{
print "Generating plerrcodes.h...\n";
system(
-'perl src\pl\plpgsql\src\generate-plerrcodes.pl src\backend\utils\errcodes.txt > src\pl\plpgsql\src\plerrcodes.h'
+'perl src/pl/plpgsql/src/generate-plerrcodes.pl src/backend/utils/errcodes.txt > src/pl/plpgsql/src/plerrcodes.h'
);
}
if (IsNewer(
- 'src\backend\utils\sort\qsort_tuple.c',
- 'src\backend\utils\sort\gen_qsort_tuple.pl'))
+ 'src/backend/utils/sort/qsort_tuple.c',
+ 'src/backend/utils/sort/gen_qsort_tuple.pl'))
{
print "Generating qsort_tuple.c...\n";
system(
-'perl src\backend\utils\sort\gen_qsort_tuple.pl > src\backend\utils\sort\qsort_tuple.c'
+'perl src/backend/utils/sort/gen_qsort_tuple.pl > src/backend/utils/sort/qsort_tuple.c'
);
}
if (IsNewer(
- 'src\interfaces\libpq\libpq.rc',
- 'src\interfaces\libpq\libpq.rc.in'))
+ 'src/interfaces/libpq/libpq.rc',
+ 'src/interfaces/libpq/libpq.rc.in'))
{
print "Generating libpq.rc...\n";
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime(time);
my $d = ($year - 100) . "$yday";
- open(I, '<', 'src\interfaces\libpq\libpq.rc.in')
+ open(I, '<', 'src/interfaces/libpq/libpq.rc.in')
|| confess "Could not open libpq.rc.in";
- open(O, '>', 'src\interfaces\libpq\libpq.rc')
+ open(O, '>', 'src/interfaces/libpq/libpq.rc')
|| confess "Could not open libpq.rc";
while (<I>)
{
@@ -360,30 +360,30 @@ sub GenerateFiles
close(O);
}
- if (IsNewer('src\bin\psql\sql_help.h', 'src\bin\psql\create_help.pl'))
+ if (IsNewer('src/bin/psql/sql_help.h', 'src/bin/psql/create_help.pl'))
{
print "Generating sql_help.h...\n";
- chdir('src\bin\psql');
+ chdir('src/bin/psql');
system("perl create_help.pl ../../../doc/src/sgml/ref sql_help");
- chdir('..\..\..');
+ chdir('../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\preproc\preproc.y',
- 'src\backend\parser\gram.y'))
+ 'src/interfaces/ecpg/preproc/preproc.y',
+ 'src/backend/parser/gram.y'))
{
print "Generating preproc.y...\n";
- chdir('src\interfaces\ecpg\preproc');
- system('perl parse.pl < ..\..\..\backend\parser\gram.y > preproc.y');
- chdir('..\..\..\..');
+ chdir('src/interfaces/ecpg/preproc');
+ system('perl parse.pl < ../../../backend/parser/gram.y > preproc.y');
+ chdir('../../../..');
}
if (IsNewer(
- 'src\interfaces\ecpg\include\ecpg_config.h',
- 'src\interfaces\ecpg\include\ecpg_config.h.in'))
+ 'src/interfaces/ecpg/include/ecpg_config.h',
+ 'src/interfaces/ecpg/include/ecpg_config.h.in'))
{
print "Generating ecpg_config.h...\n";
- open(O, '>', 'src\interfaces\ecpg\include\ecpg_config.h')
+ open(O, '>', 'src/interfaces/ecpg/include/ecpg_config.h')
|| confess "Could not open ecpg_config.h";
print O <<EOF;
#if (_MSC_VER > 1200)
@@ -396,10 +396,10 @@ EOF
close(O);
}
- unless (-f "src\\port\\pg_config_paths.h")
+ unless (-f "src/port/pg_config_paths.h")
{
print "Generating pg_config_paths.h...\n";
- open(O, '>', 'src\port\pg_config_paths.h')
+ open(O, '>', 'src/port/pg_config_paths.h')
|| confess "Could not open pg_config_paths.h";
print O <<EOF;
#define PGBINDIR "/bin"
@@ -418,7 +418,7 @@ EOF
close(O);
}
- my $mf = Project::read_file('src\backend\catalog\Makefile');
+ my $mf = Project::read_file('src/backend/catalog/Makefile');
$mf =~ s{\\\r?\n}{}g;
$mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm
|| croak "Could not find POSTGRES_BKI_SRCS in Makefile\n";
@@ -431,15 +431,15 @@ EOF
"src/include/catalog/$bki"))
{
print "Generating postgres.bki and schemapg.h...\n";
- chdir('src\backend\catalog');
+ chdir('src/backend/catalog');
my $bki_srcs = join(' ../../../src/include/catalog/', @allbki);
system(
"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs"
);
- chdir('..\..\..');
+ chdir('../../..');
copyFile(
- 'src\backend\catalog\schemapg.h',
- 'src\include\catalog\schemapg.h');
+ 'src/backend/catalog/schemapg.h',
+ 'src/include/catalog/schemapg.h');
last;
}
}
--
2.3.6
On 4/24/15 12:22 AM, Michael Paquier wrote:
On Fri, Mar 13, 2015 at 6:04 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:On Fri, Mar 13, 2015 at 6:20 AM, Alvaro Herrera wrote:
Peter Eisentraut wrote:
This is contrib/chkpass not finding the crypt symbol, which is
presumably in some library. But I can't see how it would normally find
it, without my patch.It seems crypt is provided by libpgport. So chkpass should be mentioned
in @contrib_uselibpgport, but isn't. Maybe the fix is just to add it
there?I had a closer look at this patch, and yes indeed, the problem was
exactly that. Now honestly I cannot understand why this dependency
with libpgport was not necessary before... In any case, attached is a
patch rebased on HEAD that builds correctly with MSVC.Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.
done
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Sat, Apr 25, 2015 at 9:58 PM, Peter Eisentraut wrote:
On 4/24/15 12:22 AM, Michael Paquier wrote:
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.done
Thanks, bowerbird is running fine:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2015-04-25%2013%3A31%3A06
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 04/25/2015 10:53 AM, Michael Paquier wrote:
On Sat, Apr 25, 2015 at 9:58 PM, Peter Eisentraut wrote:
On 4/24/15 12:22 AM, Michael Paquier wrote:
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.done
Thanks, bowerbird is running fine:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2015-04-25%2013%3A31%3A06
But currawong is not - it runs an older version of the MS build tools.
See
<http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-25%2016%3A31%3A12>:
Bad format filename 'src/backend/access/brin/brin.c'
at src/tools/msvc/VCBuildProject.pm line 73.
VCBuildProject::WriteFiles(VC2008Project=HASH(0x9a7274), "*Project::F") called at src/tools/msvc/Project.pm line 363
Project::Save(VC2008Project=HASH(0x9a7274)) called at src/tools/msvc/Solution.pm line 539
Solution::Save(VS2008Solution=HASH(0xc00b7c)) called at src/tools/msvc/Mkvcbuild.pm line 656
Mkvcbuild::mkvcbuild(HASH(0xbed464)) called at build.pl line 36
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Sun, Apr 26, 2015 at 2:19 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 04/25/2015 10:53 AM, Michael Paquier wrote:
On Sat, Apr 25, 2015 at 9:58 PM, Peter Eisentraut wrote:
On 4/24/15 12:22 AM, Michael Paquier wrote:
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.done
Thanks, bowerbird is running fine:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2015-04-25%2013%3A31%3A06
But currawong is not - it runs an older version of the MS build tools. See
<http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-25%2016%3A31%3A12>:Bad format filename 'src/backend/access/brin/brin.c'
at src/tools/msvc/VCBuildProject.pm line 73.
VCBuildProject::WriteFiles(VC2008Project=HASH(0x9a7274),
"*Project::F") called at src/tools/msvc/Project.pm line 363
Project::Save(VC2008Project=HASH(0x9a7274)) called at
src/tools/msvc/Solution.pm line 539
Solution::Save(VS2008Solution=HASH(0xc00b7c)) called at
src/tools/msvc/Mkvcbuild.pm line 656
Mkvcbuild::mkvcbuild(HASH(0xbed464)) called at build.pl line 36
Oops, attached is a patch that should make currawong happier..
--
Michael
Attachments:
20150426_fixmsvc_fileformat.patchtext/x-diff; charset=US-ASCII; name=20150426_fixmsvc_fileformat.patchDownload
diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm
index 513cfb5..dda662f 100644
--- a/src/tools/msvc/VCBuildProject.pm
+++ b/src/tools/msvc/VCBuildProject.pm
@@ -71,7 +71,7 @@ EOF
foreach my $fileNameWithPath (sort keys %{ $self->{files} })
{
confess "Bad format filename '$fileNameWithPath'\n"
- unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
+ unless ($fileNameWithPath =~ m!^(.*)/([^/]+)\.(c|cpp|y|l|rc)$!);
my $dir = $1;
my $file = $2;
On 04/25/2015 08:01 PM, Michael Paquier wrote:
On Sun, Apr 26, 2015 at 2:19 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 04/25/2015 10:53 AM, Michael Paquier wrote:
On Sat, Apr 25, 2015 at 9:58 PM, Peter Eisentraut wrote:
On 4/24/15 12:22 AM, Michael Paquier wrote:
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.done
Thanks, bowerbird is running fine:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2015-04-25%2013%3A31%3A06
But currawong is not - it runs an older version of the MS build tools. See
<http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-25%2016%3A31%3A12>:Bad format filename 'src/backend/access/brin/brin.c'
at src/tools/msvc/VCBuildProject.pm line 73.
VCBuildProject::WriteFiles(VC2008Project=HASH(0x9a7274),
"*Project::F") called at src/tools/msvc/Project.pm line 363
Project::Save(VC2008Project=HASH(0x9a7274)) called at
src/tools/msvc/Solution.pm line 539
Solution::Save(VS2008Solution=HASH(0xc00b7c)) called at
src/tools/msvc/Mkvcbuild.pm line 656
Mkvcbuild::mkvcbuild(HASH(0xbed464)) called at build.pl line 36Oops, attached is a patch that should make currawong happier..
OK, pushed.
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Sun, Apr 26, 2015 at 10:29 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 04/25/2015 08:01 PM, Michael Paquier wrote:
On Sun, Apr 26, 2015 at 2:19 AM, Andrew Dunstan <andrew@dunslane.net>
wrote:On 04/25/2015 10:53 AM, Michael Paquier wrote:
On Sat, Apr 25, 2015 at 9:58 PM, Peter Eisentraut wrote:
On 4/24/15 12:22 AM, Michael Paquier wrote:
Now that the stuff related to the move from contrib/ to src/bin/,
modulescheck and tmp_install has been committed, shouldn't we give a
new shot at this patch? Attached is a rebased version.done
Thanks, bowerbird is running fine:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2015-04-25%2013%3A31%3A06
But currawong is not - it runs an older version of the MS build tools.
See<http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-25%2016%3A31%3A12>:
Bad format filename 'src/backend/access/brin/brin.c'
at src/tools/msvc/VCBuildProject.pm line 73.
VCBuildProject::WriteFiles(VC2008Project=HASH(0x9a7274),
"*Project::F") called at src/tools/msvc/Project.pm line 363
Project::Save(VC2008Project=HASH(0x9a7274)) called at
src/tools/msvc/Solution.pm line 539
Solution::Save(VS2008Solution=HASH(0xc00b7c)) called at
src/tools/msvc/Mkvcbuild.pm line 656
Mkvcbuild::mkvcbuild(HASH(0xbed464)) called at build.pl line 36Oops, attached is a patch that should make currawong happier..
OK, pushed.
Argh. This is not enough:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-26%2006%3A00%3A01
The build is done in Debug mode, but it is failing to find some files
under the label Release, which is incorrect. I guess that this is
caused by the file detection in WriteFiles... TBH I don't have an
environment at hand to reproduce the issue and do a proper fix. Hence
I think that we should revert the patch for now, and come back to this
stuff later on.
Regards,
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 04/26/2015 03:13 AM, Michael Paquier wrote:
Oops, attached is a patch that should make currawong happier..
OK, pushed.
Argh. This is not enough:
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=currawong&dt=2015-04-26%2006%3A00%3A01
The build is done in Debug mode, but it is failing to find some files
under the label Release, which is incorrect. I guess that this is
caused by the file detection in WriteFiles... TBH I don't have an
environment at hand to reproduce the issue and do a proper fix. Hence
I think that we should revert the patch for now, and come back to this
stuff later on.
Well, currawong is mine. so I can try anything you want to suggest.
But I don't think it's set up to build Debug.
Setting up a VS2008 environment is hard these days, as MS seems to have
removed the download :-(
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Sun, Apr 26, 2015 at 10:23:58AM -0400, Andrew Dunstan wrote:
Setting up a VS2008 environment is hard these days, as MS seems to have
removed the download :-(
Visual C++ 2008 Express Edition:
http://go.microsoft.com/?linkid=7729279
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 04/26/2015 04:08 PM, Noah Misch wrote:
On Sun, Apr 26, 2015 at 10:23:58AM -0400, Andrew Dunstan wrote:
Setting up a VS2008 environment is hard these days, as MS seems to have
removed the download :-(Visual C++ 2008 Express Edition:
http://go.microsoft.com/?linkid=7729279
Oh, cool. Thanks.
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Mon, Apr 27, 2015 at 8:53 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 04/26/2015 04:08 PM, Noah Misch wrote:
On Sun, Apr 26, 2015 at 10:23:58AM -0400, Andrew Dunstan wrote:
Setting up a VS2008 environment is hard these days, as MS seems to have
removed the download :-(Visual C++ 2008 Express Edition:
http://go.microsoft.com/?linkid=7729279Oh, cool. Thanks.
Thanks, I'll try to set up an environment and come up with a real
patch tested this time.
What I suspect is that we need to correctly replace all the references
to backslaches like '\\' or $obj =~ s/\\/_/g; to make things work
correctly.
Regards,
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Mon, Apr 27, 2015 at 9:20 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
On Mon, Apr 27, 2015 at 8:53 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 04/26/2015 04:08 PM, Noah Misch wrote:
On Sun, Apr 26, 2015 at 10:23:58AM -0400, Andrew Dunstan wrote:
Setting up a VS2008 environment is hard these days, as MS seems to have
removed the download :-(Visual C++ 2008 Express Edition:
http://go.microsoft.com/?linkid=7729279Oh, cool. Thanks.
Thanks, I'll try to set up an environment and come up with a real
patch tested this time.What I suspect is that we need to correctly replace all the references
to backslaches like '\\' or $obj =~ s/\\/_/g; to make things work
correctly.
So, I have set up an environment with VC tools, and have been able to
reproduce the failure. The problems were less trivial than I though
first:
1) - The file tree list was not correctly generated, build script
generating vcproj file missing tree dependencies when listing items in
Filter. For example, for a path like src/backend/access, it missed to
list "src", "backend" and "access", listing only the files in such
paths.
2) I noticed that VC builds do not like *at all* file paths with
forward slashes, perhaps it could be possible to use a Condition like
hasForwardSlashes but it seems safer to simply enforce the file paths
to use backslashes in the vcproj files. That's inconsistent with the
vcxproj files, but it works and Mkvcbuild.pm works as before.
3) I found why chkpass was needed as a dependency with libpgport and
libpgcommon, actually crypt.c needs to be listed as a unique file, so
it needs a fake entry in vcproj and vcxproj files.
All those things are corrected in the patch attached, tested with both
MS and VC. The build is still failing because of cac76582 that
introduced the transforms, but at least it will partially cure
currawong and put it at the same level as the other machines.
Regards,
--
Michael
Attachments:
20150427_vcbuild_fix.patchtext/x-diff; charset=US-ASCII; name=20150427_vcbuild_fix.patchDownload
From ae02fa193dd281d95e6f802c49b4c3a650aafe61 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@otacoo.com>
Date: Sun, 26 Apr 2015 22:49:09 -0700
Subject: [PATCH] Fix vcbuild failures and chkpass dependency caused by 854adb8
Switching the Windows build scripts to use forward slashes instead of
backslashes has caused a couple of issues in VC builds:
- The file tree list was not correctly generated, build script generating
vcproj file missing tree dependencies when listing items in Filter.
- VC builds do not accept file paths with forward slashes, perhaps it
could be possible to use a Condition but it seems safer to simply enforce
the file paths to use backslashes in the vcproj files.
- chkpass had an unneeded dependency with libpgport and libpgcommon to
make build succeed but actually it is not necessary as crypt.c is already
listed for this project and should be replaced with a fake name as it is
a unique file.
---
src/tools/msvc/MSBuildProject.pm | 2 +-
src/tools/msvc/Mkvcbuild.pm | 2 --
src/tools/msvc/VCBuildProject.pm | 33 +++++++++++++++++++--------------
3 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index a16f9ac..0c837f7 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -143,7 +143,7 @@ EOF
# File already exists, so fake a new name
my $obj = $dir;
- $obj =~ s/\\/_/g;
+ $obj =~ s/\//_/g;
print $f <<EOF;
<ClCompile Include="$fileNameWithPath">
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 344b75f..cfb9b24 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -33,12 +33,10 @@ my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' };
my @contrib_uselibpq =
('dblink', 'oid2name', 'postgres_fdw', 'vacuumlo');
my @contrib_uselibpgport = (
- 'chkpass',
'oid2name',
'pg_standby',
'vacuumlo');
my @contrib_uselibpgcommon = (
- 'chkpass',
'oid2name',
'pg_standby',
'vacuumlo');
diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm
index dda662f..add7982 100644
--- a/src/tools/msvc/VCBuildProject.pm
+++ b/src/tools/msvc/VCBuildProject.pm
@@ -75,43 +75,48 @@ EOF
my $dir = $1;
my $file = $2;
- # Walk backwards down the directory stack and close any dirs we're done with
+ # Walk backwards down the directory stack and close any dirs
+ # we're done with.
while ($#dirstack >= 0)
{
- if (join('\\', @dirstack) eq
- substr($dir, 0, length(join('\\', @dirstack))))
+ if (join('/', @dirstack) eq
+ substr($dir, 0, length(join('/', @dirstack))))
{
- last if (length($dir) == length(join('\\', @dirstack)));
+ last if (length($dir) == length(join('/', @dirstack)));
last
- if (substr($dir, length(join('\\', @dirstack)), 1) eq '\\');
+ if (substr($dir, length(join('/', @dirstack)), 1) eq '/');
}
print $f ' ' x $#dirstack . " </Filter>\n";
pop @dirstack;
}
# Now walk forwards and create whatever directories are needed
- while (join('\\', @dirstack) ne $dir)
+ while (join('/', @dirstack) ne $dir)
{
- my $left = substr($dir, length(join('\\', @dirstack)));
- $left =~ s/^\\//;
- my @pieces = split /\\/, $left;
+ my $left = substr($dir, length(join('/', @dirstack)));
+ $left =~ s/^\///;
+ my @pieces = split /\//, $left;
push @dirstack, $pieces[0];
print $f ' ' x $#dirstack
. " <Filter Name=\"$pieces[0]\" Filter=\"\">\n";
}
+ # VC builds do not like file paths with forward slashes.
+ my $fileNameWithPathFormatted = $fileNameWithPath;
+ $fileNameWithPathFormatted =~ s/\//\\/g;
+
print $f ' ' x $#dirstack
- . " <File RelativePath=\"$fileNameWithPath\"";
+ . " <File RelativePath=\"$fileNameWithPathFormatted\"";
if ($fileNameWithPath =~ /\.y$/)
{
my $of = $fileNameWithPath;
$of =~ s/\.y$/.c/;
$of =~
-s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c};
+s{^src/pl/plpgsql/src/gram.c$}{src/pl/plpgsql/src/pl_gram.c};
print $f '>'
. $self->GenerateCustomTool(
'Running bison on ' . $fileNameWithPath,
- "perl src\\tools\\msvc\\pgbison.pl $fileNameWithPath", $of)
+ "perl src/tools/msvc/pgbison.pl $fileNameWithPath", $of)
. '</File>' . "\n";
}
elsif ($fileNameWithPath =~ /\.l$/)
@@ -121,7 +126,7 @@ s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c};
print $f '>'
. $self->GenerateCustomTool(
'Running flex on ' . $fileNameWithPath,
- "perl src\\tools\\msvc\\pgflex.pl $fileNameWithPath", $of)
+ "perl src/tools/msvc/pgflex.pl $fileNameWithPath", $of)
. '</File>' . "\n";
}
elsif (defined($uniquefiles{$file}))
@@ -129,7 +134,7 @@ s{^src\\pl\\plpgsql\\src\\gram.c$}{src\\pl\\plpgsql\\src\\pl_gram.c};
# File already exists, so fake a new name
my $obj = $dir;
- $obj =~ s/\\/_/g;
+ $obj =~ s/\//_/g;
print $f
"><FileConfiguration Name=\"Debug|$self->{platform}\"><Tool Name=\"VCCLCompilerTool\" ObjectFile=\".\\debug\\$self->{name}\\$obj"
. "_$file.obj\" /></FileConfiguration><FileConfiguration Name=\"Release|$self->{platform}\"><Tool Name=\"VCCLCompilerTool\" ObjectFile=\".\\release\\$self->{name}\\$obj"
--
2.3.6
On 4/27/15 2:09 AM, Michael Paquier wrote:
2) I noticed that VC builds do not like *at all* file paths with
forward slashes, perhaps it could be possible to use a Condition like
hasForwardSlashes but it seems safer to simply enforce the file paths
to use backslashes in the vcproj files. That's inconsistent with the
vcxproj files, but it works and Mkvcbuild.pm works as before.
3) I found why chkpass was needed as a dependency with libpgport and
libpgcommon, actually crypt.c needs to be listed as a unique file, so
it needs a fake entry in vcproj and vcxproj files.
All those things are corrected in the patch attached, tested with both
MS and VC.
What's the difference between MS and VC?
If VC doesn't accept forward slashes, doesn't that invalidate the
premise of this patch? Is it worth attempting to maintain it?
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Mon, Apr 27, 2015 at 9:25 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
On 4/27/15 2:09 AM, Michael Paquier wrote:
2) I noticed that VC builds do not like *at all* file paths with
forward slashes, perhaps it could be possible to use a Condition like
hasForwardSlashes but it seems safer to simply enforce the file paths
to use backslashes in the vcproj files. That's inconsistent with the
vcxproj files, but it works and Mkvcbuild.pm works as before.
3) I found why chkpass was needed as a dependency with libpgport and
libpgcommon, actually crypt.c needs to be listed as a unique file, so
it needs a fake entry in vcproj and vcxproj files.
All those things are corrected in the patch attached, tested with both
MS and VC.What's the difference between MS and VC?
MS uses vcxproj specs, and VC vcproj specs...
If VC doesn't accept forward slashes, doesn't that invalidate the
premise of this patch?
I don't think so. The point of the patch is to be able to run the
Windows build script in a non-Windows environment to check that
modifications in the Makefile stucture does not break some basics of
the Windows build script, and this is not impacted.
Is it worth attempting to maintain it?
vcbuild (~2008) has been replaced by msbuild in MS 2010. Hence I
imagine that it is still used a lot.
Regards,
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 04/27/2015 08:46 AM, Michael Paquier wrote:
On Mon, Apr 27, 2015 at 9:25 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
On 4/27/15 2:09 AM, Michael Paquier wrote:
2) I noticed that VC builds do not like *at all* file paths with
forward slashes, perhaps it could be possible to use a Condition like
hasForwardSlashes but it seems safer to simply enforce the file paths
to use backslashes in the vcproj files. That's inconsistent with the
vcxproj files, but it works and Mkvcbuild.pm works as before.
3) I found why chkpass was needed as a dependency with libpgport and
libpgcommon, actually crypt.c needs to be listed as a unique file, so
it needs a fake entry in vcproj and vcxproj files.
All those things are corrected in the patch attached, tested with both
MS and VC.What's the difference between MS and VC?
MS uses vcxproj specs, and VC vcproj specs...
If VC doesn't accept forward slashes, doesn't that invalidate the
premise of this patch?I don't think so. The point of the patch is to be able to run the
Windows build script in a non-Windows environment to check that
modifications in the Makefile stucture does not break some basics of
the Windows build script, and this is not impacted.Is it worth attempting to maintain it?
vcbuild (~2008) has been replaced by msbuild in MS 2010. Hence I
imagine that it is still used a lot.
Regards,
Yeah. I've pushed this with tiny fixes to avoid Leaning Toothpick
Syndrome (man perlop for definition).
Thanks for your work on this.
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Mon, Apr 27, 2015 at 10:59 AM, Andrew Dunstan <andrew@dunslane.net> wrote:
Yeah. I've pushed this with tiny fixes to avoid Leaning Toothpick Syndrome
(man perlop for definition).
I had to Google that. Then I had to think about it. Then I laughed.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers