X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Fblhc;h=e17c377d92f5160355b5ee082d9d9fbc1f2d3070;hb=273f7a78980493d607823c32e364e4efe901c879;hp=1a3d55c55f7ef70ee7d929a170e27428f1a602a4;hpb=a478f5c6485df6520be9e08832fbf8f1e0a39d15;p=blhc%2Fblhc.git diff --git a/bin/blhc b/bin/blhc index 1a3d55c..e17c377 100755 --- a/bin/blhc +++ b/bin/blhc @@ -22,7 +22,6 @@ use strict; use warnings; use Getopt::Long (); -use Term::ANSIColor (); use Text::ParseWords (); our $VERSION = '0.01'; @@ -138,7 +137,7 @@ my $file_extension_regex = qr/ \s \S+ # Filename without extension. \. - ([^\\.,;:\s]+) # File extension. + ([^\/\\.,;:\s]+)# File extension. (?=\s|\\) # At end of word. Can't use \b because some files have non # word characters at the end and because \b matches double # extensions (like .cpp.o). Works always as all lines are @@ -189,6 +188,26 @@ my @def_ldflags_pic = ( '-fpic', '-shared', ); +# References to all flags checked by the parser. +my @flag_refs = ( + \@def_cflags, + \@def_cflags_format, + \@def_cflags_fortify, + \@def_cflags_stack, + \@def_cflags_pie, + \@def_cxxflags, + \@def_cppflags, + \@def_cppflags_fortify, + \@def_ldflags, + \@def_ldflags_relro, + \@def_ldflags_bindnow, +); +# References to all used flags. +my @flag_refs_all = ( + @flag_refs, + \@def_ldflags_pie, + \@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 = ( @@ -449,6 +468,12 @@ along with this program. If not, see . exit 0; } +# Don't load Term::ANSIColor in buildd mode because Term::ANSIColor is not +# installed on Debian's buildds. +if (not $option_buildd) { + require Term::ANSIColor; +} + if ($option_all) { $option_pie = 1; $option_bindnow = 1; @@ -456,19 +481,9 @@ if ($option_all) { # Precompile all flag regexps. any_flags_used(), all_flags_used() get a lot # faster with this. -@def_cflags = compile_flag_regexp(\%flag_renames, @def_cflags); -@def_cflags_format = compile_flag_regexp(\%flag_renames, @def_cflags_format); -@def_cflags_fortify = compile_flag_regexp(\%flag_renames, @def_cflags_fortify); -@def_cflags_stack = compile_flag_regexp(\%flag_renames, @def_cflags_stack); -@def_cflags_pie = compile_flag_regexp(\%flag_renames, @def_cflags_pie); -@def_cxxflags = compile_flag_regexp(\%flag_renames, @def_cxxflags); -@def_cppflags = compile_flag_regexp(\%flag_renames, @def_cppflags); -@def_cppflags_fortify = compile_flag_regexp(\%flag_renames, @def_cppflags_fortify); -@def_ldflags = compile_flag_regexp(\%flag_renames, @def_ldflags); -@def_ldflags_relro = compile_flag_regexp(\%flag_renames, @def_ldflags_relro); -@def_ldflags_bindnow = compile_flag_regexp(\%flag_renames, @def_ldflags_bindnow); -@def_ldflags_pie = compile_flag_regexp(\%flag_renames, @def_ldflags_pie); -@def_ldflags_pic = compile_flag_regexp(\%flag_renames, @def_ldflags_pic); +foreach my $flags (@flag_refs_all) { + @{$flags} = compile_flag_regexp(\%flag_renames, @{$flags}); +} # Final exit code. my $exit = 0; @@ -563,7 +578,7 @@ FILE: foreach my $file (@ARGV) { # Ignore compiler warnings for now. next if $line =~ /$warning_regex/o; - if ($line =~ /\033/) { # esc + if (not $option_buildd and $line =~ /\033/) { # esc # Remove all ANSI color sequences which are sometimes used in # non-verbose builds. $line = Term::ANSIColor::colorstrip($line);