From 0c31155b0a572522ea6e623add3d76318b091993 Mon Sep 17 00:00:00 2001
From: Jussi Pakkanen <jpakkane@gmail.com>
Date: Mon, 2 Jun 2014 00:51:36 +0300
Subject: Convert some function types.

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

(limited to 'tools/cmake2meson.py')

diff --git a/tools/cmake2meson.py b/tools/cmake2meson.py
index d4e68ce..8cc9d55 100755
--- a/tools/cmake2meson.py
+++ b/tools/cmake2meson.py
@@ -136,17 +136,27 @@ class Converter:
     def __init__(self, cmake_root):
         self.cmake_root = cmake_root
         self.indent_unit = '  '
+        self.indent_level = 0
 
-    def write_entry(self, outfile, indent, t):
+    def write_entry(self, outfile, t):
+        indent = self.indent_level*self.indent_unit
         if t.name == '_':
-            outfile.writelines([indent, t.args[0], '\n'])
-        elif t.name == 'subdir':
-            outfile.writelines([indent, t.args[0], '\n'])
+            line = t.args[0]
+        elif t.name == 'add_subdirectory':
+            line = 'subdir(' + t.args[0].value + ')'
+        elif t.name == 'pkg_search_module' or t.name == 'pkg_search_modules':
+            varname = t.args[0].value.lower()
+            mods = ['dependency(%s)' % i.value for i in t.args[1:]]
+            if len(mods) == 1:
+                line = '%s = %s' % (varname, mods[0])
+            else:
+                line = '%s = [%s]' % (varname, ', '.join(mods))
         else:
-            self.unknown_command(outfile, indent, t)
-
-    def unknown_command(self, outfile, indent, t):
-        outfile.writelines([indent, '# ', t.name, '\n'])
+            line = '''# %s''' % t.name
+        outfile.write(indent)
+        outfile.write(line)
+        if not(line.endswith('\n')):
+            outfile.write('\n')
 
     def convert(self, subdir=''):
         if subdir == '':
@@ -159,22 +169,16 @@ class Converter:
             return
         p = Parser(cmakecode)
         outfile = open(os.path.join(subdir, 'meson.build'), 'w')
-        indent_depth = 0
         for t in p.parse():
-            indent = self.indent_unit*indent_depth
             if t.name == 'add_subdirectory':
                 #print('\nRecursing to subdir', os.path.join(self.cmake_root, t.args[0].value), '\n')
                 self.convert(os.path.join(subdir, t.args[0].value))
                 #print('\nReturning to', self.cmake_root, '\n')
-            self.write_entry(outfile, indent, t)
+            self.write_entry(outfile, t)
 
 if __name__ == '__main__':
     if len(sys.argv) != 2:
         print(sys.argv[0], '<CMake project root>')
         sys.exit(1)
-    try:
-        c = Converter(sys.argv[1])
-        c.convert()
-    except Exception as e:
-        print('Error:', e)
-        sys.exit(1)
+    c = Converter(sys.argv[1])
+    c.convert()
-- 
cgit v1.1