1
1
package Mkvcbuild ;
2
+
2
3
#
3
4
# Package that generates build files for msvc build
4
5
#
5
- # $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.4 2007/03/21 14:39:23 mha Exp $
6
+ # $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.5 2007/03/23 09:53:33 mha Exp $
6
7
#
7
8
use Carp;
8
9
use Win32;
@@ -249,6 +250,8 @@ sub mkvcbuild
249
250
}
250
251
$pgcrypto -> AddReference($postgres );
251
252
$pgcrypto -> AddLibrary(' wsock32.lib' );
253
+ my $mf = Project::read_file(' contrib/pgcrypto/Makefile' );
254
+ GenerateContribSqlFiles(' pgcrypto' , $mf );
252
255
253
256
my $D ;
254
257
opendir ($D , ' contrib' ) || croak " Could not opendir on contrib!\n " ;
@@ -384,7 +387,6 @@ sub AddContrib
384
387
}
385
388
}
386
389
AdjustContribProj($proj );
387
- return $proj ;
388
390
}
389
391
elsif ($mf =~ / ^MODULES\s *=\s *(.*)$ /mg )
390
392
{
@@ -395,7 +397,6 @@ sub AddContrib
395
397
$proj -> AddReference($postgres );
396
398
AdjustContribProj($proj );
397
399
}
398
- return undef ;
399
400
}
400
401
elsif ($mf =~ / ^PROGRAM\s *=\s *(.*)$ /mg )
401
402
{
@@ -407,12 +408,62 @@ sub AddContrib
407
408
$proj -> AddFile(' contrib\\ ' . $n . ' \\ ' . $o );
408
409
}
409
410
AdjustContribProj($proj );
410
- return $proj ;
411
411
}
412
412
else
413
413
{
414
414
croak " Could not determine contrib module type for $n \n " ;
415
415
}
416
+
417
+ # Are there any output data files to build?
418
+ GenerateContribSqlFiles($n , $mf );
419
+ }
420
+
421
+ sub GenerateContribSqlFiles
422
+ {
423
+ my $n = shift ;
424
+ my $mf = shift ;
425
+ if ($mf =~ / ^DATA_built\s *=\s *(.*)$ /mg )
426
+ {
427
+ my $l = $1 ;
428
+
429
+ # Strip out $(addsuffix) rules
430
+ if (index ($l , ' $(addsuffix ' ) >= 0)
431
+ {
432
+ my $pcount = 0;
433
+ my $i ;
434
+ for ($i = index ($l , ' $(addsuffix ' ) + 12; $i < length ($l ); $i ++)
435
+ {
436
+ $pcount ++ if (substr ($l , $i , 1) eq ' (' );
437
+ $pcount -- if (substr ($l , $i , 1) eq ' )' );
438
+ last if ($pcount < 0);
439
+ }
440
+ $l = substr ($l , 0, index ($l , ' $(addsuffix ' )) . substr ($l , $i +1);
441
+ }
442
+
443
+ # Special case for contrib/spi
444
+ $l = " autoinc.sql insert_username.sql moddatetime.sql refint.sql timetravel.sql"
445
+ if ($n eq ' spi' );
446
+
447
+ foreach my $d (split /\s +/, $l )
448
+ {
449
+ my $in = " $d .in" ;
450
+ my $out = " $d " ;
451
+
452
+ # tsearch2 uses inconsistent naming
453
+ $in = " tsearch.sql.in" if ($in eq " tsearch2.sql.in" );
454
+ $in = " untsearch.sql.in" if ($in eq " uninstall_tsearch2.sql.in" );
455
+ if (Solution::IsNewer(" contrib/$n /$out " , " contrib/$n /$in " ))
456
+ {
457
+ print " Building $out from $in (contrib/$n )...\n " ;
458
+ my $cont = Project::read_file(" contrib/$n /$in " );
459
+ $cont =~ s / MODULE_PATHNAME/ \$ libdir\/ $n / g ;
460
+ my $o ;
461
+ open ($o ," >contrib/$n /$out " ) || croak " Could not write to contrib/$n /$d " ;
462
+ print $o $cont ;
463
+ close ($o );
464
+ }
465
+ }
466
+ }
416
467
}
417
468
418
469
sub AdjustContribProj
0 commit comments