diff --git a/meson.build.in b/meson.build.in new file mode 100644 index 00000000..48aedf3d --- /dev/null +++ b/meson.build.in @@ -0,0 +1,10 @@ +project('efl-examples', + 'c', + version: '1.0' +) + +subprojects = $subprojects + +foreach subp : subprojects + subproject(subp) +endforeach diff --git a/setup.py b/setup.py new file mode 100755 index 00000000..11b1df0b --- /dev/null +++ b/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)