X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=bin%2Fblhc;h=91a5f4943c29076d61bde0904dffc7aa8d38a74a;hp=eb803248d784514aff2143a3c4835d475daa25db;hb=53e64de60f08fcb752b1f3ccb41c9e8555be8866;hpb=f61763f97aa10059755d434556945465a4984aab diff --git a/bin/blhc b/bin/blhc index eb80324..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. @@ -181,10 +175,10 @@ my @def_cppflags_fortify = ( ); my @def_ldflags = (); my @def_ldflags_relro = ( - '-Wl,(-z,)?relro', + '-Wl,(?:-z,)?relro', ); my @def_ldflags_bindnow = ( - '-Wl,(-z,)?now', + '-Wl,(?:-z,)?now', ); my @def_ldflags_pie = ( '-fPIE', @@ -198,9 +192,9 @@ my @def_ldflags_pic = ( # Renaming rules for the output so the regex parts are not visible. Also # stores string values of flag regexps above, see compile_flag_regexp(). my %flag_renames = ( - '-O(?:2|3)' => '-O2', - '-Wl,(-z,)?relro' => '-Wl,-z,relro', - '-Wl,(-z,)?now' => '-Wl,-z,now', + '-O(?:2|3)' => '-O2', + '-Wl,(?:-z,)?relro' => '-Wl,-z,relro', + '-Wl,(?:-z,)?now' => '-Wl,-z,now', ); my %exit_code = ( @@ -473,6 +467,8 @@ if ($option_all) { my $exit = 0; FILE: foreach my $file (@ARGV) { + print "checking '$file'...\n" if scalar @ARGV > 1; + open my $fh, '<', $file or die "$!: $file"; # Architecture of this file. @@ -735,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; @@ -744,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.