From 1e6b9b693c916b6354b8d28c0e70355847f3abcc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 Dec 2019 19:52:10 +0000 Subject: [PATCH] generate: Handle nodes with no own Subdir.sd.mk If a directory is not mentioned on the command line, we would assume it had a Subdir.sd.mk anyway. Instead, expect it not to have one. We do still generate a per-subdirectory fragment for such unmentioned nodes: this serves to wire its children ino the parent, make running `make' in that directory possible, etc. Signed-off-by: Ian Jackson --- generate | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/generate b/generate index fe3e3f5..14deda4 100755 --- a/generate +++ b/generate @@ -32,8 +32,8 @@ our @subdirs = @ARGV; s{/+$}{} foreach @subdirs; -our $root = [ '.', [ ] ]; -# each node is [ 'relative subdir name', \@children ] +our $root = [ '.', [ ], 1 ]; +# each node is [ 'relative subdir name', \@children, $mentioned ] sub build_tree () { foreach my $subdir (@subdirs) { @@ -47,6 +47,7 @@ sub build_tree () { } $node = $c; } + $node->[2] = 1; } } @@ -244,8 +245,18 @@ sub process_subtree ($$) { } start_output_file("${dir_prefix}Subdir.mk.tmp"); - filter_subdir_mk($dir_prefix, $dir_suffix, $dir_name, - $var_prefix, \%targets); + if ($node->[2]) { + filter_subdir_mk($dir_prefix, $dir_suffix, $dir_name, + $var_prefix, \%targets); + } else { + my $sdmk = "${dir_prefix}Subdir.sd.mk"; + if (stat $sdmk) { + die "$sdmk unexpectedly exists (${dir_prefix} not mentioned)"; + } elsif ($!==ENOENT) { + } else { + die "stat $sdmk: $!"; + } + } o "\n"; -- 2.30.2