X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=bin%2Fblhc;h=91a5f4943c29076d61bde0904dffc7aa8d38a74a;hp=0cc2e6a21f5a2f37d26ec1af2cb72c593bd31df0;hb=53e64de60f08fcb752b1f3ccb41c9e8555be8866;hpb=700aa8fd9844c0368e0785da527ca472f6ed2ea9 diff --git a/bin/blhc b/bin/blhc index 0cc2e6a..91a5f49 100755 --- a/bin/blhc +++ b/bin/blhc @@ -129,14 +129,8 @@ my %extensions_compile_cpp = map { $_ => 1 } ( ); my %extension = map { $_ => 1 } ( @source_no_preprocess, - @source_no_preprocess_compile, - @source_no_preprocess_compile_cpp, - @source_no_preprocess_no_compile, @header_preprocess, @source_preprocess, - @source_preprocess_compile, - @source_preprocess_compile_cpp, - @source_preprocess_no_compile, ); # Regexp to match file extensions. @@ -737,6 +731,7 @@ FILE: foreach my $file (@ARGV) { # Skip unnecessary tests when only preprocessing. my $flag_preprocess = 0; + my $dependency = 0; my $preprocess = 0; my $compile = 0; my $link = 0; @@ -746,11 +741,25 @@ FILE: foreach my $file (@ARGV) { $preprocess = 1; $flag_preprocess = 1 if $1 eq '-E'; $compile = 1 if $1 eq '-S' or $1 eq '-c'; + # Dependency generation for Makefiles. The other flags (-MF -MG -MP + # -MT -MQ) are always used with -M/-MM. + } elsif ($line =~ /\s(?:-M|-MM)\b/) { + $dependency = 1; # Otherwise assume we are linking. } else { $link = 1; } + # -MD/-MMD also cause dependency generation, but they don't imply -E! + if ($line =~ /\s(?:-MD|-MMD)\b/) { + $dependency = 0; + $flag_preprocess = 0; + } + + # Dependency generation for Makefiles, no preprocessing or other flags + # needed. + next if $dependency; + # Get all file extensions on this line. my @extensions = $line =~ /$file_extension_regex/go; # Ignore all unknown extensions to speedup the search below.