diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2023-11-11 14:35:21 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-12-01 15:57:15 (GMT) |
commit | 80a64c9ce5ecb00a62a97d86c88fd8db33e73a08 (patch) | |
tree | 8a0552f0c506de998fb654401a13153980eefd54 /Tests/RunCMake/FileAPI | |
parent | 2d0b7798dbaa5625496907a97973087be8db5f53 (diff) | |
download | CMake-80a64c9ce5ecb00a62a97d86c88fd8db33e73a08.zip CMake-80a64c9ce5ecb00a62a97d86c88fd8db33e73a08.tar.gz CMake-80a64c9ce5ecb00a62a97d86c88fd8db33e73a08.tar.bz2 |
fileapi: Add cross-compiling emulator to codemodel-v2
Fixes: #25408
Diffstat (limited to 'Tests/RunCMake/FileAPI')
10 files changed, 287 insertions, 3 deletions
diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-check.py b/Tests/RunCMake/FileAPI/codemodel-v2-check.py index 807d92b..cb90eba 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-check.py +++ b/Tests/RunCMake/FileAPI/codemodel-v2-check.py @@ -12,7 +12,7 @@ def read_codemodel_json_data(filename): def check_objects(o, g): assert is_list(o) assert len(o) == 1 - check_index_object(o[0], "codemodel", 2, 6, check_object_codemodel(g)) + check_index_object(o[0], "codemodel", 2, 7, check_object_codemodel(g)) def check_backtrace(t, b, backtrace): btg = t["backtraceGraph"] @@ -405,6 +405,27 @@ def check_target(c): missing_exception=lambda e: "Install path: %s" % e["path"], extra_exception=lambda a: "Install path: %s" % a["path"]) + if "launchers" in expected: + if expected["launchers"] is not None: + expected_keys.append("launchers") + def check_launcher(actual, expected): + assert is_dict(actual) + launcher_keys = ["arguments", "command", "type"] + assert sorted(actual.keys()) == sorted(launcher_keys) + assert matches(actual["command"], expected["command"]) + assert matches(actual["type"], expected["type"]) + if expected["arguments"] is not None: + check_list_match(lambda a, e: matches(a, e), + actual["arguments"], expected["arguments"], + missing_exception=lambda e: "argument: %s" % e, + extra_exception=lambda a: "argument: %s" % actual["arguments"]) + check_list_match(lambda a, e: matches(a["type"], e["type"]), + obj["launchers"], expected["launchers"], + check=check_launcher, + check_exception=lambda a, e: "launchers: %s" % a, + missing_exception=lambda e: "launchers: %s" % e, + extra_exception=lambda a: "launchers: %s" % a) + if expected["link"] is not None: expected_keys.append("link") assert is_dict(obj["link"]) @@ -709,6 +730,7 @@ def gen_check_directories(c, g): read_codemodel_json_data("directories/alias.json"), read_codemodel_json_data("directories/custom.json"), read_codemodel_json_data("directories/cxx.json"), + read_codemodel_json_data("directories/cxx.cross.json"), read_codemodel_json_data("directories/imported.json"), read_codemodel_json_data("directories/interface.json"), read_codemodel_json_data("directories/object.json"), @@ -782,6 +804,8 @@ def gen_check_targets(c, g, inSource): read_codemodel_json_data("targets/zero_check_cxx.json"), read_codemodel_json_data("targets/cxx_lib.json"), read_codemodel_json_data("targets/cxx_exe.json"), + read_codemodel_json_data("targets/cxx_exe_cross_emulator.json"), + read_codemodel_json_data("targets/cxx_exe_cross_emulator_args.json"), read_codemodel_json_data("targets/cxx_standard_compile_feature_exe.json"), read_codemodel_json_data("targets/cxx_standard_exe.json"), read_codemodel_json_data("targets/cxx_shared_lib.json"), diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.cross.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.cross.json new file mode 100644 index 0000000..09a9d04 --- /dev/null +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.cross.json @@ -0,0 +1,15 @@ +{ + "source": "^cxx/cross$", + "build": "^cxx/cross$", + "parentSource": "^cxx$", + "parentIndex": 2, + "childSources": null, + "targetIds": [ + "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$", + "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$" + ], + "projectName": "Cxx", + "minimumCMakeVersion": "3.13", + "hasInstallRule": null, + "installers": [] +} diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.json index 22dfabd..defb865 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.json @@ -2,7 +2,9 @@ "source": "^cxx$", "build": "^cxx$", "parentSource": "^\\.$", - "childSources": null, + "childSources": [ + "^cxx/cross$" + ], "targetIds": [ "^ALL_BUILD::@a56b12a3f5c0529fb296$", "^ZERO_CHECK::@a56b12a3f5c0529fb296$", diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/projects/cxx.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/projects/cxx.json index 363e853..ea738f8 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/projects/cxx.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/projects/cxx.json @@ -3,13 +3,16 @@ "parentName": "codemodel-v2", "childNames": null, "directorySources": [ - "^cxx$" + "^cxx$", + "^cxx/cross$" ], "targetIds": [ "^ALL_BUILD::@a56b12a3f5c0529fb296$", "^ZERO_CHECK::@a56b12a3f5c0529fb296$", "^cxx_lib::@a56b12a3f5c0529fb296$", "^cxx_exe::@a56b12a3f5c0529fb296$", + "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$", + "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$", "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$", "^cxx_standard_exe::@a56b12a3f5c0529fb296$", "^cxx_shared_lib::@a56b12a3f5c0529fb296$", diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_cxx.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_cxx.json index bf36bfe..2a093ab 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_cxx.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_cxx.json @@ -83,6 +83,14 @@ "backtrace": null }, { + "id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$", + "backtrace": null + }, + { + "id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$", + "backtrace": null + }, + { "id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$", "backtrace": null }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_top.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_top.json index 9d0007f..b7cbc14 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_top.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_top.json @@ -123,6 +123,14 @@ "backtrace": null }, { + "id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$", + "backtrace": null + }, + { + "id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$", + "backtrace": null + }, + { "id": "^cxx_standard_compile_feature_exe::@a56b12a3f5c0529fb296$", "backtrace": null }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json new file mode 100644 index 0000000..9bd2d5d --- /dev/null +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json @@ -0,0 +1,106 @@ +{ + "name": "cxx_exe_cross_emulator", + "id": "^cxx_exe_cross_emulator::@ee4a268216d1f53c4e2e$", + "directorySource": "^cxx/cross$", + "projectName": "Cxx", + "type": "EXECUTABLE", + "isGeneratorProvided": null, + "fileSets": null, + "sources": [ + { + "path": "^empty\\.cxx$", + "isGenerated": null, + "fileSetName": null, + "sourceGroupName": "Source Files", + "compileGroupLanguage": "CXX", + "backtrace": [ + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": 3, + "command": "add_executable", + "hasParent": true + }, + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": null, + "command": null, + "hasParent": false + } + ] + } + ], + "sourceGroups": [ + { + "name": "Source Files", + "sourcePaths": [ + "^empty\\.cxx$" + ] + } + ], + "compileGroups": [ + { + "language": "CXX", + "sourcePaths": [ + "^empty\\.cxx$" + ], + "includes": null, + "frameworks": null, + "defines": null, + "compileCommandFragments": null + } + ], + "backtrace": [ + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": 3, + "command": "add_executable", + "hasParent": true + }, + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": null, + "command": null, + "hasParent": false + } + ], + "folder": null, + "nameOnDisk": "^cxx_exe_cross_emulator(\\.exe)?$", + "artifacts": [ + { + "path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator(\\.exe)?$", + "_dllExtra": false + }, + { + "path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator\\.pdb$", + "_dllExtra": true + } + ], + "build": "^cxx/cross$", + "source": "^cxx/cross$", + "install": null, + "launchers" : [ + { + "arguments" : null, + "command": "^no-such-emulator(\\.exe)?$", + "type" : "emulator" + } + ], + "link": { + "language": "CXX", + "lto": null, + "commandFragments": [ + { + "fragment" : ".*", + "role" : "flags", + "backtrace": null + } + ] + }, + "archive": null, + "dependencies": [ + { + "id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$", + "backtrace": null + } + ] +} diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json new file mode 100644 index 0000000..c1a8b0c --- /dev/null +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json @@ -0,0 +1,109 @@ +{ + "name": "cxx_exe_cross_emulator_args", + "id": "^cxx_exe_cross_emulator_args::@ee4a268216d1f53c4e2e$", + "directorySource": "^cxx/cross$", + "projectName": "Cxx", + "type": "EXECUTABLE", + "isGeneratorProvided": null, + "fileSets": null, + "sources": [ + { + "path": "^empty\\.cxx$", + "isGenerated": null, + "fileSetName": null, + "sourceGroupName": "Source Files", + "compileGroupLanguage": "CXX", + "backtrace": [ + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": 6, + "command": "add_executable", + "hasParent": true + }, + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": null, + "command": null, + "hasParent": false + } + ] + } + ], + "sourceGroups": [ + { + "name": "Source Files", + "sourcePaths": [ + "^empty\\.cxx$" + ] + } + ], + "compileGroups": [ + { + "language": "CXX", + "sourcePaths": [ + "^empty\\.cxx$" + ], + "includes": null, + "frameworks": null, + "defines": null, + "compileCommandFragments": null + } + ], + "backtrace": [ + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": 6, + "command": "add_executable", + "hasParent": true + }, + { + "file": "^cxx/cross/CMakeLists\\.txt$", + "line": null, + "command": null, + "hasParent": false + } + ], + "folder": null, + "nameOnDisk": "^cxx_exe_cross_emulator_args(\\.exe)?$", + "artifacts": [ + { + "path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator_args(\\.exe)?$", + "_dllExtra": false + }, + { + "path": "^cxx/cross/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?cxx_exe_cross_emulator_args\\.pdb$", + "_dllExtra": true + } + ], + "build": "^cxx/cross$", + "source": "^cxx/cross$", + "install": null, + "launchers" : [ + { + "arguments" : [ + "arg1", + "arg2 with space" + ], + "command": "^no-such-emulator(\\.exe)?$", + "type" : "emulator" + } + ], + "link": { + "language": "CXX", + "lto": null, + "commandFragments": [ + { + "fragment" : ".*", + "role" : "flags", + "backtrace": null + } + ] + }, + "archive": null, + "dependencies": [ + { + "id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$", + "backtrace": null + } + ] +} diff --git a/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt b/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt index 3ae3b60..91a9969 100644 --- a/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt +++ b/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt @@ -45,3 +45,5 @@ if(_rdeps) FRAMEWORK DESTINATION fw ) endif() + +add_subdirectory(cross) diff --git a/Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt b/Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt new file mode 100644 index 0000000..87baf19 --- /dev/null +++ b/Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt @@ -0,0 +1,7 @@ +# Cross-compiling is normally global. Cover it without duplicating everything. +set(CMAKE_CROSSCOMPILING 1) +add_executable(cxx_exe_cross_emulator ../../empty.cxx) +set_property(TARGET cxx_exe_cross_emulator PROPERTY CROSSCOMPILING_EMULATOR no-such-emulator) + +add_executable(cxx_exe_cross_emulator_args ../../empty.cxx) +set_property(TARGET cxx_exe_cross_emulator_args PROPERTY CROSSCOMPILING_EMULATOR "no-such-emulator;arg1;arg2 with space") |