diff options
Diffstat (limited to 'src/tools/msvc/Mkvcbuild.pm')
-rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 321 |
1 files changed, 179 insertions, 142 deletions
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 23023e54b7e..64e53cbf76f 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -19,7 +19,7 @@ use List::Util qw(first); use Exporter; our (@ISA, @EXPORT_OK); -@ISA = qw(Exporter); +@ISA = qw(Exporter); @EXPORT_OK = qw(Mkvcbuild); my $solution; @@ -27,26 +27,29 @@ my $libpgport; my $postgres; my $libpq; -my $contrib_defines = {'refint' => 'REFINT_VERBOSE'}; -my @contrib_uselibpq = ('dblink', 'oid2name', 'pgbench', 'pg_upgrade','vacuumlo'); -my @contrib_uselibpgport =( - 'oid2name', 'pgbench', 'pg_standby','pg_archivecleanup', - 'pg_test_fsync', 'pg_test_timing', 'pg_upgrade', 'vacuumlo' -); -my $contrib_extralibs = {'pgbench' => ['wsock32.lib']}; -my $contrib_extraincludes = {'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend']}; +my $contrib_defines = { 'refint' => 'REFINT_VERBOSE' }; +my @contrib_uselibpq = + ('dblink', 'oid2name', 'pgbench', 'pg_upgrade', 'vacuumlo'); +my @contrib_uselibpgport = ( + 'oid2name', 'pgbench', + 'pg_standby', 'pg_archivecleanup', + 'pg_test_fsync', 'pg_test_timing', + 'pg_upgrade', 'vacuumlo'); +my $contrib_extralibs = { 'pgbench' => ['wsock32.lib'] }; +my $contrib_extraincludes = + { 'tsearch2' => ['contrib/tsearch2'], 'dblink' => ['src/backend'] }; my $contrib_extrasource = { - 'cube' => ['cubescan.l','cubeparse.y'], - 'seg' => ['segscan.l','segparse.y'] -}; -my @contrib_excludes = ('pgcrypto','intagg','sepgsql'); + 'cube' => [ 'cubescan.l', 'cubeparse.y' ], + 'seg' => [ 'segscan.l', 'segparse.y' ] }; +my @contrib_excludes = ('pgcrypto', 'intagg', 'sepgsql'); sub mkvcbuild { our $config = shift; chdir('..\..\..') if (-d '..\msvc' && -d '..\..\..\src'); - die 'Must run from root or msvc directory' unless (-d 'src\tools\msvc' && -d 'src'); + die 'Must run from root or msvc directory' + unless (-d 'src\tools\msvc' && -d 'src'); my $vsVersion = DetermineVisualStudioVersion(); @@ -60,24 +63,31 @@ sub mkvcbuild sprompt.c thread.c getopt.c getopt_long.c dirent.c rint.c win32env.c win32error.c win32setlocale.c); - $libpgport = $solution->AddProject('libpgport','lib','misc'); + $libpgport = $solution->AddProject('libpgport', 'lib', 'misc'); $libpgport->AddDefine('FRONTEND'); - $libpgport->AddFiles('src\port',@pgportfiles); + $libpgport->AddFiles('src\port', @pgportfiles); - $postgres = $solution->AddProject('postgres','exe','','src\backend'); + $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->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->AddDir('src\timezone'); - $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', 'repl_gram.y'); + $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', + 'repl_gram.y'); $postgres->AddDefine('BUILDING_DLL'); $postgres->AddLibrary('wsock32.lib'); $postgres->AddLibrary('ws2_32.lib'); @@ -85,34 +95,36 @@ sub mkvcbuild $postgres->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap}); $postgres->FullExportDLL('postgres.lib'); - my $snowball = $solution->AddProject('dict_snowball','dll','','src\backend\snowball'); + my $snowball = $solution->AddProject('dict_snowball', 'dll', '', + 'src\backend\snowball'); $snowball->RelocateFiles( 'src\backend\snowball\libstemmer', sub { return shift !~ /dict_snowball.c$/; - } - ); + }); $snowball->AddIncludeDir('src\include\snowball'); $snowball->AddReference($postgres); - my $plpgsql = $solution->AddProject('plpgsql','dll','PLs','src\pl\plpgsql\src'); + my $plpgsql = + $solution->AddProject('plpgsql', 'dll', 'PLs', 'src\pl\plpgsql\src'); $plpgsql->AddFiles('src\pl\plpgsql\src', 'gram.y'); $plpgsql->AddReference($postgres); if ($solution->{options}->{perl}) { my $plperlsrc = "src\\pl\\plperl\\"; - my $plperl = $solution->AddProject('plperl','dll','PLs','src\pl\plperl'); + my $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') { (my $xsc = $xs) =~ s/\.xs/.c/; - if (Solution::IsNewer("$plperlsrc$xsc","$plperlsrc$xs")) + if (Solution::IsNewer("$plperlsrc$xsc", "$plperlsrc$xs")) { my $xsubppdir = first { -e "$_\\ExtUtils\\xsubpp" } @INC; print "Building $plperlsrc$xsc...\n"; - system( $solution->{options}->{perl} + system( $solution->{options}->{perl} . '/bin/perl ' . "$xsubppdir/ExtUtils/xsubpp -typemap " . $solution->{options}->{perl} @@ -121,60 +133,58 @@ sub mkvcbuild . ">$plperlsrc$xsc"); if ((!(-f "$plperlsrc$xsc")) || -z "$plperlsrc$xsc") { - unlink("$plperlsrc$xsc"); # if zero size + unlink("$plperlsrc$xsc"); # if zero size die "Failed to create $xsc.\n"; } } } - if ( - Solution::IsNewer('src\pl\plperl\perlchunks.h', + if (Solution::IsNewer( + 'src\pl\plperl\perlchunks.h', 'src\pl\plperl\plc_perlboot.pl') - ||Solution::IsNewer( - 'src\pl\plperl\perlchunks.h','src\pl\plperl\plc_trusted.pl' - ) - ) + || Solution::IsNewer( + 'src\pl\plperl\perlchunks.h', + 'src\pl\plperl\plc_trusted.pl')) { print 'Building src\pl\plperl\perlchunks.h ...' . "\n"; my $basedir = getcwd; chdir 'src\pl\plperl'; - system( $solution->{options}->{perl} + system( $solution->{options}->{perl} . '/bin/perl ' . 'text2macro.pl ' . '--strip="^(\#.*|\s*)$$" ' . 'plc_perlboot.pl plc_trusted.pl ' - . '>perlchunks.h'); + . '>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( + if (Solution::IsNewer( 'src\pl\plperl\plperl_opmask.h', - 'src\pl\plperl\plperl_opmask.pl' - ) - ) + 'src\pl\plperl\plperl_opmask.pl')) { print 'Building src\pl\plperl\plperl_opmask.h ...' . "\n"; my $basedir = getcwd; chdir 'src\pl\plperl'; - system( $solution->{options}->{perl} + system( $solution->{options}->{perl} . '/bin/perl ' . 'plperl_opmask.pl ' - . 'plperl_opmask.h'); + . 'plperl_opmask.h'); chdir $basedir; 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"; } } $plperl->AddReference($postgres); my @perl_libs = - grep {/perl\d+.lib$/ }glob($solution->{options}->{perl} . '\lib\CORE\perl*.lib'); + grep { /perl\d+.lib$/ } + glob($solution->{options}->{perl} . '\lib\CORE\perl*.lib'); if (@perl_libs == 1) { $plperl->AddLibrary($perl_libs[0]); @@ -206,8 +216,8 @@ sub mkvcbuild if (!(defined($pyprefix) && defined($pyver))); my $pymajorver = substr($pyver, 0, 1); - my $plpython = - $solution->AddProject('plpython' . $pymajorver, 'dll','PLs', 'src\pl\plpython'); + my $plpython = $solution->AddProject('plpython' . $pymajorver, + 'dll', 'PLs', 'src\pl\plpython'); $plpython->AddIncludeDir($pyprefix . '\include'); $plpython->AddLibrary($pyprefix . "\\Libs\\python$pyver.lib"); $plpython->AddReference($postgres); @@ -215,20 +225,24 @@ sub mkvcbuild if ($solution->{options}->{tcl}) { - my $pltcl = $solution->AddProject('pltcl','dll','PLs','src\pl\tcl'); + my $pltcl = + $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') { - $pltcl->AddLibrary($solution->{options}->{tcl} . '\lib\tcl85.lib'); + $pltcl->AddLibrary( + $solution->{options}->{tcl} . '\lib\tcl85.lib'); } else { - $pltcl->AddLibrary($solution->{options}->{tcl} . '\lib\tcl84.lib'); + $pltcl->AddLibrary( + $solution->{options}->{tcl} . '\lib\tcl84.lib'); } } - $libpq = $solution->AddProject('libpq','dll','interfaces','src\interfaces\libpq'); + $libpq = $solution->AddProject('libpq', 'dll', 'interfaces', + 'src\interfaces\libpq'); $libpq->AddDefine('FRONTEND'); $libpq->AddDefine('UNSAFE_STAT_OK'); $libpq->AddIncludeDir('src\port'); @@ -237,50 +251,56 @@ sub mkvcbuild $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->ReplaceFile('src\interfaces\libpq\libpqrc.c', + 'src\interfaces\libpq\libpq.rc'); $libpq->AddReference($libpgport); - my $libpqwalreceiver = $solution->AddProject('libpqwalreceiver', 'dll', '', + my $libpqwalreceiver = + $solution->AddProject('libpqwalreceiver', 'dll', '', 'src\backend\replication\libpqwalreceiver'); $libpqwalreceiver->AddIncludeDir('src\interfaces\libpq'); - $libpqwalreceiver->AddReference($postgres,$libpq); + $libpqwalreceiver->AddReference($postgres, $libpq); - my $pgtypes = - $solution->AddProject('libpgtypes','dll','interfaces','src\interfaces\ecpg\pgtypeslib'); + my $pgtypes = $solution->AddProject( + 'libpgtypes', 'dll', + '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'); - my $libecpg = - $solution->AddProject('libecpg','dll','interfaces','src\interfaces\ecpg\ecpglib'); + my $libecpg = $solution->AddProject('libecpg', 'dll', 'interfaces', + '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->AddLibrary('wsock32.lib'); - $libecpg->AddReference($libpq,$pgtypes,$libpgport); + $libecpg->AddReference($libpq, $pgtypes, $libpgport); - my $libecpgcompat =$solution->AddProject('libecpg_compat','dll','interfaces', - 'src\interfaces\ecpg\compatlib'); + 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'); - $libecpgcompat->AddReference($pgtypes,$libecpg,$libpgport); + $libecpgcompat->AddReference($pgtypes, $libecpg, $libpgport); - my $ecpg = $solution->AddProject('ecpg','exe','interfaces','src\interfaces\ecpg\preproc'); + 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'); + $ecpg->AddFiles('src\interfaces\ecpg\preproc', 'pgc.l', 'preproc.y'); $ecpg->AddDefine('MAJOR_VERSION=4'); $ecpg->AddDefine('MINOR_VERSION=2'); $ecpg->AddDefine('PATCHLEVEL=1'); $ecpg->AddDefine('ECPG_COMPILE'); $ecpg->AddReference($libpgport); - my $pgregress_ecpg = $solution->AddProject('pg_regress_ecpg','exe','misc'); + 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'); @@ -289,7 +309,8 @@ sub mkvcbuild $pgregress_ecpg->AddDefine('FRONTEND'); $pgregress_ecpg->AddReference($libpgport); - my $isolation_tester = $solution->AddProject('isolationtester','exe','misc'); + 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'); @@ -303,7 +324,8 @@ sub mkvcbuild $isolation_tester->AddLibrary('wsock32.lib'); $isolation_tester->AddReference($libpq, $libpgport); - my $pgregress_isolation = $solution->AddProject('pg_isolation_regress','exe','misc'); + 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'); @@ -337,9 +359,10 @@ 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'); + 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->RemoveFile('src\bin\pgevent\win32ver.rc'); $pgevent->UseDef('src\bin\pgevent\pgevent.def'); $pgevent->DisableLinkerWarnings('4104'); @@ -363,9 +386,9 @@ 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$/ } - keys %{$pgdumpall->{files}}; - delete @{$pgdumpall->{files}}{@nodumpall}; + 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'); @@ -381,8 +404,9 @@ sub mkvcbuild $pgrestore->AddFile('src\bin\pg_dump\keywords.c'); $pgrestore->AddFile('src\backend\parser\kwlookup.c'); - my $zic = $solution->AddProject('zic','exe','utils'); - $zic->AddFiles('src\timezone','zic.c','ialloc.c','scheck.c','localtime.c'); + my $zic = $solution->AddProject('zic', 'exe', 'utils'); + $zic->AddFiles('src\timezone', 'zic.c', 'ialloc.c', 'scheck.c', + 'localtime.c'); $zic->AddReference($libpgport); if ($solution->{options}->{xml}) @@ -390,22 +414,20 @@ sub mkvcbuild $contrib_extraincludes->{'pgxml'} = [ $solution->{options}->{xml} . '\include', $solution->{options}->{xslt} . '\include', - $solution->{options}->{iconv} . '\include' - ]; + $solution->{options}->{iconv} . '\include' ]; $contrib_extralibs->{'pgxml'} = [ $solution->{options}->{xml} . '\lib\libxml2.lib', - $solution->{options}->{xslt} . '\lib\libxslt.lib' - ]; + $solution->{options}->{xslt} . '\lib\libxslt.lib' ]; } else { - push @contrib_excludes,'xml2'; + push @contrib_excludes, 'xml2'; } if (!$solution->{options}->{openssl}) { - push @contrib_excludes,'sslinfo'; + push @contrib_excludes, 'sslinfo'; } if ($solution->{options}->{uuid}) @@ -417,33 +439,38 @@ sub mkvcbuild } else { - push @contrib_excludes,'uuid-ossp'; + push @contrib_excludes, 'uuid-ossp'; } # Pgcrypto makefile too complex to parse.... - my $pgcrypto = $solution->AddProject('pgcrypto','dll','crypto'); + my $pgcrypto = $solution->AddProject('pgcrypto', 'dll', 'crypto'); $pgcrypto->AddFiles( - 'contrib\pgcrypto','pgcrypto.c','px.c','px-hmac.c', - 'px-crypt.c','crypt-gensalt.c','crypt-blowfish.c','crypt-des.c', - 'crypt-md5.c','mbuf.c','pgp.c','pgp-armor.c', - 'pgp-cfb.c','pgp-compress.c','pgp-decrypt.c','pgp-encrypt.c', - 'pgp-info.c','pgp-mpi.c','pgp-pubdec.c','pgp-pubenc.c', - 'pgp-pubkey.c','pgp-s2k.c','pgp-pgsql.c' - ); + 'contrib\pgcrypto', 'pgcrypto.c', + 'px.c', 'px-hmac.c', + 'px-crypt.c', 'crypt-gensalt.c', + 'crypt-blowfish.c', 'crypt-des.c', + 'crypt-md5.c', 'mbuf.c', + 'pgp.c', 'pgp-armor.c', + 'pgp-cfb.c', 'pgp-compress.c', + 'pgp-decrypt.c', 'pgp-encrypt.c', + 'pgp-info.c', 'pgp-mpi.c', + 'pgp-pubdec.c', 'pgp-pubenc.c', + 'pgp-pubkey.c', 'pgp-s2k.c', + 'pgp-pgsql.c'); if ($solution->{options}->{openssl}) { - $pgcrypto->AddFiles('contrib\pgcrypto', 'openssl.c','pgp-mpi-openssl.c'); + $pgcrypto->AddFiles('contrib\pgcrypto', 'openssl.c', + 'pgp-mpi-openssl.c'); } else { $pgcrypto->AddFiles( - 'contrib\pgcrypto', 'md5.c', - 'sha1.c','sha2.c', - 'internal.c','internal-sha2.c', - 'blf.c','rijndael.c', - 'fortuna.c','random.c', - 'pgp-mpi-internal.c','imath.c' - ); + 'contrib\pgcrypto', 'md5.c', + 'sha1.c', 'sha2.c', + 'internal.c', 'internal-sha2.c', + 'blf.c', 'rijndael.c', + 'fortuna.c', 'random.c', + 'pgp-mpi-internal.c', 'imath.c'); } $pgcrypto->AddReference($postgres); $pgcrypto->AddLibrary('wsock32.lib'); @@ -456,35 +483,43 @@ sub mkvcbuild { next if ($d =~ /^\./); next unless (-f "contrib/$d/Makefile"); - next if (grep {/^$d$/} @contrib_excludes); + next if (grep { /^$d$/ } @contrib_excludes); AddContrib($d); } closedir($D); - $mf = Project::read_file('src\backend\utils\mb\conversion_procs\Makefile'); + $mf = + Project::read_file('src\backend\utils\mb\conversion_procs\Makefile'); $mf =~ s{\\s*[\r\n]+}{}mg; - $mf =~ m{SUBDIRS\s*=\s*(.*)$}m || die 'Could not match in conversion makefile' . "\n"; - foreach my $sub (split /\s+/,$1) + $mf =~ m{SUBDIRS\s*=\s*(.*)$}m + || die 'Could not match in conversion makefile' . "\n"; + foreach my $sub (split /\s+/, $1) { my $mf = Project::read_file( 'src\backend\utils\mb\conversion_procs\\' . $sub . '\Makefile'); my $p = $solution->AddProject($sub, 'dll', 'conversion procs'); - $p->AddFile('src\backend\utils\mb\conversion_procs\\' . $sub . '\\' . $sub . '.c'); + $p->AddFile('src\backend\utils\mb\conversion_procs\\' + . $sub . '\\' + . $sub + . '.c'); if ($mf =~ m{^SRCS\s*\+=\s*(.*)$}m) { - $p->AddFile('src\backend\utils\mb\conversion_procs\\' . $sub . '\\' . $1); + $p->AddFile( + 'src\backend\utils\mb\conversion_procs\\' . $sub . '\\' . $1); } $p->AddReference($postgres); } $mf = Project::read_file('src\bin\scripts\Makefile'); $mf =~ s{\\s*[\r\n]+}{}mg; - $mf =~ m{PROGRAMS\s*=\s*(.*)$}m || die 'Could not match in bin\scripts\Makefile' . "\n"; - foreach my $prg (split /\s+/,$1) + $mf =~ m{PROGRAMS\s*=\s*(.*)$}m + || die 'Could not match in bin\scripts\Makefile' . "\n"; + foreach my $prg (split /\s+/, $1) { - my $proj = $solution->AddProject($prg,'exe','bin'); - $mf =~ m{$prg\s*:\s*(.*)$}m || die 'Could not find script define for $prg' . "\n"; - my @files = split /\s+/,$1; + my $proj = $solution->AddProject($prg, 'exe', 'bin'); + $mf =~ m{$prg\s*:\s*(.*)$}m + || die 'Could not find script define for $prg' . "\n"; + my @files = split /\s+/, $1; foreach my $f (@files) { $f =~ s/\.o$/\.c/; @@ -501,7 +536,7 @@ sub mkvcbuild $proj->AddFile('src\bin\pg_dump\dumputils.c'); } elsif ($f =~ /print\.c$/) - { # Also catches mbprint.c + { # Also catches mbprint.c $proj->AddFile('src\bin\psql\\' . $f); } elsif ($f =~ /\.c$/) @@ -512,16 +547,16 @@ sub mkvcbuild $proj->AddIncludeDir('src\interfaces\libpq'); $proj->AddIncludeDir('src\bin\pg_dump'); $proj->AddIncludeDir('src\bin\psql'); - $proj->AddReference($libpq,$libpgport); - $proj->AddResourceFile('src\bin\scripts','PostgreSQL Utility'); + $proj->AddReference($libpq, $libpgport); + $proj->AddResourceFile('src\bin\scripts', 'PostgreSQL Utility'); } # Regression DLL and EXE - my $regress = $solution->AddProject('regress','dll','misc'); + my $regress = $solution->AddProject('regress', 'dll', 'misc'); $regress->AddFile('src\test\regress\regress.c'); $regress->AddReference($postgres); - my $pgregress = $solution->AddProject('pg_regress','exe','misc'); + 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'); @@ -539,10 +574,10 @@ sub mkvcbuild # Add a simple frontend project (exe) sub AddSimpleFrontend { - my $n = shift; - my $uselibpq= shift; + my $n = shift; + my $uselibpq = shift; - my $p = $solution->AddProject($n,'exe','bin'); + my $p = $solution->AddProject($n, 'exe', 'bin'); $p->AddDir('src\bin\\' . $n); $p->AddReference($libpgport); if ($uselibpq) @@ -556,7 +591,7 @@ sub AddSimpleFrontend # Add a simple contrib project sub AddContrib { - my $n = shift; + my $n = shift; my $mf = Project::read_file('contrib\\' . $n . '\Makefile'); if ($mf =~ /^MODULE_big\s*=\s*(.*)$/mg) @@ -578,8 +613,8 @@ sub AddContrib { foreach my $d (split /\s+/, $1) { - my $mf2 = - Project::read_file('contrib\\' . $n . '\\' . $d . '\Makefile'); + my $mf2 = Project::read_file( + 'contrib\\' . $n . '\\' . $d . '\Makefile'); $mf2 =~ s{\\\s*[\r\n]+}{}mg; $mf2 =~ /^SUBOBJS\s*=\s*(.*)$/gm || croak @@ -609,7 +644,8 @@ sub AddContrib { my $proj = $solution->AddProject($1, 'exe', 'contrib'); $mf =~ s{\\\s*[\r\n]+}{}mg; - $mf =~ /^OBJS\s*=\s*(.*)$/gm || croak "Could not find objects in PROGRAM for $n\n"; + $mf =~ /^OBJS\s*=\s*(.*)$/gm + || croak "Could not find objects in PROGRAM for $n\n"; my $objs = $1; while ($objs =~ /\b([\w-]+\.o)\b/g) { @@ -630,7 +666,7 @@ sub AddContrib sub GenerateContribSqlFiles { - my $n = shift; + my $n = shift; my $mf = shift; if ($mf =~ /^DATA_built\s*=\s*(.*)$/mg) { @@ -645,25 +681,26 @@ sub GenerateContribSqlFiles { $pcount++ if (substr($l, $i, 1) eq '('); $pcount-- if (substr($l, $i, 1) eq ')'); - last if ($pcount < 0); + last if ($pcount < 0); } - $l = substr($l, 0, index($l, '$(addsuffix ')) . substr($l, $i+1); + $l = + substr($l, 0, index($l, '$(addsuffix ')) . substr($l, $i + 1); } foreach my $d (split /\s+/, $l) { - my $in = "$d.in"; + my $in = "$d.in"; my $out = "$d"; if (Solution::IsNewer("contrib/$n/$out", "contrib/$n/$in")) { print "Building $out from $in (contrib/$n)...\n"; my $cont = Project::read_file("contrib/$n/$in"); - my $dn = $out; - $dn =~ s/\.sql$//; + my $dn = $out; + $dn =~ s/\.sql$//; $cont =~ s/MODULE_PATHNAME/\$libdir\/$dn/g; my $o; - open($o,">contrib/$n/$out") + open($o, ">contrib/$n/$out") || croak "Could not write to contrib/$n/$d"; print $o $cont; close($o); @@ -675,7 +712,7 @@ sub GenerateContribSqlFiles sub AdjustContribProj { my $proj = shift; - my $n = $proj->{name}; + my $n = $proj->{name}; if ($contrib_defines->{$n}) { @@ -684,32 +721,32 @@ sub AdjustContribProj $proj->AddDefine($d); } } - if (grep {/^$n$/} @contrib_uselibpq) + if (grep { /^$n$/ } @contrib_uselibpq) { $proj->AddIncludeDir('src\interfaces\libpq'); $proj->AddReference($libpq); } - if (grep {/^$n$/} @contrib_uselibpgport) + if (grep { /^$n$/ } @contrib_uselibpgport) { $proj->AddReference($libpgport); } if ($contrib_extralibs->{$n}) { - foreach my $l (@{$contrib_extralibs->{$n}}) + foreach my $l (@{ $contrib_extralibs->{$n} }) { $proj->AddLibrary($l); } } if ($contrib_extraincludes->{$n}) { - foreach my $i (@{$contrib_extraincludes->{$n}}) + foreach my $i (@{ $contrib_extraincludes->{$n} }) { $proj->AddIncludeDir($i); } } if ($contrib_extrasource->{$n}) { - $proj->AddFiles('contrib\\' . $n, @{$contrib_extrasource->{$n}}); + $proj->AddFiles('contrib\\' . $n, @{ $contrib_extrasource->{$n} }); } } |