summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/FileAPI
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2023-11-11 14:35:21 (GMT)
committerBrad King <brad.king@kitware.com>2023-12-01 15:57:15 (GMT)
commit80a64c9ce5ecb00a62a97d86c88fd8db33e73a08 (patch)
tree8a0552f0c506de998fb654401a13153980eefd54 /Tests/RunCMake/FileAPI
parent2d0b7798dbaa5625496907a97973087be8db5f53 (diff)
downloadCMake-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')
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-check.py26
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.cross.json15
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/directories/cxx.json4
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/projects/cxx.json5
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_cxx.json8
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/all_build_top.json8
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json106
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json109
-rw-r--r--Tests/RunCMake/FileAPI/cxx/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/FileAPI/cxx/cross/CMakeLists.txt7
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")