summaryrefslogtreecommitdiff
path: root/cook.py
diff options
context:
space:
mode:
Diffstat (limited to 'cook.py')
-rwxr-xr-xcook.py28
1 files 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