aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend/backends.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-01-01 19:27:41 +0200
committerGitHub <noreply@github.com>2019-01-01 19:27:41 +0200
commit8c9fcb1feac8ef7e4064ede9035f76ad53dc8e09 (patch)
tree5fc28dbf7d81db0ba1072ffe32737ff9138d1bb6 /mesonbuild/backend/backends.py
parent739341ec045a42892b454f59f76515f73c2a8759 (diff)
parent98115bb26150866f5b44b744b4b4dbadd37117ba (diff)
downloadmeson-8c9fcb1feac8ef7e4064ede9035f76ad53dc8e09.zip
meson-8c9fcb1feac8ef7e4064ede9035f76ad53dc8e09.tar.gz
meson-8c9fcb1feac8ef7e4064ede9035f76ad53dc8e09.tar.bz2
Merge pull request #4564 from mensinda/introBuildOpts
mintro: Introspect --buildoptions without a build directory
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r--mesonbuild/backend/backends.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 4040251..e8adc99 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -124,10 +124,35 @@ class OptionOverrideProxy:
return OptionProxy(base_opt.name, base_opt.validate_value(self.overrides[option_name]))
return base_opt
+def get_backend_from_name(backend, build):
+ if backend == 'ninja':
+ from . import ninjabackend
+ return ninjabackend.NinjaBackend(build)
+ elif backend == 'vs':
+ from . import vs2010backend
+ return vs2010backend.autodetect_vs_version(build)
+ elif backend == 'vs2010':
+ from . import vs2010backend
+ return vs2010backend.Vs2010Backend(build)
+ elif backend == 'vs2015':
+ from . import vs2015backend
+ return vs2015backend.Vs2015Backend(build)
+ elif backend == 'vs2017':
+ from . import vs2017backend
+ return vs2017backend.Vs2017Backend(build)
+ elif backend == 'xcode':
+ from . import xcodebackend
+ return xcodebackend.XCodeBackend(build)
+ return None
+
# This class contains the basic functionality that is needed by all backends.
# Feel free to move stuff in and out of it as you see fit.
class Backend:
def __init__(self, build):
+ # Make it possible to construct a dummy backend
+ # This is used for introspection without a build directory
+ if build is None:
+ return
self.build = build
self.environment = build.environment
self.processed_targets = {}