aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-01-14 16:46:37 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-01-15 19:45:23 +0200
commit7abc7c64b08f349a97dce5484d9e12d4e03896e9 (patch)
tree26ab091bc0df3b8a902136ebc828f57a63f39291
parent4aea0276f09130578ed1f1c49e094ab4e0694263 (diff)
downloadmeson-7abc7c64b08f349a97dce5484d9e12d4e03896e9.zip
meson-7abc7c64b08f349a97dce5484d9e12d4e03896e9.tar.gz
meson-7abc7c64b08f349a97dce5484d9e12d4e03896e9.tar.bz2
Created base class for all targets and moved common functionality there.
-rw-r--r--mesonbuild/build.py45
1 files changed, 18 insertions, 27 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 8fa6ada..05595c3 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -252,11 +252,22 @@ class EnvironmentVariables():
env[name] = method(full_env, name, values, kwargs)
return env
-
-class BuildTarget():
- def __init__(self, name, subdir, subproject, is_cross, sources, objects, environment, kwargs):
+class Target:
+ def __init__(self, name, subdir, build_on_all):
self.name = name
self.subdir = subdir
+ self.build_on_all = build_on_all
+
+ def get_basename(self):
+ return self.name
+
+ def get_subdir(self):
+ return self.subdir
+
+
+class BuildTarget(Target):
+ def __init__(self, name, subdir, subproject, is_cross, sources, objects, environment, kwargs):
+ super().__init__(name, subdir, True)
self.subproject = subproject # Can not be calculated from subdir as subproject dirname can be changed per project.
self.is_cross = is_cross
self.is_unity = environment.coredata.get_builtin_option('unity')
@@ -643,9 +654,6 @@ class BuildTarget():
if not isinstance(self.pic, bool):
raise InvalidArguments('Argument pic to static library {!r} must be boolean'.format(self.name))
- def get_subdir(self):
- return self.subdir
-
def get_filename(self):
return self.filename
@@ -672,9 +680,6 @@ class BuildTarget():
transitive_deps += t.get_dependencies()
return transitive_deps
- def get_basename(self):
- return self.name
-
def get_source_subdir(self):
return self.subdir
@@ -1227,7 +1232,7 @@ class SharedModule(SharedLibrary):
raise MesonException('Shared modules must not specify the soversion kwarg.')
super().__init__(name, subdir, subproject, is_cross, sources, objects, environment, kwargs)
-class CustomTarget:
+class CustomTarget(Target):
known_kwargs = {'input': True,
'output': True,
'command': True,
@@ -1241,8 +1246,7 @@ class CustomTarget:
}
def __init__(self, name, subdir, kwargs, absolute_paths=False):
- self.name = name
- self.subdir = subdir
+ super().__init__(name, subdir, False)
self.dependencies = []
self.extra_depends = []
self.depend_files = [] # Files that this target depends on but are not on the command line.
@@ -1366,9 +1370,6 @@ class CustomTarget:
mlog.debug(i)
raise InvalidArguments('Unknown type {!r} in depend_files.'.format(type(i).__name__))
- def get_basename(self):
- return self.name
-
def get_dependencies(self):
return self.dependencies
@@ -1378,9 +1379,6 @@ class CustomTarget:
def get_custom_install_dir(self):
return self.install_dir
- def get_subdir(self):
- return self.subdir
-
def get_outputs(self):
return self.output
@@ -1396,13 +1394,12 @@ class CustomTarget:
def type_suffix(self):
return "@cus"
-class RunTarget:
+class RunTarget(Target):
def __init__(self, name, command, args, dependencies, subdir):
- self.name = name
+ super().__init__(name, subdir, False)
self.command = command
self.args = args
self.dependencies = dependencies
- self.subdir = subdir
def __repr__(self):
repr_str = "<{0} {1}: {2}>"
@@ -1411,9 +1408,6 @@ class RunTarget:
def get_id(self):
return self.name + self.type_suffix()
- def get_basename(self):
- return self.name
-
def get_dependencies(self):
return self.dependencies
@@ -1423,9 +1417,6 @@ class RunTarget:
def get_sources(self):
return []
- def get_subdir(self):
- return self.subdir
-
def should_install(self):
return False