Browse Source
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
2 changed files with 69 additions and 0 deletions
@ -0,0 +1,10 @@
|
||||
project('efl-examples', |
||||
'c', |
||||
version: '1.0' |
||||
) |
||||
|
||||
subprojects = $subprojects |
||||
|
||||
foreach subp : subprojects |
||||
subproject(subp) |
||||
endforeach |
@ -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…
Reference in new issue