aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Ramos <juan@lunarg.com>2023-09-22 11:43:06 -0600
committerJuan Ramos <114601453+juan-lunarg@users.noreply.github.com>2023-09-22 12:43:49 -0600
commit9616098f617c4a53ecb72a1456bb229989e2d0e4 (patch)
treeb3d64fe1b07b2486cc4ed41867bfebe61fef10b4
parent6944374dff6d0f9aa9735ca38811ffa6437d955f (diff)
downloadusermoji-9616098f617c4a53ecb72a1456bb229989e2d0e4.tar.xz
cmake: Fix ICD json logic
closes #861
-rw-r--r--BUILD.gn80
-rw-r--r--CMakeLists.txt3
-rwxr-xr-xbuild-gn/generate_vulkan_layers_json.py36
-rw-r--r--icd/CMakeLists.txt200
-rw-r--r--icd/VkICD_mock_icd.json.in (renamed from icd/macos/VkICD_mock_icd.json)3
-rw-r--r--icd/linux/VkICD_mock_icd.json12
-rw-r--r--icd/windows/VkICD_mock_icd.json12
7 files changed, 137 insertions, 209 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 40cd58f9..3144bd28 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1,5 +1,5 @@
# Copyright (C) 2018-2019 The ANGLE Project Authors.
-# Copyright (C) 2019, 2023 LunarG, Inc.
+# Copyright (C) 2019-2023 LunarG, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,32 +16,6 @@
import("//build_overrides/build.gni")
import("//build_overrides/vulkan_tools.gni")
-# Vulkan-tools isn't ported to Fuchsia yet.
-# TODO(spang): Port mock ICD to Fuchsia.
-assert(!is_fuchsia)
-
-config("vulkan_internal_config") {
- defines = [ "VULKAN_NON_CMAKE_BUILD" ]
- if (is_clang || !is_win) {
- cflags = [ "-Wno-unused-function" ]
- }
- if (is_linux || is_chromeos) {
- defines += [
- "SYSCONFDIR=\"/etc\"",
- "FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
- "FALLBACK_DATA_DIRS=\"/usr/local/share:/usr/share\"",
- ]
- }
-}
-
-# Vulkan tool generated utility headers
-source_set("vulkan_tools_headers") {
- public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
- sources = [
- "icd/generated/vk_typemap_helper.h",
- ]
-}
-
if (!is_android) {
vulkan_undefine_configs = []
if (is_win && build_with_chromium) {
@@ -51,23 +25,20 @@ if (!is_android) {
]
}
- raw_vulkan_icd_dir = rebase_path("icd", root_build_dir)
-
- vulkan_data_dir = "$root_out_dir/$vulkan_data_subdir"
- raw_vulkan_data_dir = rebase_path(vulkan_data_dir, root_build_dir)
-
# Vulkan Mock ICD
# ---------------
shared_library("VkICD_mock_icd") {
configs -= vulkan_undefine_configs
- deps = [ ":vulkan_tools_headers" ]
- public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
+ deps = [
+ "$vulkan_headers_dir:vulkan_headers"
+ ]
data_deps = [ ":vulkan_gen_icd_json_file" ]
sources = [
"icd/mock_icd.h",
"icd/mock_icd.cpp",
"icd/generated/function_declarations.h",
"icd/generated/function_definitions.h",
+ "icd/generated/vk_typemap_helper.h",
]
include_dirs = [
"icd",
@@ -84,25 +55,34 @@ if (!is_android) {
action("vulkan_gen_icd_json_file") {
script = "build-gn/generate_vulkan_layers_json.py"
+
public_deps = [ "$vulkan_headers_dir:vulkan_headers" ]
- sources = [ "$vulkan_headers_dir/include/vulkan/vulkan_core.h" ]
- args = [ "--icd" ]
- if (is_win) {
- sources += [ "icd/windows/VkICD_mock_icd.json" ]
- args += [ "$raw_vulkan_icd_dir/windows" ]
- }
- if (is_linux || is_chromeos) {
- sources += [ "icd/linux/VkICD_mock_icd.json" ]
- args += [ "$raw_vulkan_icd_dir/linux" ]
- }
- if (is_mac) {
- sources += [ "icd/macos/VkICD_mock_icd.json" ]
- args += [ "$raw_vulkan_icd_dir/macos" ]
- }
- # The layer JSON files are part of the necessary data deps.
+ sources = [ "icd/VkICD_mock_icd.json.in" ]
+
+ vulkan_data_dir = "$root_out_dir/$vulkan_data_subdir"
+
outputs = [ "$vulkan_data_dir/VkICD_mock_icd.json" ]
+
+ if (is_linux) {
+ _platform = "Linux"
+ } else if (is_win) {
+ _platform = "Windows"
+ } else if (is_mac) {
+ _platform = "Darwin"
+ } else if (is_fuchsia) {
+ _platform = "Fuchsia"
+ } else {
+ _platform = "Other"
+ }
+
+ args = [
+ "--icd",
+ "--platform", _platform,
+ rebase_path("icd/", root_build_dir),
+ rebase_path(vulkan_data_dir, root_build_dir)
+ ] + rebase_path(sources, root_build_dir)
+
data = outputs
- args += [ raw_vulkan_data_dir ] + rebase_path(sources, root_build_dir)
}
}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index efc3f1e8..67dfd348 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,9 +34,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
option(BUILD_CUBE "Build cube" ON)
option(BUILD_VULKANINFO "Build vulkaninfo" ON)
option(BUILD_ICD "Build icd" ON)
-# Installing the Mock ICD to system directories is probably not desired since this ICD is not a very complete implementation.
-# Require the user to ask that it be installed if they really want it.
-option(INSTALL_ICD "Install icd" OFF)
if (UNIX AND NOT APPLE) # i.e. Linux
option(ENABLE_ADDRESS_SANITIZER "Use addres sanitization" OFF)
diff --git a/build-gn/generate_vulkan_layers_json.py b/build-gn/generate_vulkan_layers_json.py
index 93d105b6..c4135db4 100755
--- a/build-gn/generate_vulkan_layers_json.py
+++ b/build-gn/generate_vulkan_layers_json.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
# Copyright (C) 2016 The ANGLE Project Authors.
+# Copyright (c) 2022-2023 LunarG, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -26,18 +27,19 @@ import os
import platform
import sys
-
def glob_slash(dirname):
"""Like regular glob but replaces \ with / in returned paths."""
return [s.replace('\\', '/') for s in glob.glob(dirname)]
-
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--icd', action='store_true')
+ parser.add_argument('--no-path-prefix', action='store_true')
+ parser.add_argument('--platform', type=str, default=platform.system(),
+ help='Target platform to build validation layers for: '
+ 'Linux|Darwin|Windows|Fuchsia|...')
parser.add_argument('source_dir')
parser.add_argument('target_dir')
- parser.add_argument('version_header', help='path to vulkan_core.h')
parser.add_argument('json_files', nargs='*')
args = parser.parse_args()
@@ -82,25 +84,17 @@ def main():
with open(target_fname, 'w') as outfile:
json.dump(data, outfile)
- # Get the Vulkan version from the vulkan_core.h file
- vk_header_filename = args.version_header
- vk_version = None
- with open(vk_header_filename) as vk_header_file:
- for line in vk_header_file:
- if line.startswith('#define VK_HEADER_VERSION'):
- vk_version = line.split()[-1]
- break
- if not vk_version:
- print('failed to extract vk_version', file=sys.stderr)
- return 1
-
# Set json file prefix and suffix for generating files, default to Linux.
- relative_path_prefix = '../lib'
- file_type_suffix = '.so'
- if platform.system() == 'Windows':
+ if args.no_path_prefix:
+ relative_path_prefix = ''
+ elif args.platform == 'Windows':
relative_path_prefix = r'..\\' # json-escaped, hence two backslashes.
+ else:
+ relative_path_prefix = '../lib'
+ file_type_suffix = '.so'
+ if args.platform == 'Windows':
file_type_suffix = '.dll'
- elif platform.system() == 'Darwin':
+ elif args.platform == 'Darwin':
file_type_suffix = '.dylib'
# For each *.json.in template files in source dir generate actual json file
@@ -119,9 +113,7 @@ def main():
with open(json_out_fname,'w') as json_out_file, \
open(json_in_name) as infile:
for line in infile:
- line = line.replace('@RELATIVE_LAYER_BINARY@',
- relative_path_prefix + layer_lib_name)
- line = line.replace('@VK_VERSION@', '1.1.' + vk_version)
+ line = line.replace('@JSON_LIBRARY_PATH@', relative_path_prefix + layer_lib_name)
json_out_file.write(line)
if __name__ == '__main__':
diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt
index 3311f572..f36849de 100644
--- a/icd/CMakeLists.txt
+++ b/icd/CMakeLists.txt
@@ -16,6 +16,10 @@
# limitations under the License.
# ~~~
+if (ANDROID)
+ return()
+endif()
+
# These variables enable downstream users to customize the CMake targets
# based on the target API variant (e.g. Vulkan SC)
set(MOCK_ICD_NAME VkICD_mock_icd)
@@ -23,8 +27,6 @@ set(GENERATED generated)
if(WIN32)
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DVK_USE_PLATFORM_WIN32_KHX -DWIN32_LEAN_AND_MEAN)
-elseif(ANDROID)
- add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR -DVK_USE_PLATFORM_ANDROID_KHX)
elseif(APPLE)
add_definitions(-DVK_USE_PLATFORM_MACOS_MVK)
elseif(UNIX AND NOT APPLE) # i.e. Linux
@@ -43,128 +45,110 @@ else()
message(FATAL_ERROR "Unsupported Platform!")
endif()
-# Copy or link the JSON files to the binary directory for ease of use in the build tree.
-if(WIN32)
- # extra setup for out-of-tree builds
- if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
- if(CMAKE_GENERATOR MATCHES "^Visual Studio.*")
- file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/windows/${MOCK_ICD_NAME}.json src_json)
- file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${MOCK_ICD_NAME}.json dst_json)
- add_custom_target(VkICD_mock_icd-json ALL COMMAND copy ${src_json} ${dst_json} VERBATIM)
- set_target_properties(VkICD_mock_icd-json PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
- else()
- file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/windows/${MOCK_ICD_NAME}.json src_json)
- file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/${MOCK_ICD_NAME}.json dst_json)
- add_custom_target(VkICD_mock_icd-json ALL COMMAND copy ${src_json} ${dst_json} VERBATIM)
- endif()
- endif()
-elseif(APPLE)
- # extra setup for out-of-tree builds
- if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
- if(CMAKE_GENERATOR MATCHES "^Xcode.*")
- add_custom_target(mk_icd_config_dir ALL
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
- add_custom_target(VkICD_mock_icd-json ALL
- DEPENDS mk_icd_config_dir
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/macos/${MOCK_ICD_NAME}.json
- $<CONFIG> ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${MOCK_ICD_NAME}.json
- VERBATIM)
- else()
- add_custom_target(VkICD_mock_icd-json ALL
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/macos/${MOCK_ICD_NAME}.json
- ${MOCK_ICD_NAME}.json
- VERBATIM)
- endif()
+add_custom_target(generate_icd_files
+ DEPENDS mock_icd.cpp ${GENERATED}/function_definitions.h ${GENERATED}/function_declarations.h
+)
+set_target_properties(
+ generate_icd_files PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER}
+)
+
+add_library(VkICD_mock_icd MODULE)
+target_sources(VkICD_mock_icd PRIVATE mock_icd.cpp)
+target_link_libraries(VkICD_mock_icd PRIVATE Vulkan::Headers)
+
+target_include_directories(VkICD_mock_icd PRIVATE
+ ${GENERATED}
+ .
+)
+if(BUILD_WSI_WAYLAND_SUPPORT)
+ target_include_directories(VkICD_mock_icd PRIVATE ${WAYLAND_CLIENT_INCLUDE_DIR})
+endif()
+
+if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU|Clang")
+ target_compile_options(VkICD_mock_icd PRIVATE
+ -Wpointer-arith
+ -Wno-unused-function
+ -Wno-sign-compare
+ )
+
+ if (ENABLE_ADDRESS_SANITIZER)
+ target_compile_options(VkICD_mock_icd PUBLIC -fsanitize=address)
+ target_link_options(VkICD_mock_icd PUBLIC -fsanitize=address)
endif()
+endif()
+
+if(MSVC)
+ target_compile_options(VkICD_mock_icd PRIVATE /bigobj)
+ target_compile_definitions(VkICD_mock_icd PRIVATE _CRT_SECURE_NO_WARNINGS)
+ target_link_options(VkICD_mock_icd PRIVATE /DEF:${CMAKE_CURRENT_SOURCE_DIR}/${MOCK_ICD_NAME}.def)
+elseif(MINGW)
+ target_sources(VkICD_mock_icd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${MOCK_ICD_NAME}.def)
else()
- # extra setup for out-of-tree builds
- if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
- add_custom_target(VkICD_mock_icd-json ALL
- COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/linux/${MOCK_ICD_NAME}.json
- ${MOCK_ICD_NAME}.json
- VERBATIM)
+ if(APPLE)
+ set_target_properties(VkICD_mock_icd PROPERTIES SUFFIX ".dylib")
endif()
+ message(DEBUG "Mock ICD Functions are exported via EXPORT")
endif()
-# For ICD with a direct dependency on a project with the same name, use it.
-if(NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
- add_dependencies(VkICD_mock_icd-json VkICD_mock_icd)
+set_target_properties(VkICD_mock_icd PROPERTIES OUTPUT_NAME ${MOCK_ICD_NAME})
+
+# Installing the Mock ICD to system directories is probably not desired since this ICD is not a very complete implementation.
+# Require the user to ask that it be installed if they really want it.
+option(INSTALL_ICD "Install icd")
+if (INSTALL_ICD)
+ message(STATUS "Installing Mock ICD")
endif()
-add_custom_target(generate_icd_files DEPENDS mock_icd.cpp ${GENERATED}/function_definitions.h ${GENERATED}/function_declarations.h)
-set_target_properties(generate_icd_files PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATED}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${PROJECT_BINARY_DIR}
- ${CMAKE_BINARY_DIR})
-if(BUILD_WSI_WAYLAND_SUPPORT)
- include_directories(${WAYLAND_CLIENT_INCLUDE_DIR})
+
+# There are 2 primary deliverables for the mock driver.
+# - The actual library (lib)VkICD_mock_icd.(dll|so|dylib)
+# - The respective json file, VkICD_mock_icd.json
+# This code generates the appropriate json for both local testing and the installation.
+# NOTE: For WIN32 the JSON and dll MUST be placed in the same location, due to Win32 using a relative path for installation.
+set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${MOCK_ICD_NAME}.json.in")
+set(INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/json/mock_icd.json")
+set(OUTPUT_FILE_FINAL_NAME "${MOCK_ICD_NAME}.json")
+set(LAYER_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
+if (WIN32)
+ set(LAYER_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) # WIN32/MINGW expect the dll in the `bin` dir, this matches our WIN32 SDK process
endif()
-if(WIN32)
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_CRT_SECURE_NO_WARNINGS")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_CRT_SECURE_NO_WARNINGS")
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_CRT_SECURE_NO_WARNINGS")
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_CRT_SECURE_NO_WARNINGS")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj")
- # Turn off transitional "changed behavior" warning message for Visual Studio versions prior to 2015. The changed behavior is
- # that constructor initializers are now fixed to clear the struct members.
- add_compile_options("$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,19>>:/wd4351>")
+if (WIN32)
+ set(JSON_LIBRARY_PATH ".\\\\${MOCK_ICD_NAME}.dll")
+elseif(APPLE)
+ set(JSON_LIBRARY_PATH "./lib${MOCK_ICD_NAME}.dylib")
else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare")
+ set(JSON_LIBRARY_PATH "./lib${MOCK_ICD_NAME}.so")
endif()
+configure_file(${INPUT_FILE} ${INTERMEDIATE_FILE} @ONLY)
-if(WIN32)
- file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${MOCK_ICD_NAME}.def DEF_FILE)
- add_custom_target(copy-mock_icd-def-file ALL
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEF_FILE} ${MOCK_ICD_NAME}.def
- VERBATIM)
- set_target_properties(copy-mock_icd-def-file PROPERTIES FOLDER ${TOOLS_HELPER_FOLDER})
- add_library(VkICD_mock_icd SHARED mock_icd.cpp ${MOCK_ICD_NAME}.def)
- target_link_libraries(VkICD_mock_icd PRIVATE Vulkan::Headers)
- if(INSTALL_ICD)
- install(TARGETS VkICD_mock_icd DESTINATION ${CMAKE_INSTALL_BINDIR})
- endif()
-elseif(APPLE)
- add_library(VkICD_mock_icd SHARED mock_icd.cpp )
- target_link_libraries(VkICD_mock_icd PRIVATE Vulkan::Headers)
- set_target_properties(VkICD_mock_icd PROPERTIES LINK_FLAGS "-Wl")
- if(INSTALL_ICD)
- install(TARGETS VkICD_mock_icd DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+# To support both multi/single configuration generators just copy the json to the correct directory
+add_custom_command(TARGET VkICD_mock_icd POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${INTERMEDIATE_FILE} $<TARGET_FILE_DIR:VkICD_mock_icd>/${OUTPUT_FILE_FINAL_NAME}
+)
+
+# For UNIX-based systems, `library_path` should not contain a relative path (indicated by "./") before installing to system directories
+# This json isn't used for regular local development, it's used for installation
+if (UNIX)
+ set(UNIX_INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/json/unix_install_mock_icd.json")
+
+ if(APPLE)
+ set(JSON_LIBRARY_PATH "lib${MOCK_ICD_NAME}.dylib")
+ else()
+ set(JSON_LIBRARY_PATH "lib${MOCK_ICD_NAME}.so")
endif()
-else()
- add_library(VkICD_mock_icd SHARED mock_icd.cpp )
- target_link_libraries(VkICD_mock_icd PRIVATE Vulkan::Headers)
- set_target_properties(VkICD_mock_icd PROPERTIES LINK_FLAGS "-Wl,-export-dynamic,-Bsymbolic,--exclude-libs,ALL")
- if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux
- install(TARGETS VkICD_mock_icd DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ configure_file(${INPUT_FILE} ${UNIX_INTERMEDIATE_FILE} @ONLY)
+
+ if (INSTALL_ICD)
+ install(FILES ${UNIX_INTERMEDIATE_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/vulkan/icd.d RENAME ${OUTPUT_FILE_FINAL_NAME})
endif()
- if (ENABLE_ADDRESS_SANITIZER)
- target_compile_options(VkICD_mock_icd PUBLIC -fsanitize=address)
- target_link_options(VkICD_mock_icd PUBLIC -fsanitize=address)
- endif ()
endif()
-set_target_properties(VkICD_mock_icd PROPERTIES OUTPUT_NAME ${MOCK_ICD_NAME})
-
-# JSON file(s) install targets. For Linux, need to remove the "./" from the library path before installing to system directories.
-if((UNIX AND NOT APPLE) AND INSTALL_ICD) # i.e. Linux
- add_custom_target(VkICD_mock_icd-staging-json ALL
- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/staging-json
- COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/linux/${MOCK_ICD_NAME}.json ${CMAKE_CURRENT_BINARY_DIR}/staging-json
- COMMAND sed -i -e "/\"library_path\":/s$./libVkICD$libVkICD$"
- ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${MOCK_ICD_NAME}.json
- VERBATIM
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/linux/${MOCK_ICD_NAME}.json)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/staging-json/${MOCK_ICD_NAME}.json
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${API_TYPE}/icd.d)
+if (WIN32 AND INSTALL_ICD)
+ install(FILES ${INTERMEDIATE_FILE} DESTINATION ${LAYER_INSTALL_DIR} RENAME ${OUTPUT_FILE_FINAL_NAME})
endif()
-# Windows uses the JSON file as-is.
-if(WIN32 AND INSTALL_ICD)
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/windows/${MOCK_ICD_NAME}.json DESTINATION ${CMAKE_INSTALL_BINDIR})
+if (INSTALL_ICD)
+ install(TARGETS VkICD_mock_icd DESTINATION ${LAYER_INSTALL_DIR})
endif()
diff --git a/icd/macos/VkICD_mock_icd.json b/icd/VkICD_mock_icd.json.in
index 71019868..f550bb27 100644
--- a/icd/macos/VkICD_mock_icd.json
+++ b/icd/VkICD_mock_icd.json.in
@@ -1,8 +1,7 @@
{
"file_format_version" : "1.0.1",
"ICD": {
- "library_path": "./libVkICD_mock_icd.dylib",
+ "library_path": "@JSON_LIBRARY_PATH@",
"api_version": "1.1.97"
}
}
-
diff --git a/icd/linux/VkICD_mock_icd.json b/icd/linux/VkICD_mock_icd.json
deleted file mode 100644
index bf32f8e6..00000000
--- a/icd/linux/VkICD_mock_icd.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "file_format_version" : "1.0.1",
- "ICD": {
- "library_path": "./libVkICD_mock_icd.so",
- "api_version": "1.1.97"
- }
-}
-
-
-
-
-
diff --git a/icd/windows/VkICD_mock_icd.json b/icd/windows/VkICD_mock_icd.json
deleted file mode 100644
index d192f5c2..00000000
--- a/icd/windows/VkICD_mock_icd.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "file_format_version" : "1.0.1",
- "ICD": {
- "library_path": ".\\VkICD_mock_icd.dll",
- "api_version": "1.1.97"
- }
-}
-
-
-
-
-