@@ -266,13 +266,18 @@ sub GenerateFiles
266266 chdir (' src/backend/utils' );
267267 my $pg_language_dat = ' ../../../src/include/catalog/pg_language.dat' ;
268268 my $pg_proc_dat = ' ../../../src/include/catalog/pg_proc.dat' ;
269- if ( IsNewer(' fmgrtab.c' , $pg_language_dat )
270- || IsNewer(' fmgrtab.c' , $pg_proc_dat )
271- || IsNewer(' fmgrtab.c' , ' ../../../src/include/access/transam.h' ))
269+ if ( IsNewer(' fmgr-stamp' , ' Gen_fmgrtab.pl' )
270+ || IsNewer(' fmgr-stamp' , ' ../catalog/Catalog.pm' )
271+ || IsNewer(' fmgr-stamp' , $pg_language_dat )
272+ || IsNewer(' fmgr-stamp' , $pg_proc_dat )
273+ || IsNewer(' fmgr-stamp' , ' ../../../src/include/access/transam.h' ))
272274 {
273275 system (
274276 " perl -I ../catalog Gen_fmgrtab.pl -I../../../src/include/ $pg_language_dat $pg_proc_dat "
275277 );
278+ open (my $f , ' >' , ' fmgr-stamp' )
279+ || confess " Could not touch fmgr-stamp" ;
280+ close ($f );
276281 }
277282 chdir (' ../../..' );
278283
@@ -468,36 +473,49 @@ EOF
468473 || croak " Could not find POSTGRES_BKI_DATA in Makefile\n " ;
469474 my @bki_data = split /\s +/, $1 ;
470475
476+ my $need_genbki = 0;
471477 foreach my $bki (@bki_srcs , @bki_data )
472478 {
473479 next if $bki eq " " ;
474480 if (IsNewer(
475- ' src/backend/catalog/postgres. bki' ,
481+ ' src/backend/catalog/bki-stamp ' ,
476482 " src/include/catalog/$bki " ))
477483 {
478- chdir (' src/backend/catalog' );
479- my $bki_srcs = join (' ../../../src/include/catalog/' , @bki_srcs );
480- system (
481- " perl genbki.pl --set-version=$self ->{majorver} $bki_srcs " );
482- chdir (' ../../..' );
483-
484- # Copy generated headers to include directory.
485- opendir (my $dh , ' src/backend/catalog/' )
486- || die " Can't opendir src/backend/catalog/ $! " ;
487- my @def_headers = grep { / pg_\w +_d\. h$ / } readdir ($dh );
488- closedir $dh ;
489- foreach my $def_header (@def_headers )
490- {
491- copyFile(
492- " src/backend/catalog/$def_header " ,
493- " src/include/catalog/$def_header " );
494- }
495- copyFile(
496- ' src/backend/catalog/schemapg.h' ,
497- ' src/include/catalog/schemapg.h' );
484+ $need_genbki = 1;
498485 last ;
499486 }
500487 }
488+ $need_genbki = 1
489+ if IsNewer(' src/backend/catalog/bki-stamp' ,
490+ ' src/backend/catalog/genbki.pl' );
491+ $need_genbki = 1
492+ if IsNewer(' src/backend/catalog/bki-stamp' ,
493+ ' src/backend/catalog/Catalog.pm' );
494+ if ($need_genbki )
495+ {
496+ chdir (' src/backend/catalog' );
497+ my $bki_srcs = join (' ../../../src/include/catalog/' , @bki_srcs );
498+ system (" perl genbki.pl --set-version=$self ->{majorver} $bki_srcs " );
499+ open (my $f , ' >' , ' bki-stamp' )
500+ || confess " Could not touch bki-stamp" ;
501+ close ($f );
502+ chdir (' ../../..' );
503+
504+ # Copy generated headers to include directory.
505+ opendir (my $dh , ' src/backend/catalog/' )
506+ || die " Can't opendir src/backend/catalog/ $! " ;
507+ my @def_headers = grep { / pg_\w +_d\. h$ / } readdir ($dh );
508+ closedir $dh ;
509+ foreach my $def_header (@def_headers )
510+ {
511+ copyFile(
512+ " src/backend/catalog/$def_header " ,
513+ " src/include/catalog/$def_header " );
514+ }
515+ copyFile(
516+ ' src/backend/catalog/schemapg.h' ,
517+ ' src/include/catalog/schemapg.h' );
518+ }
501519
502520 open (my $o , ' >' , " doc/src/sgml/version.sgml" )
503521 || croak " Could not write to version.sgml\n " ;
0 commit comments