summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcook.py50
1 files changed, 23 insertions, 27 deletions
diff --git a/cook.py b/cook.py
index c42de23..ad5021c 100755
--- a/cook.py
+++ b/cook.py
@@ -93,7 +93,7 @@ class Target(File):
self.inputs = File.resolve(inputs)
# The extra arguments taken
- self.extra_args = extra_args
+ self.extra_args = flatten(extra_args)
def gen_makefile(self):
inputs = " ".join([str(x) for x in self.inputs])
@@ -148,8 +148,8 @@ class Processor(metaclass = ProcessorMeta):
# The description
self.mkdesc = wrap_lambda(mkdesc)
- def __call__(self, name, *args, extra_args = []):
- return self.gen(name, *args, extra_args = extra_args)
+ def __call__(self, *args, **kwargs):
+ return self.gen(*args, **kwargs)
def gen(self, name, *args, extra_args = []):
inputs = File.resolve(args)
@@ -170,27 +170,26 @@ class Processor(metaclass = ProcessorMeta):
return out
class Vec(Processor):
- def __init__(self, name, exe, mkargs, mkout, mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkout = mkout, mkdesc = mkdesc)
+ def __init__(self, *args, mkout, **kwargs):
+ super().__init__(*args, mkout = mkout, **kwargs)
- def __call__(self, *args, extra_args = []):
- return self.gen(*args, extra_args = extra_args)
+ def __call__(self, *args, **kwargs):
+ return self.gen(*args, **kwargs)
- def gen(self, *args, extra_args = []):
+ def gen(self, *args, **kwargs):
args = File.resolve(args)
- extra_args = flatten(extra_args)
targets = []
for i in args:
path = BUILD / i.path.parent / self.mkout(i.path)
- targets.append(Target(path, self, [i], extra_args))
+ targets.append(Target(path, self, [i], **kwargs))
return targets
class CTarget(Target):
- def __init__(self, path, processor, inputs, header_depends, extra_args = []):
- super().__init__(path, processor, inputs, extra_args = extra_args)
+ def __init__(self, *args, header_depends = [], **kwargs):
+ super().__init__(*args, **kwargs)
self.header_depends = File.resolve(header_depends)
def gen_makefile(self):
@@ -203,21 +202,19 @@ class CTarget(Target):
return "".join(out)
class CC(Vec):
- def __init__(self, name, exe, mkargs, mkout, mkinc, mkdep=None, depstyle=None, mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkout, mkdesc=mkdesc)
+ def __init__(self, *args, mkinc, mkdep=None, depstyle=None, **kwargs):
+ super().__init__(*args, **kwargs)
self.mkinc = mkinc
self.mkdep = mkdep
self.depstyle = depstyle
- def __call__(self, *args, extra_args = [], include_dirs = []):
- return self.gen(*args, extra_args = extra_args, include_dirs = include_dirs)
+ def __call__(self, *args, **kwargs):
+ return self.gen(*args, **kwargs)
- def gen(self, *args, extra_args = [], include_dirs = []):
+ def gen(self, *args, extra_args = [], include_dirs = [], **kwargs):
inputs = File.resolve(args)
- extra_args = flatten(extra_args)
include_dirs = File.resolve(include_dirs)
-
include_args = [self.mkinc(str(x)) for x in include_dirs]
extra_args += include_args
@@ -230,7 +227,7 @@ class CC(Vec):
if self.mkdep:
header_depends += [BUILD / self.mkdep(out)]
- targets.append(CTarget(path, self, input, header_depends = header_depends, extra_args = extra_args))
+ targets.append(CTarget(path, self, input, header_depends = header_depends, extra_args = extra_args, **kwargs))
return targets
@@ -252,16 +249,15 @@ class CC(Vec):
return out
class CExe(Processor):
- def __init__(self, name, exe, mkargs, mklib, mkout = DEFMKOUT, mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkout = mkout, mkdesc = mkdesc)
+ def __init__(self, *args, mklib, **kwargs):
+ super().__init__(*args, **kwargs)
self.mklib = mklib
- def __call__(self, name, *args, libs = [], extra_args = []):
- return self.gen(name, *args, libs = libs, extra_args = extra_args)
+ def __call__(self, *args, **kwargs):
+ return self.gen(*args, **kwargs)
- def gen(self, name, *args, libs, extra_args = []):
- extra_args = flatten(extra_args)
+ def gen(self, name, *args, libs=[], extra_args = [], **kwargs):
libs = flatten(libs)
# Note: this is bad, perhaps take a "depends" also/instead
@@ -269,7 +265,7 @@ class CExe(Processor):
libs_args = [self.mklib(lib) for lib in libs]
extra_args += libs_args
- return super().gen(name, *args, extra_args = extra_args)
+ return super().gen(name, *args, extra_args = extra_args, **kwargs)
def CCStyleToolchain(name, gccname, arname, suffix="", c_args=[], ld_args=[]):
ccname = name + suffix