From ee94cb6c15732c8b5f329164af7f2b0a63f4fa6d Mon Sep 17 00:00:00 2001
From: Yann Dirson <ydirson@free.fr>
Date: Sun, 23 Feb 2020 19:19:13 +0100
Subject: cmake2meson fix if nesting (#6676)

---
 tools/cmake2meson.py | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

(limited to 'tools')

diff --git a/tools/cmake2meson.py b/tools/cmake2meson.py
index 5a27a51..05acd8f 100755
--- a/tools/cmake2meson.py
+++ b/tools/cmake2meson.py
@@ -139,6 +139,16 @@ class Parser:
         while not self.accept('eof'):
             yield(self.statement())
 
+def token_or_group(arg):
+    if isinstance(arg, Token):
+        return ' ' + arg.value
+    elif isinstance(arg, list):
+        line = ' ('
+        for a in arg:
+            line += ' ' + token_or_group(a)
+        line += ' )'
+        return line
+
 class Converter:
     ignored_funcs = {'cmake_minimum_required': True,
                      'enable_testing': True,
@@ -237,17 +247,16 @@ class Converter:
             except AttributeError:  # complex if statements
                 line = t.name
                 for arg in t.args:
-                    if isinstance(arg, Token):
-                        line += ' ' + arg.value
-                    elif isinstance(arg, list):
-                        line += ' ('
-                        for a in arg:
-                            line += ' ' + a.value
-                        line += ' )'
+                    line += token_or_group(arg)
         elif t.name == 'elseif':
             preincrement = -1
             postincrement = 1
-            line = 'elif %s' % self.convert_args(t.args, False)
+            try:
+                line = 'elif %s' % self.convert_args(t.args, False)
+            except AttributeError:  # complex if statements
+                line = t.name
+                for arg in t.args:
+                    line += token_or_group(arg)
         elif t.name == 'else':
             preincrement = -1
             postincrement = 1
-- 
cgit v1.1