diff options
| author | Alejandro Sior <aho@sior.be> | 2022-08-07 13:10:31 +0200 |
|---|---|---|
| committer | Alejandro Sior <aho@sior.be> | 2022-08-07 13:10:31 +0200 |
| commit | 15d0899caddfbd711d841d182b850a2b26c51e53 (patch) | |
| tree | bc8a7642422911ec7abb2c025010fdb7c127debf | |
| parent | 5a11f2675177074db05965e366196166943ed725 (diff) | |
cook: (temporary) communicate includes
| -rwxr-xr-x | cook.py | 36 | ||||
| -rw-r--r-- | test/.build | 2 |
2 files changed, 20 insertions, 18 deletions
@@ -295,7 +295,7 @@ def CCStyleToolchain(name, gccname, arname, suffix="", c_args=[], ld_args=[]): exe = CExe( name=exename, exe=gcc, - mkargs=lambda o, i, ea: "-o %s %s %s %s" % (o, i, ld_args, ea), + mkargs=lambda o, i, ea: "-o %s -Wl,--start-group %s -Wl,--end-group %s %s" % (o, i, ld_args, ea), mklib=lambda l: "-l" + l, mkdesc=lambda o, i, cmd: "LD %s" % (o) ) @@ -310,7 +310,7 @@ def CCStyleToolchain(name, gccname, arname, suffix="", c_args=[], ld_args=[]): shlib = CExe( name=shlibname, exe=gcc, - mkargs=lambda o, i, ea: "-o %s %s %s -fPIC --shared %s" % (o, i, ld_args, ea), + mkargs=lambda o, i, ea: "-o %s -Wl,--start-group %s -Wl,--end-group %s -fPIC --shared %s" % (o, i, ld_args, ea), mklib=lambda l: "-l" + l, mkdesc=lambda o, i, cmd: "SO %s" % (o), mkout=lambda n: "lib%s.so" % (n) @@ -427,11 +427,11 @@ class CModule: self.submodules = dict() self.objects = [] self.includes = [] - self.links = [] self.shared_includes = [] - self.shared_links = [] - self.ld_args = [] - self.cc_args = [] + self.shared_libs = [] + self.bcast_includes = [] + self.shared_ld_args = [] + self.shared_cc_args = [] pass def eval(self): @@ -451,12 +451,17 @@ class CModule: root = None mod = CModule(name, cc, exe, lib, shlib, root) + #if root == None: + # pass + # XXX: FIX this "if", temporary and put this elsewhere + mod.includes += self.bcast_includes mod.eval() # Perhaps store everything the object created prev.objects += [mod.lib(name, mod.objects)] prev.shared_includes += mod.shared_includes - prev.shared_links += mod.shared_links + prev.shared_libs += mod.shared_libs + prev.bcast_includes += mod.bcast_includes mod, prev = prev, mod @@ -466,20 +471,17 @@ class CModule: def src(self, *args, extra_args = [], include_dirs = []): - obj = self.cc(*args, extra_args = [extra_args, self.cc_args], include_dirs = [include_dirs, self.shared_includes]) + obj = self.cc(*args, extra_args = [extra_args, self.shared_cc_args], include_dirs = [include_dirs, self.includes, self.bcast_includes, self.shared_includes]) self.objects += obj - def mkdep(self, include_dirs = [], libs = [], ld_args = []): - include_dirs = flatten(include_dirs) - libs = flatten(libs) - ld_args = flatten(ld_args) - - self.ld_args += ld_args - self.shared_includes += include_dirs - self.shared_links += libs + def mkdep(self, shared_includes = [], shared_libs = [], bcast_includes = [], shared_ld_args = []): + self.shared_includes += flatten(shared_includes) + self.shared_libs += flatten(shared_libs) + self.shared_ld_args += flatten(shared_ld_args) + self.bcast_includes += flatten(bcast_includes) def mkexe(self, name, extra_args = [], libs = []): - self.exes[name] = self.exe(name, self.objects, extra_args = [extra_args, self.ld_args], libs = [libs, self.shared_links]) + self.exes[name] = self.exe(name, self.objects, extra_args = [extra_args, self.shared_ld_args], libs = [libs, self.shared_libs]) return self.exes[name] cc, exe, lib, shlib = CToolchain() diff --git a/test/.build b/test/.build index 1faa6e9..b76f85b 100644 --- a/test/.build +++ b/test/.build @@ -1,2 +1,2 @@ mod.src("main.c", "hai.c") -mod.mkdep(libs = ["Mrm", "Uil", "Xm", "Xt"])
\ No newline at end of file +mod.mkdep(shared_libs = ["Mrm", "Uil", "Xm", "Xt"])
\ No newline at end of file |
