From a97136978520d8a8f1b113eed9567459440ebae4 Mon Sep 17 00:00:00 2001 From: Alejandro Sior Date: Fri, 5 Aug 2022 11:42:50 +0200 Subject: cook: exceptions when invalid header dependencies specified --- cook.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/cook.py b/cook.py index 784c38b..9a0d66d 100755 --- a/cook.py +++ b/cook.py @@ -32,15 +32,19 @@ C_COMPILERS = { mkout=lambda i: i.name + ".o", mkinc=lambda i: "-I" + i, mkdep=lambda o: "%s.d" % (o), + depstyle="gcc", desc=lambda o, i, cmd: "CC %s" % (o), ), 'clang': lambda: CC( "clang", find_program("clang"), lambda o, i, ea: "-MD -MF %s.d -o %s -c %s %s" % (o, i, ea), - lambda i: i.name + ".o", - lambda i: "-I" + i, - lambda o, i, cmd: "CC %s" % (o) + mkargs=lambda o, i, ea: "-MD -MF %s.d -o %s -c %s %s" % (o, o, i, ea), + mkout=lambda i: i.name + ".o", + mkinc=lambda i: "-I" + i, + mkdep=lambda o: "%s.d" % (o), + depstyle="gcc", + desc=lambda o, i, cmd: "CC %s" % (o), ) } @@ -220,10 +224,11 @@ class Vec(Machine): return procs class CC(Vec): - def __init__(self, name, exe, mkargs, mkout, mkinc, mkdep=None, desc=DEFDESC): + def __init__(self, name, exe, mkargs, mkout, mkinc, mkdep=None, depstyle=None, desc=DEFDESC): super().__init__(name, exe, mkargs, mkout, desc=desc) 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) @@ -240,15 +245,22 @@ class CC(Vec): def gen_ninja(self): out = super().gen_ninja() - if self.mkdep: + if self.mkdep and self.depstyle == "gcc": + out += " deps = gcc\n" out += " depfile = %s\n" % (self.mkdep("$out")) + elif self.mkdep: + raise Exception("ninja dependencies for selected depstyle is unimplemented") return out def gen_proc_makefile(self, proc): - out = "-include %s\n" % self.mkdep(proc.path) - - out += super().gen_proc_makefile(proc) + out = super().gen_proc_makefile(proc) + out += "\n" + + if self.mkdep and self.depstyle == "gcc": + out += "-include %s\n" % self.mkdep(proc.path) + elif self.mkdep: + raise Exception("makefile dependencies for selected depstyle is unimplemented") return out -- cgit v1.2.3