Browse Source

here comes a helper script

run python3 ./setup.py in the root directory, this will create a
meson.build and a directory called subdirectry.

You can now simply use the meson.build script as "main" project, all
other projects will be build in this.
devs/bu5hm4n/examples
Marcel Hollerbach 4 years ago
parent
commit
8a4df21de8
  1. 10
      meson.build.in
  2. 59
      setup.py

10
meson.build.in

@ -0,0 +1,10 @@
project('efl-examples',
'c',
version: '1.0'
)
subprojects = $subprojects
foreach subp : subprojects
subproject(subp)
endforeach

59
setup.py

@ -0,0 +1,59 @@
#!/usr/bin/python3
import os
from string import Template
supported_languages = ["c", "csharp", "cxx"]
directories = ["apps", "reference", "tutorial"] # "examples", "legacy-examples"
goals = []
subprojects = []
class SubProjectGoal:
def __init__(self, language, path):
self.language = language
self.path = path
def verify(self):
assert os.path.isdir(self.path)
assert os.path.isfile(os.path.join(self.path, 'meson.build'))
def flush(self):
os.symlink(os.path.join('..', self.path), os.path.realpath(os.path.join('subprojects', self.link_file_name())))
def link_file_name(self):
return self.language+'-'+os.path.basename(self.path)
for directory in directories:
for lang in supported_languages:
explore_dir = os.path.join(directory, lang)
if os.path.isdir(explore_dir):
meson_build_file = os.path.join(explore_dir, "meson.build")
if os.path.isfile(meson_build_file):
goals.append(SubProjectGoal(lang, explore_dir))
else:
for content in os.listdir(explore_dir):
sub = os.path.join(explore_dir, content)
if os.path.isdir(sub):
goals.append(SubProjectGoal(lang, sub))
if not os.path.isdir('./subprojects'):
os.mkdir('./subprojects')
else:
for content in os.listdir('./subprojects'):
os.unlink(os.path.join('subprojects', content))
for subproject in goals:
subproject.verify()
subproject.flush()
subprojects.append(subproject.link_file_name())
content = { 'subprojects' : '[\''+'\',\''.join(subprojects)+'\']'}
meson_in = open('meson.build.in')
meson_temp = Template(meson_in.read())
content = meson_temp.substitute(content)
if os.path.isfile('meson.build'):
os.unlink('meson.build')
meson_out = open('meson.build', 'a')
meson_out.write(content)
Loading…
Cancel
Save