You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
307 lines
7.3 KiB
307 lines
7.3 KiB
# Copyright (c) 2020 The Linux Foundation |
|
# |
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
from enum import Enum |
|
|
|
|
|
class Codemodel: |
|
|
|
def __init__(self): |
|
super().__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().__init__() |
|
|
|
self.name = "" |
|
self.directories = [] |
|
self.projects = [] |
|
self.configTargets = [] |
|
|
|
def __repr__(self): |
|
if self.name == "": |
|
return "Config: [no name]" |
|
else: |
|
return f"Config: {self.name}" |
|
|
|
# A member of the configuration.directories array |
|
class ConfigDir: |
|
|
|
def __init__(self): |
|
super().__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().__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().__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().__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().__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().__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().__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().__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().__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().__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().__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().__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().__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().__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}"
|
|
|