307 lines
7.7 KiB
Python
307 lines
7.7 KiB
Python
# 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}"
|