summaryrefslogtreecommitdiff
path: root/cook.py
diff options
context:
space:
mode:
authorAlejandro Sior <aho@sior.be>2022-08-07 13:10:31 +0200
committerAlejandro Sior <aho@sior.be>2022-08-07 13:10:31 +0200
commit15d0899caddfbd711d841d182b850a2b26c51e53 (patch)
treebc8a7642422911ec7abb2c025010fdb7c127debf /cook.py
parent5a11f2675177074db05965e366196166943ed725 (diff)
cook: (temporary) communicate includes
Diffstat (limited to 'cook.py')
-rwxr-xr-xcook.py36
1 files changed, 19 insertions, 17 deletions
diff --git a/cook.py b/cook.py
index b3f4622..e7e402b 100755
--- a/cook.py
+++ b/cook.py
@@ -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()