aboutsummaryrefslogtreecommitdiff
path: root/tools/autotools2meson.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/autotools2meson.py')
-rwxr-xr-xtools/autotools2meson.py122
1 files changed, 0 insertions, 122 deletions
diff --git a/tools/autotools2meson.py b/tools/autotools2meson.py
deleted file mode 100755
index 1ec1348..0000000
--- a/tools/autotools2meson.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2014 Jussi Pakkanen
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import sys, os, re
-
-class Converter():
- def __init__(self, root):
- self.project_root = root
-
- def readlines(self, file, continuator):
- line = file.readline()
- while line != '':
- line = line.rstrip()
- while line.endswith(continuator):
- line = line[:-1] + file.readline().rstrip()
- yield line
- line = file.readline()
-
- def convert(self, subdir=None):
- if subdir is None:
- subdir = self.project_root
- try:
- ifile = open(os.path.join(subdir, 'Makefile.am'))
- except FileNotFoundError:
- print('Makefile.am not found in subdir', subdir)
- return
- ofile = open(os.path.join(subdir, 'meson.build'), 'w')
- if subdir == self.project_root:
- self.process_autoconf(ofile, subdir)
- for line in self.readlines(ifile, '\\'):
- items = line.strip().split()
- if len(items) == 0:
- ofile.write('\n')
- continue
- if items[0] == 'SUBDIRS':
- for i in items[2:]:
- if i != '.':
- ofile.write("subdir('%s')\n" % i)
- self.convert(os.path.join(subdir, i))
- elif items[0].endswith('_SOURCES'):
- self.convert_target(ofile, items)
- else:
- ofile.write("# %s\n" % line)
-
- def convert_target(self, ofile, items):
- if items[0].endswith('la_SOURCES'):
- func = 'shared_library'
- tname = "'%s'" % items[0][:-11]
- elif items[0].endswith('a_SOURCES'):
- func = 'static_library'
- tname = "'%s'" % items[0][:-10]
- else:
- func = 'executable'
- tname = "'%s'" % items[0][:-8]
- sources = [tname]
- for s in items[2:]:
- if s.startswith('$(') and s.endswith(')'):
- s = s[2:-1]
- else:
- s = "'%s'" % s
- sources.append(s)
- ofile.write('%s(%s)\n' % (func, ',\n'.join(sources)))
-
- def process_autoconf(self, ofile, subdir):
- ifile = open(os.path.join(subdir, 'configure.ac'))
- languages = []
- name = 'undetected'
- outlines = []
- for line in self.readlines(ifile, ','):
- line = line.strip()
- if line == 'AC_PROG_CC':
- languages.append("'c'")
- elif line == 'AC_PROG_CXX':
- languages.append("'cpp'")
- elif line.startswith('AC_INIT'):
- line = line[8:]
- if line[0] == '[':
- name = line.split(']')[0][1:]
- else:
- name = line.split()[0]
- elif line.startswith('#'):
- outlines.append(line + '\n')
- elif line.startswith('PKG_CHECK_MODULES'):
- rest = line.split('(', 1)[-1].strip()
- pkgstanza = rest.split()[1:]
- for i in pkgstanza:
- i = i.strip()
- dep = None
- if '=' in i:
- continue
- if i.startswith('['):
- dep = i[1:]
- elif re.match('[a-zA-Z]', i):
- dep = i
- if dep is not None:
- outlines.append("%s_dep = dependency('%s')\n" % (dep, dep))
- else:
- outlines.append('# %s\n' % line)
- ofile.write("project(%s)\n" % ', '.join(["'%s'" % name] + languages))
- ofile.writelines(outlines)
-
-
-if __name__ == '__main__':
- if len(sys.argv) != 2:
- print(sys.argv[0], '<Autotools project root>')
- sys.exit(1)
- c = Converter(sys.argv[1])
- c.convert()