diff options
Diffstat (limited to 'cook.py')
| -rwxr-xr-x | cook.py | 18 |
1 files changed, 4 insertions, 14 deletions
@@ -247,15 +247,11 @@ class CC(Vec): return out class CExe(Processor): - def __init__(self, name, exe, mkargs, mklib, mkextra = [], mkout = DEFMKOUT, mkdesc=DEFMKDESC): + def __init__(self, name, exe, mkargs, mklib, mkout = DEFMKOUT, mkdesc=DEFMKDESC): 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) @@ -268,9 +264,6 @@ 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=[]): @@ -370,13 +363,10 @@ def MSVCToolchain(suffix="", c_args=[], ld_args=[]): shlib = CExe( name=shlibname, exe=cl, - mkargs=lambda o, i, ea: "/D_USRDLL /D_WINDLL %s /MT /link /DLL %s %s" % (i, ld_args, ea), - mklib=lambda l: "", # TODO: make this not needed + mkargs=lambda o, i, ea: "/D_USRDLL /D_WINDLL %s /MT /link /DLL /OUT:%s.dll /IMPLIB:%s %s %s" % (i, o, o, ld_args, ea), + mklib=lambda l: "", # TODO: make this not needed, or perhaps yes by adding .lib but this seems weird mkdesc=lambda o, i, cmd: "SO %s" % (o), - mkout=lambda n: "%s.lib" % (n), - # XXX: TODO: mkextra is very bad, do this properly - # perhaps, by specializing CTarget or injecting data into it - mkextra=[lambda n: "/OUT:" + str(BUILD / CWD / ("%s.dll" % (n)))] + mkout=lambda n: "%s.lib" % (n) ) return cc, exe, lib, shlib |
