summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Sior <aho@sior.be>2022-08-06 21:34:44 +0200
committerAlejandro Sior <aho@sior.be>2022-08-06 21:34:44 +0200
commitd98a704dabccec1b4eb11eb35ddc1a57acb57811 (patch)
treef3dcffc3199d7ebed4ca0873b1d8151e0d8c1618
parenta448a31cab64ab684a79bb179de7a859f8f9da1a (diff)
cook: restrict the mkextra hack to CExe
-rwxr-xr-xcook.py40
1 files changed, 14 insertions, 26 deletions
diff --git a/cook.py b/cook.py
index ec3aee0..542d4d9 100755
--- a/cook.py
+++ b/cook.py
@@ -127,7 +127,7 @@ class ProcessorMeta(type):
class Processor(metaclass = ProcessorMeta):
mdb = dict()
- def __init__(self, name, exe, mkargs, mkextra=[], mkout=DEFMKOUT, mkdesc=DEFMKDESC):
+ def __init__(self, name, exe, mkargs, mkout=DEFMKOUT, mkdesc=DEFMKDESC):
# The name of the processor
self.name = name
@@ -137,10 +137,6 @@ class Processor(metaclass = ProcessorMeta):
# The arguments that is used to launch the process
self.mkargs = wrap_lambda(mkargs)
- # A list of functions indicating how to build extra arguments
- # XXX: TODO: mkextra is a horrible hack
- self.mkextra = mkextra
-
# The way to generate output path
self.mkout = wrap_lambda(mkout)
@@ -154,11 +150,6 @@ class Processor(metaclass = ProcessorMeta):
inputs = File.resolve(args)
path = BUILD / Path(".").resolve().relative_to(ROOT) / self.mkout(name)
- # XXX: consider passing the arrays of files to handlers directly
- i = " ".join([str(inp) for inp in inputs])
- for mk in self.mkextra:
- extra_args += [mk(name)]
-
return Target(path, self, inputs, extra_args)
def gen_makefile(self):
@@ -174,8 +165,8 @@ class Processor(metaclass = ProcessorMeta):
return out
class Vec(Processor):
- def __init__(self, name, exe, mkargs, mkout, mkextra=[], mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkextra = mkextra, mkout = mkout, mkdesc = mkdesc)
+ def __init__(self, name, exe, mkargs, mkout, mkdesc=DEFMKDESC):
+ super().__init__(name, exe, mkargs, mkout = mkout, mkdesc = mkdesc)
def __call__(self, *args, extra_args = []):
return self.gen(*args, extra_args = extra_args)
@@ -187,11 +178,6 @@ class Vec(Processor):
targets = []
for i in args:
path = BUILD / i.path.parent / self.mkout(i.path)
- extra_p = extra_args
-
- # XXX: consider passing the i File directly to mk
- for mk in self.mkextra:
- extra_p += [mk(path)]
targets.append(Target(path, self, [i], extra_args))
@@ -212,8 +198,8 @@ class CTarget(Target):
return "".join(out)
class CC(Vec):
- def __init__(self, name, exe, mkargs, mkout, mkinc, mkextra=[], mkdep=None, depstyle=None, mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkout, mkextra=mkextra, mkdesc=mkdesc)
+ def __init__(self, name, exe, mkargs, mkout, mkinc, mkdep=None, depstyle=None, mkdesc=DEFMKDESC):
+ super().__init__(name, exe, mkargs, mkout, mkdesc=mkdesc)
self.mkinc = mkinc
self.mkdep = mkdep
self.depstyle = depstyle
@@ -239,12 +225,7 @@ class CC(Vec):
if self.mkdep:
hdep += BUILD / self.mkdep(out)
- extra_p = extra_args
- # XXX: consider passing the i File directly to mk
- for mk in self.mkextra:
- extra_p += [mk(path)]
-
- targets.append(CTarget(path, self, input, header_depends = header_depends, extra_args = extra_p))
+ targets.append(CTarget(path, self, input, header_depends = header_depends, extra_args = extra_args))
return targets
@@ -267,10 +248,14 @@ class CC(Vec):
class CExe(Processor):
def __init__(self, name, exe, mkargs, mklib, mkextra = [], mkout = DEFMKOUT, mkdesc=DEFMKDESC):
- super().__init__(name, exe, mkargs, mkextra = mkextra, mkout = mkout, mkdesc = mkdesc)
+ super().__init__(name, exe, mkargs, mkout = mkout, mkdesc = mkdesc)
self.mklib = mklib
+ # A list of functions indicating how to build extra arguments
+ # XXX: TODO: mkextra is a horrible hack
+ self.mkextra = mkextra
+
def __call__(self, name, *args, libs = [], extra_args = []):
return self.gen(name, *args, libs = libs, extra_args = extra_args)
@@ -283,6 +268,9 @@ class CExe(Processor):
libs_args = [self.mklib(lib) for lib in libs]
extra_args += libs_args
+ for mk in self.mkextra:
+ extra_args += [mk(name)]
+
return super().gen(name, *args, extra_args = extra_args)
def CCStyleToolchain(name, gccname, arname, suffix="", c_args=[], ld_args=[]):