From 215414e3b9fdfb31ea4923243335c6b30c1f9975 Mon Sep 17 00:00:00 2001
From: Robert Izzard <r.izzard@surrey.ac.uk>
Date: Mon, 11 Nov 2019 16:01:11 +0000
Subject: [PATCH] update check_compilers.pl script for new Meson system

---
 src/perl/scripts2/check_compilers.pl | 34 +++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/src/perl/scripts2/check_compilers.pl b/src/perl/scripts2/check_compilers.pl
index e98201c25..e7b02c338 100755
--- a/src/perl/scripts2/check_compilers.pl
+++ b/src/perl/scripts2/check_compilers.pl
@@ -15,8 +15,11 @@ my $args = "@ARGV";
 my $vb = ($args=~/-v/) ? 1 : 0;
 my @compilers = ('gcc','clang');
 my $compiler_regexp = join('|',@compilers);
+my $meson_version = (`meson --version`=~/^(\d+\.\d+\.\d+)/)[0]; # set to 1 to use meson
+my $meson = defined $meson_version ? 1 : 0;
+my $meson_builddir = "builddir_check_compilers";
 
-printx "Check binary_c compilers (vb = $vb), logging to $logfile\n";
+printx "Check binary_c compilers (vb = $vb), logging to $logfile, building with ",($meson ? "meson $meson_version" : 'make')."\n";
 
 foreach my $compiler (@compilers)
 {
@@ -89,23 +92,42 @@ sub build
     # environment for commnads 
     my $env = "unset CC; export CC=$compiler; ";
 
-    # run configure
+    # run configure or meson
     printx "Configure with $compiler (version $v)\n";
-    my $cmd = "$env ./configure 2>/dev/stdout";
+    my $cmd = 
+        $meson 
+        ?
+        "$env rm -rf $meson_builddir; $env meson $meson_builddir --buildtype release"
+        :
+        "$env ./configure 2>/dev/stdout";
+
     printx "CMD $cmd\n"if($vb);
     my $r = `$cmd`;
     printx $r if($vb);
     
-    if($r=~/Now run .\/make/)
+    if($meson ? 
+       $r=~/Found ninja/ :
+       $r=~/Now run .\/make/)
     {
         # configure successful : do the build
         printx "Building\n";
-        $cmd = "$env ./make clean 2>/dev/stdout; ./make 2>/dev/stdout";
+        $cmd = 
+            $meson ?
+            "cd $meson_builddir; ninja 2>/dev/stdout" :
+            "$env ./make clean 2>/dev/stdout; ./make 2>/dev/stdout";
         printx "CMD $cmd\n" if($vb);
         $r = `$cmd`;
         
         # clean the results of successful statements
-        $r =~ s/(?:rm -f|Make on|Done|BUILD|LINK|DONE).*//g;
+        if($meson)
+        {
+            $r =~ s/^\[\d+\/\d+].*//mg;
+        }
+        else
+        {    
+            $r =~ s/(?:rm -f|Make on|Done|BUILD|LINK|DONE).*//g;
+            
+        }
         $r =~ s/\n\s*\n//g;
         $r =~ s/^\s+//;
         $r =~ s/\s+$//;
-- 
GitLab