r9549: Rerun ./config.status if one of the .mk files changes
authorJelmer Vernooij <jelmer@samba.org>
Tue, 23 Aug 2005 22:16:36 +0000 (22:16 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:27 +0000 (13:34 -0500)
source/build/smb_build/config_mk.pm
source/build/smb_build/main.pl
source/build/smb_build/makefile.pm

index c5a035f37565140faf2f7cee9271d1029e0c02d6..49b93a5d980693c54bda998c9ceda522aeb7e658 100644 (file)
@@ -6,7 +6,7 @@
 ###  Released under the GNU GPL                                ###
 ###########################################################
 
-package config_mk;
+package smb_build::config_mk;
 use smb_build::input;
 
 use strict;
@@ -33,6 +33,10 @@ my %attribute_types = (
        "MANPAGE" => "string"
 );
 
+use vars qw(@parsed_files);
+
+@parsed_files = ();
+
 ###########################################################
 # The parsing function which parses the file
 #
@@ -48,6 +52,8 @@ sub run_config_mk($$)
        my $infragment = 0;
        my $section = "GLOBAL";
        my $makefile = "";
+
+       push (@parsed_files, $filename);
        
        open(CONFIG_MK, $filename) or die("Can't open `$filename'\n");
        my @lines = <CONFIG_MK>;
index 7f83754408a15e1558840a5d33190c6cb67cc374..e6a330e99d7aae353f8c77b246eb711f118df71c 100644 (file)
@@ -18,7 +18,7 @@ use strict;
 
 my $INPUT = {};
 
-my $mkfile = config_mk::run_config_mk($INPUT, "main.mk");
+my $mkfile = smb_build::config_mk::run_config_mk($INPUT, "main.mk");
 my $DEPEND = smb_build::input::check($INPUT, \%config::enabled);
 my $OUTPUT = output::create_output($DEPEND);
 makefile::create_makefile_in($OUTPUT, $mkfile, "Makefile.in");
index 19c8486bf89a05332bc8a92fa0b93097a7814962..b43a738613fb1b0af59e629034c7660134b350c8 100644 (file)
@@ -123,6 +123,24 @@ sub _prepare_man_rule($)
 __EOD__
 }
 
+sub _prepare_config_status()
+{
+       my @parsed_files = @smb_build::config_mk::parsed_files;
+       my $deps = "";
+       
+       foreach (@parsed_files) {
+               /^([^ |]+)/;
+               $deps.= " $1";
+       }
+
+       return "
+
+Makefile: config.status $deps
+       ./config.status
+
+";
+}
+
 sub _prepare_binaries($)
 {
        my $ctx = shift;
@@ -596,6 +614,7 @@ sub _prepare_makefile_in($)
        $output .= _prepare_binaries($CTX);
        $output .= _prepare_target_settings($CTX);
        $output .= _prepare_rule_lists($CTX);
+       $output .= _prepare_config_status();
 
        if ($config{developer} eq "yes") {
                $output .= <<__EOD__