]> ruderich.org/simon Gitweb - blhc/blhc.git/blobdiff - bin/blhc
Release 0.07
[blhc/blhc.git] / bin / blhc
index c4e814c0cae8275355fdea6ca996170982c9a90f..accb99fbff8226aa42fb55ed423a9e32b40d3710 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -24,7 +24,7 @@ use warnings;
 use Getopt::Long ();
 use Text::ParseWords ();
 
-our $VERSION = '0.06';
+our $VERSION = '0.07';
 
 
 # CONSTANTS/VARIABLES
@@ -89,10 +89,10 @@ my @source_no_preprocess_compile_cpp = (
     qw( mii ),
 );
 my @source_no_preprocess_compile_ada = (
+    # Ada source
+    qw( ada ),
     # Ada body
     qw( adb ),
-    # If you add another file, fix use of @source_no_preprocess_compile_ada
-    # below (search for $compile_ada).
 );
 my @source_no_preprocess_compile = (
     # C
@@ -106,11 +106,15 @@ my @source_no_preprocess_compile = (
     # Ada
     @source_no_preprocess_compile_ada,
 );
+my @source_no_preprocess_no_compile_ada = (
+    # Ada specification
+    qw( ads ),
+);
 my @source_no_preprocess_no_compile = (
     # Assembly
     qw( s ),
-    # Ada specification
-    qw( ads ),
+    # Ada
+    @source_no_preprocess_no_compile_ada,
 );
 my @source_no_preprocess = (
     @source_no_preprocess_compile,
@@ -161,6 +165,10 @@ my %extensions_compile_cpp = map { $_ => 1 } (
     @source_preprocess_compile_cpp,
     @source_no_preprocess_compile_cpp,
 );
+my %extensions_ada = map { $_ => 1 } (
+    @source_no_preprocess_compile_ada,
+    @source_no_preprocess_no_compile_ada,
+);
 my %extensions_object = map { $_ => 1 } (
     @object,
 );
@@ -1230,10 +1238,9 @@ LINE:
             $compile_cpp = 1;
         # Ada needs special CFLAGS, use them if only ada files are compiled.
         } elsif ($ada
-                    and $compile
-                    and array_equal(\@extensions,
-                                    \@source_no_preprocess_compile_ada)) {
+                and extension_found(\%extensions_ada, @extensions)) {
             $compile_ada = 1;
+            $preprocess = 0; # Ada uses no CPPFLAGS
             @cflags_backup = @cflags;
             @cflags        = @cflags_ada;
         }