38f97fb85b
Rather than doing everything in tedious if blocks written in any order, I instead resolve dependencies using a much simpler loop. At the moment each module only depends on a single other module, so this will have to be extended if I ever need multiple-dependency resolution. Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
57 lines
1.1 KiB
Python
57 lines
1.1 KiB
Python
#!/usr/bin/python
|
|
Import("env", "CONFIG")
|
|
|
|
class Module:
|
|
def __init__(self, source = None, package = "", depends = ""):
|
|
self.depends = depends
|
|
self.package = package
|
|
self.source = source
|
|
|
|
|
|
modules = {
|
|
###########################
|
|
# #
|
|
# Define new modules here #
|
|
# #
|
|
###########################
|
|
|
|
"DATABASE" : Module("database.cpp", depends = "FILE"),
|
|
"FILE" : Module("file.cpp", package = "glib-2.0"),
|
|
"FILTER" : Module("filter.cpp", depends = "INDEX"),
|
|
"GROUP" : Module("group.cpp", depends = "INDEX"),
|
|
"IDLE" : Module("idle.cpp"),
|
|
"INDEX" : Module("index.cpp", depends = "FILE"),
|
|
|
|
###########################
|
|
###########################
|
|
}
|
|
|
|
|
|
build = []
|
|
enabled = []
|
|
|
|
def resolve(name):
|
|
CONFIG.__dict__[name] = True
|
|
mod = modules[name]
|
|
|
|
if mod.package != "":
|
|
CONFIG.package(mod.package)
|
|
|
|
res = [ env.Object(mod.source) ]
|
|
if CONFIG.__dict__.get(mod.depends) == False:
|
|
res += resolve(mod.depends)
|
|
|
|
return res
|
|
|
|
|
|
|
|
for key in modules.keys():
|
|
if CONFIG.__dict__[key] == True:
|
|
enabled += [key]
|
|
|
|
for mod in enabled:
|
|
build += resolve(mod)
|
|
|
|
|
|
Return("build")
|