| #! /usr/bin/perl -w |
| |
| use strict; |
| |
| BEGIN { |
| $0 =~ m%^(.*?/?tools)/winapi/make_filter$%; |
| require "$1/winapi/setup.pm"; |
| } |
| |
| use config qw( |
| &file_absolutize &file_normalize |
| $current_dir $wine_dir |
| ); |
| use output qw($output); |
| use make_filter_options qw($options); |
| |
| use make_parser qw($directory $tool $file $line $message); |
| |
| if($options->progress) { |
| $output->enable_progress; |
| } else { |
| $output->disable_progress; |
| } |
| |
| ######################################################################## |
| # main |
| ######################################################################## |
| |
| my $command = $options->make . " " . join(" ", $options->arguments); |
| open(IN, "($command) 2>&1 |"); |
| |
| while(<IN>) { |
| chomp; |
| |
| if(!&make_parser::line($_)) { |
| next; |
| } |
| |
| if($message) { |
| if($file && $line) { |
| if($directory && $directory ne ".") { |
| $output->write(&file_normalize("$directory/$file") . ":$line: $message\n"); |
| } else { |
| $output->write("$file:$line: $message\n"); |
| } |
| } elsif($file) { |
| if($directory && $directory ne ".") { |
| $output->write(&file_normalize("$directory/$file") . ": $message\n"); |
| } else { |
| $output->write("$file: $message\n"); |
| } |
| } else { |
| if($directory && $directory ne ".") { |
| $output->write("$directory: $tool: $message\n"); |
| } elsif($tool) { |
| $output->write("$tool: $message\n"); |
| } else { |
| $output->write("$message\n"); |
| } |
| } |
| } elsif($tool eq "make") { |
| if($directory && $directory ne ".") { |
| $output->progress("$directory: make"); |
| } |
| } |
| } |
| |
| close(IN); |
| |
| $output->hide_progress(); |