# 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)
