aboutsummaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'build.py')
-rw-r--r--build.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/build.py b/build.py
index e95020d..7b5e513 100644
--- a/build.py
+++ b/build.py
@@ -91,11 +91,12 @@ class IncludeDirs():
return self.incdirs
class BuildTarget():
- def __init__(self, name, subdir, is_cross, sources, environment, kwargs):
+ def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs):
self.name = name
self.subdir = subdir
self.is_cross = is_cross
self.sources = []
+ self.objects = []
self.external_deps = []
self.include_dirs = []
self.link_targets = []
@@ -105,10 +106,19 @@ class BuildTarget():
self.extra_args = {}
self.generated = []
self.process_sourcelist(sources)
+ self.process_objectlist(objects)
self.process_kwargs(kwargs)
if len(self.sources) == 0 and len(self.generated) == 0:
raise InvalidArguments('Build target %s has no sources.' % name)
+ def process_objectlist(self, objects):
+ assert(isinstance(objects, list))
+ for s in objects:
+ if isinstance(s, str):
+ self.objects.append(s)
+ else:
+ raise InvalidArguments('Bad object in target %s.' % self.name)
+
def process_sourcelist(self, sources):
if not isinstance(sources, list):
sources = [sources]
@@ -215,6 +225,9 @@ class BuildTarget():
def get_sources(self):
return self.sources
+ def get_objects(self):
+ return self.objects
+
def get_generated_sources(self):
return self.generated
@@ -386,8 +399,8 @@ class GeneratedList():
return self.generator
class Executable(BuildTarget):
- def __init__(self, name, subdir, is_cross, sources, environment, kwargs):
- super().__init__(name, subdir, is_cross, sources, environment, kwargs)
+ def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs):
+ super().__init__(name, subdir, is_cross, sources, objects, environment, kwargs)
suffix = environment.get_exe_suffix()
if suffix != '':
self.filename = self.name + '.' + suffix
@@ -396,14 +409,14 @@ class Executable(BuildTarget):
class StaticLibrary(BuildTarget):
- def __init__(self, name, subdir, is_cross, sources, environment, kwargs):
- super().__init__(name, subdir, is_cross, sources, environment, kwargs)
+ def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs):
+ super().__init__(name, subdir, is_cross, sources, objects, environment, kwargs)
prefix = environment.get_static_lib_prefix()
suffix = environment.get_static_lib_suffix()
self.filename = prefix + self.name + '.' + suffix
class SharedLibrary(BuildTarget):
- def __init__(self, name, subdir, is_cross, sources, environment, kwargs):
+ def __init__(self, name, subdir, is_cross, sources, objects, environment, kwargs):
self.version = None
self.soversion = None
super().__init__(name, subdir, is_cross, sources, environment, kwargs);