| # Copyright (c) 2020 The Linux Foundation |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| from enum import Enum |
| |
| class Codemodel: |
| |
| def __init__(self): |
| super(Codemodel, self).__init__() |
| |
| self.paths_source = "" |
| self.paths_build = "" |
| self.configurations = [] |
| |
| def __repr__(self): |
| return f"Codemodel: source {self.paths_source}, build {self.paths_build}" |
| |
| # A member of the codemodel configurations array |
| class Config: |
| |
| def __init__(self): |
| super(Config, self).__init__() |
| |
| self.name = "" |
| self.directories = [] |
| self.projects = [] |
| self.configTargets = [] |
| |
| def __repr__(self): |
| if self.name == "": |
| return f"Config: [no name]" |
| else: |
| return f"Config: {self.name}" |
| |
| # A member of the configuration.directories array |
| class ConfigDir: |
| |
| def __init__(self): |
| super(ConfigDir, self).__init__() |
| |
| self.source = "" |
| self.build = "" |
| self.parentIndex = -1 |
| self.childIndexes = [] |
| self.projectIndex = -1 |
| self.targetIndexes = [] |
| self.minimumCMakeVersion = "" |
| self.hasInstallRule = False |
| |
| # actual items, calculated from indices after loading |
| self.parent = None |
| self.children = [] |
| self.project = None |
| self.targets = [] |
| |
| def __repr__(self): |
| return f"ConfigDir: source {self.source}, build {self.build}" |
| |
| # A member of the configuration.projects array |
| class ConfigProject: |
| |
| def __init__(self): |
| super(ConfigProject, self).__init__() |
| |
| self.name = "" |
| self.parentIndex = -1 |
| self.childIndexes = [] |
| self.directoryIndexes = [] |
| self.targetIndexes = [] |
| |
| # actual items, calculated from indices after loading |
| self.parent = None |
| self.children = [] |
| self.directories = [] |
| self.targets = [] |
| |
| def __repr__(self): |
| return f"ConfigProject: {self.name}" |
| |
| # A member of the configuration.configTargets array |
| class ConfigTarget: |
| |
| def __init__(self): |
| super(ConfigTarget, self).__init__() |
| |
| self.name = "" |
| self.id = "" |
| self.directoryIndex = -1 |
| self.projectIndex = -1 |
| self.jsonFile = "" |
| |
| # actual target data, loaded from self.jsonFile |
| self.target = None |
| |
| # actual items, calculated from indices after loading |
| self.directory = None |
| self.project = None |
| |
| def __repr__(self): |
| return f"ConfigTarget: {self.name}" |
| |
| # The available values for Target.type |
| class TargetType(Enum): |
| UNKNOWN = 0 |
| EXECUTABLE = 1 |
| STATIC_LIBRARY = 2 |
| SHARED_LIBRARY = 3 |
| MODULE_LIBRARY = 4 |
| OBJECT_LIBRARY = 5 |
| UTILITY = 6 |
| |
| # A member of the target.install_destinations array |
| class TargetInstallDestination: |
| |
| def __init__(self): |
| super(TargetInstallDestination, self).__init__() |
| |
| self.path = "" |
| self.backtrace = -1 |
| |
| def __repr__(self): |
| return f"TargetInstallDestination: {self.path}" |
| |
| # A member of the target.link_commandFragments and |
| # archive_commandFragments array |
| class TargetCommandFragment: |
| |
| def __init__(self): |
| super(TargetCommandFragment, self).__init__() |
| |
| self.fragment = "" |
| self.role = "" |
| |
| def __repr__(self): |
| return f"TargetCommandFragment: {self.fragment}" |
| |
| # A member of the target.dependencies array |
| class TargetDependency: |
| |
| def __init__(self): |
| super(TargetDependency, self).__init__() |
| |
| self.id = "" |
| self.backtrace = -1 |
| |
| def __repr__(self): |
| return f"TargetDependency: {self.id}" |
| |
| # A member of the target.sources array |
| class TargetSource: |
| |
| def __init__(self): |
| super(TargetSource, self).__init__() |
| |
| self.path = "" |
| self.compileGroupIndex = -1 |
| self.sourceGroupIndex = -1 |
| self.isGenerated = False |
| self.backtrace = -1 |
| |
| # actual items, calculated from indices after loading |
| self.compileGroup = None |
| self.sourceGroup = None |
| |
| def __repr__(self): |
| return f"TargetSource: {self.path}" |
| |
| # A member of the target.sourceGroups array |
| class TargetSourceGroup: |
| |
| def __init__(self): |
| super(TargetSourceGroup, self).__init__() |
| |
| self.name = "" |
| self.sourceIndexes = [] |
| |
| # actual items, calculated from indices after loading |
| self.sources = [] |
| |
| def __repr__(self): |
| return f"TargetSourceGroup: {self.name}" |
| |
| # A member of the target.compileGroups.includes array |
| class TargetCompileGroupInclude: |
| |
| def __init__(self): |
| super(TargetCompileGroupInclude, self).__init__() |
| |
| self.path = "" |
| self.isSystem = False |
| self.backtrace = -1 |
| |
| def __repr__(self): |
| return f"TargetCompileGroupInclude: {self.path}" |
| |
| # A member of the target.compileGroups.precompileHeaders array |
| class TargetCompileGroupPrecompileHeader: |
| |
| def __init__(self): |
| super(TargetCompileGroupPrecompileHeader, self).__init__() |
| |
| self.header = "" |
| self.backtrace = -1 |
| |
| def __repr__(self): |
| return f"TargetCompileGroupPrecompileHeader: {self.header}" |
| |
| # A member of the target.compileGroups.defines array |
| class TargetCompileGroupDefine: |
| |
| def __init__(self): |
| super(TargetCompileGroupDefine, self).__init__() |
| |
| self.define = "" |
| self.backtrace = -1 |
| |
| def __repr__(self): |
| return f"TargetCompileGroupDefine: {self.define}" |
| |
| # A member of the target.compileGroups array |
| class TargetCompileGroup: |
| |
| def __init__(self): |
| super(TargetCompileGroup, self).__init__() |
| |
| self.sourceIndexes = [] |
| self.language = "" |
| self.compileCommandFragments = [] |
| self.includes = [] |
| self.precompileHeaders = [] |
| self.defines = [] |
| self.sysroot = "" |
| |
| # actual items, calculated from indices after loading |
| self.sources = [] |
| |
| def __repr__(self): |
| return f"TargetCompileGroup: {self.sources}" |
| |
| # A member of the target.backtraceGraph_nodes array |
| class TargetBacktraceGraphNode: |
| |
| def __init__(self): |
| super(TargetBacktraceGraphNode, self).__init__() |
| |
| self.file = -1 |
| self.line = -1 |
| self.command = -1 |
| self.parent = -1 |
| |
| def __repr__(self): |
| return f"TargetBacktraceGraphNode: {self.command}" |
| |
| # Actual data in config.target.target, loaded from |
| # config.target.jsonFile |
| class Target: |
| |
| def __init__(self): |
| super(Target, self).__init__() |
| |
| self.name = "" |
| self.id = "" |
| self.type = TargetType.UNKNOWN |
| self.backtrace = -1 |
| self.folder = "" |
| self.paths_source = "" |
| self.paths_build = "" |
| self.nameOnDisk = "" |
| self.artifacts = [] |
| self.isGeneratorProvided = False |
| |
| # only if install rule is present |
| self.install_prefix = "" |
| self.install_destinations = [] |
| |
| # only for executables and shared library targets that link into |
| # a runtime binary |
| self.link_language = "" |
| self.link_commandFragments = [] |
| self.link_lto = False |
| self.link_sysroot = "" |
| |
| # only for static library targets |
| self.archive_commandFragments = [] |
| self.archive_lto = False |
| |
| # only if the target depends on other targets |
| self.dependencies = [] |
| |
| # corresponds to target's source files |
| self.sources = [] |
| |
| # only if sources are grouped together by source_group() or by default |
| self.sourceGroups = [] |
| |
| # only if target has sources that compile |
| self.compileGroups = [] |
| |
| # graph of backtraces referenced from elsewhere |
| self.backtraceGraph_nodes = [] |
| self.backtraceGraph_commands = [] |
| self.backtraceGraph_files = [] |
| |
| def __repr__(self): |
| return f"Target: {self.name}" |