[project @ 1999-07-14 13:26:48 by simonmar]
[ghc-hetmet.git] / ghc / utils / hscpp / hscpp.prl
index 12d4038..8d753e5 100644 (file)
 #
 
 $Verbose = 0;
+$file = '';
+@args = ();
 
-while ( $#ARGV >= 0 &&  $ARGV[0] eq '-v' ) {
-    if ($ARGV[0] eq '-v') {
-       $Verbose = 1;
-    } else {
-       die "hscpp: unrecognised argument: $$ARGV[0]\n";
-    }
-    shift(@ARGV);
-}
-#ToDo: print a version number ?
-
-$OrigCpp = ${RAWCPP};
-
-if ( $OrigCpp =~ /(\S+)\s+(.*)/ ) {
-    $cmd  = $1;
-    $rest = $2;
-    if ( -x $cmd ) { # cool
-       $Cpp = $OrigCpp;
-    } else { # oops; try to guess
-       $GccV = `gcc -v 2>&1`;
-       if ( $GccV =~ /Reading specs from (.*)\/specs/ ) {
-           $Cpp = "$1/cpp $rest";
+$Cpp = ${RAWCPP};
+
+foreach (@ARGV) {
+    /^-v$/ && do { $Verbose = 1; next; };
+
+    /^[^-]/ && do { 
+       if ($file ne '') { 
+           die "usage: hscpp [arg...] file";
        } else {
-           die "hscpp: don't know how to run cpp: $OrigCpp\n";
-       }
-    }
-} else {
-    $Cpp = $OrigCpp;
-}
+           $file = $_; 
+       };
+       next;
+    };
 
-print STDERR "hscpp:CPP invoked: $Cpp @ARGV\n" if $Verbose;
+    push @args, $_;
+}
 
-open(INPIPE, "$Cpp @ARGV |") || die "Can't open C pre-processor pipe\n";
+print STDERR "hscpp:CPP invoked: $Cpp @args - <$file\n" if $Verbose;
+open(INPIPE, "$Cpp @args - <$file |") 
+       || die "Can't open C pre-processor pipe\n";
 
 while (<INPIPE>) {
 
 # line directives come in flavo[u]rs:
 #   s/^#\s*line\s+\d+$/\{\-# LINE \-\}/;   IGNORE THIS ONE FOR NOW
-    s/^#\s*line\s+(\d+)\s+(\".+\")$/\{\-# LINE \1 \2 \-\}/;
-    s/^#\s*(\d+)\s+(\".*\").*/\{\-# LINE \1 \2 \-\}/;
+    s/^#\s*line\s+(\d+)\s+(\".+\")$/\{\-# LINE \1 \"$file\" \-\}/;
+    s/^#\s*(\d+)\s+(\".*\").*/\{\-# LINE \1 \"$file\" \-\}/;
 
     print $_;
 }