summaryrefslogtreecommitdiffstats
path: root/python/mozbuild/mozbuild/backend/__init__.py
blob: e7097eb6140af0f6a708c5f565dbffa2b40b0ce3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

backends = {
    "Clangd": "mozbuild.backend.clangd",
    "ChromeMap": "mozbuild.codecoverage.chrome_map",
    "CompileDB": "mozbuild.compilation.database",
    "CppEclipse": "mozbuild.backend.cpp_eclipse",
    "FasterMake": "mozbuild.backend.fastermake",
    "FasterMake+RecursiveMake": None,
    "RecursiveMake": "mozbuild.backend.recursivemake",
    "StaticAnalysis": "mozbuild.backend.static_analysis",
    "TestManifest": "mozbuild.backend.test_manifest",
    "VisualStudio": "mozbuild.backend.visualstudio",
}


def get_backend_class(name):
    if "+" in name:
        from mozbuild.backend.base import HybridBackend

        return HybridBackend(*(get_backend_class(name) for name in name.split("+")))

    class_name = "%sBackend" % name
    module = __import__(backends[name], globals(), locals(), [class_name])
    return getattr(module, class_name)