FileAPI: Add symbolic property to targets

This commit is contained in:
Taylor Sasser
2025-10-02 10:46:16 -04:00
parent d92b6c3e20
commit 62a1d3e7f1
80 changed files with 292 additions and 5 deletions
+9
View File
@@ -1134,6 +1134,15 @@ with members:
This field was added in codemodel version 2.9. Abstract targets were not
included in codemodel version 2.8 and earlier.
``symbolic``
Optional member that is present with boolean value ``true`` if the target
is :prop_tgt:`SYMBOLIC`. Symbolic targets are created by calls to
:command:`add_library(INTERFACE SYMBOLIC) <add_library(INTERFACE-SYMBOLIC)>`,
and are also abstract targets that are not part of the build system.
This field was added in codemodel version 2.9. Symbolic targets were not
included in codemodel version 2.8 and earlier.
``backtrace``
Optional member that is present when a CMake language backtrace to
the command in the source code that created the target is available.
+7
View File
@@ -93,6 +93,10 @@
"type": "boolean",
"description": "True if the target is defined in a local scope rather than being a global target"
},
"symbolicV2_9": {
"type": "boolean",
"description": "True if an interface target has the SYMBOLIC property set"
},
"abstractV2_9": {
"type": "boolean",
"description": "True if the target is not part of the build system"
@@ -1416,6 +1420,9 @@
"sources": {
"$ref": "#/definitions/sourcesV2_5"
},
"symbolic": {
"$ref": "#/definitions/symbolicV2_9"
},
"sourceGroups": {
"$ref": "#/definitions/sourceGroups"
},
+3
View File
@@ -1269,6 +1269,9 @@ Json::Value Target::Dump()
target["local"] = true;
}
}
if (this->GT->IsSymbolic()) {
target["symbolic"] = true;
}
if (!this->GT->IsInBuildSystem()) {
target["abstract"] = true;
}
@@ -314,6 +314,10 @@ def check_target(c, major, minor):
expected_keys.append("abstract")
assert is_bool(obj["abstract"], expected["abstract"])
if expected["symbolic"] is not None:
expected_keys.append("symbolic")
assert is_bool(obj["symbolic"], expected["symbolic"])
assert is_dict(obj["paths"])
assert sorted(obj["paths"].keys()) == ["build", "source"]
assert matches(obj["paths"]["build"], expected["build"])
@@ -895,6 +899,7 @@ def gen_check_build_system_targets(c, g, inSource):
read_codemodel_json_data("targets/link_imported_static_exe.json"),
read_codemodel_json_data("targets/link_imported_object_exe.json"),
read_codemodel_json_data("targets/link_imported_interface_exe.json"),
read_codemodel_json_data("targets/link_imported_interface_symbolic_exe.json"),
read_codemodel_json_data("targets/all_build_interface.json"),
read_codemodel_json_data("targets/zero_check_interface.json"),
@@ -1063,11 +1068,13 @@ def gen_check_abstract_targets(c, g, inSource):
read_codemodel_json_data("targets/imported_exe.json"),
read_codemodel_json_data("targets/imported_lib.json"),
read_codemodel_json_data("targets/imported_interface_lib.json"),
read_codemodel_json_data("targets/imported_interface_symbolic_lib.json"),
read_codemodel_json_data("targets/imported_object_lib.json"),
read_codemodel_json_data("targets/imported_shared_lib.json"),
read_codemodel_json_data("targets/imported_static_lib.json"),
read_codemodel_json_data("targets/iface_none.json"),
read_codemodel_json_data("targets/iface_symbolic.json")
]
if sys.platform == "darwin":
@@ -8,6 +8,7 @@
"^ZERO_CHECK::@ba7eb709d0b48779c6c8$",
"^link_imported_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_interface_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_interface_symbolic_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_object_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_shared_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_static_exe::@ba7eb709d0b48779c6c8$"
@@ -15,6 +16,7 @@
"abstractTargetIds": [
"^imported_exe::@ba7eb709d0b48779c6c8$",
"^imported_interface_lib::@ba7eb709d0b48779c6c8$",
"^imported_interface_symbolic_lib::@ba7eb709d0b48779c6c8$",
"^imported_lib::@ba7eb709d0b48779c6c8$",
"^imported_object_lib::@ba7eb709d0b48779c6c8$",
"^imported_shared_lib::@ba7eb709d0b48779c6c8$",
@@ -42,7 +44,7 @@
"backtrace": [
{
"file": "^imported/CMakeLists\\.txt$",
"line": 35,
"line": 39,
"command": "install",
"hasParent": true
},
@@ -72,7 +74,7 @@
"backtrace": [
{
"file": "^imported/CMakeLists\\.txt$",
"line": 38,
"line": 42,
"command": "install",
"hasParent": true
},
@@ -9,7 +9,8 @@
"^iface_srcs::@25b7fa8ea00134654b85$"
],
"abstractTargetIds": [
"^iface_none::@25b7fa8ea00134654b85$"
"^iface_none::@25b7fa8ea00134654b85$",
"^iface_symbolic::@25b7fa8ea00134654b85$"
],
"projectName": "Interface",
"minimumCMakeVersion": "3.13",
@@ -12,12 +12,14 @@
"^link_imported_shared_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_static_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_object_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_interface_exe::@ba7eb709d0b48779c6c8$"
"^link_imported_interface_exe::@ba7eb709d0b48779c6c8$",
"^link_imported_interface_symbolic_exe::@ba7eb709d0b48779c6c8$"
],
"abstractTargetIds": [
"^imported_exe::@ba7eb709d0b48779c6c8$",
"^imported_lib::@ba7eb709d0b48779c6c8$",
"^imported_interface_lib::@ba7eb709d0b48779c6c8$",
"^imported_interface_symbolic_lib::@ba7eb709d0b48779c6c8$",
"^imported_object_lib::@ba7eb709d0b48779c6c8$",
"^imported_shared_lib::@ba7eb709d0b48779c6c8$",
"^imported_static_lib::@ba7eb709d0b48779c6c8$"
@@ -11,6 +11,7 @@
"^iface_srcs::@25b7fa8ea00134654b85$"
],
"abstractTargetIds": [
"^iface_none::@25b7fa8ea00134654b85$"
"^iface_none::@25b7fa8ea00134654b85$",
"^iface_symbolic::@25b7fa8ea00134654b85$"
]
}
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -96,6 +97,10 @@
{
"id": "^link_imported_interface_exe::@ba7eb709d0b48779c6c8$",
"backtrace": null
},
{
"id": "^link_imported_interface_symbolic_exe::@ba7eb709d0b48779c6c8$",
"backtrace": null
}
]
}
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -201,6 +202,10 @@
"id": "^link_imported_interface_exe::@ba7eb709d0b48779c6c8$",
"backtrace": null
},
{
"id": "^link_imported_interface_symbolic_exe::@ba7eb709d0b48779c6c8$",
"backtrace": null
},
{
"id": "^iface_srcs::@25b7fa8ea00134654b85$",
"backtrace": null
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": [
{
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": [
{
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -0,0 +1,39 @@
{
"name": "iface_symbolic",
"id": "^iface_symbolic::@25b7fa8ea00134654b85$",
"directorySource": "^interface$",
"projectName": "Interface",
"type": "INTERFACE_LIBRARY",
"imported": null,
"local": null,
"symbolic": true,
"abstract": true,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
"sourceGroups": null,
"compileGroups": null,
"backtrace": [
{
"file": "^interface/CMakeLists\\.txt$",
"line": 4,
"command": "add_library",
"hasParent": true
},
{
"file": "^interface/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"folder": null,
"nameOnDisk": null,
"artifacts": null,
"build": "^interface$",
"source": "^interface$",
"install": null,
"link": null,
"archive": null,
"dependencies": null
}
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -0,0 +1,39 @@
{
"name": "imported_interface_symbolic_lib",
"id": "^imported_interface_symbolic_lib::@ba7eb709d0b48779c6c8$",
"directorySource": "^imported$",
"projectName": "Imported",
"type": "INTERFACE_LIBRARY",
"imported": true,
"local": true,
"abstract": true,
"symbolic": true,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
"sourceGroups": null,
"compileGroups": null,
"backtrace": [
{
"file": "^imported/CMakeLists\\.txt$",
"line": 35,
"command": "add_library",
"hasParent": true
},
{
"file": "^imported/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"folder": null,
"nameOnDisk": null,
"artifacts": null,
"build": "^imported$",
"source": "^imported$",
"install": null,
"link": null,
"archive": null,
"dependencies": null
}
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": true,
"local": true,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": true,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [],
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -0,0 +1,97 @@
{
"name": "link_imported_interface_symbolic_exe",
"id": "^link_imported_interface_symbolic_exe::@ba7eb709d0b48779c6c8$",
"directorySource": "^imported$",
"projectName": "Imported",
"type": "EXECUTABLE",
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
{
"file": "^imported/CMakeLists\\.txt$",
"line": 36,
"command": "add_executable",
"hasParent": true
},
{
"file": "^imported/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"sourceGroups": [
{
"name": "Source Files",
"sourcePaths": [
"^empty\\.c$"
]
}
],
"compileGroups": [
{
"language": "C",
"sourcePaths": [
"^empty\\.c$"
],
"includes": null,
"frameworks": null,
"defines": null,
"compileCommandFragments": null
}
],
"backtrace": [
{
"file": "^imported/CMakeLists\\.txt$",
"line": 36,
"command": "add_executable",
"hasParent": true
},
{
"file": "^imported/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"folder": null,
"nameOnDisk": "^link_imported_interface_symbolic_exe(\\.exe)?$",
"artifacts": [
{
"path": "^imported/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?link_imported_interface_symbolic_exe(\\.exe)?$",
"_dllExtra": false
},
{
"path": "^imported/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?link_imported_interface_symbolic_exe\\.pdb$",
"_dllExtra": true
}
],
"build": "^imported$",
"source": "^imported$",
"install": null,
"link": {
"language": "C",
"lto": null,
"commandFragments": null
},
"archive": null,
"dependencies": [
{
"id": "^ZERO_CHECK::@ba7eb709d0b48779c6c8$",
"backtrace": null
}
]
}
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -7,6 +7,7 @@
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": true,
"fileSets": null,
"sources": [
@@ -32,6 +32,10 @@ add_library(imported_interface_lib INTERFACE IMPORTED)
add_executable(link_imported_interface_exe ../empty.c)
target_link_libraries(link_imported_interface_exe PRIVATE imported_interface_lib)
add_library(imported_interface_symbolic_lib INTERFACE SYMBOLIC IMPORTED)
add_executable(link_imported_interface_symbolic_exe ../empty.c)
target_link_libraries(link_imported_interface_symbolic_exe PRIVATE imported_interface_lib)
install(IMPORTED_RUNTIME_ARTIFACTS imported_shared_lib
DESTINATION lib
)
@@ -1,3 +1,4 @@
project(Interface)
add_library(iface_none INTERFACE)
add_library(iface_srcs INTERFACE ../empty.c)
add_library(iface_symbolic INTERFACE SYMBOLIC)