blob: a8dcf80227d2ae7ac6468b80df2f4fb347c510d1 [file] [log] [blame]
Ryan Harrisone87ac762022-04-06 15:37:27 -04001# Copyright 2022 The Dawn & Tint Authors
Corentin Wallez7fe6efb2020-02-05 17:16:05 +00002#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Aleksi Sapon9a106742021-09-28 16:48:01 +000015# Don't build testing in third_party dependencies
16set(BUILD_TESTING OFF)
17
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000018if (NOT TARGET SPIRV-Headers)
Corentin Wallez42450c62020-04-10 17:04:31 +000019 set(SPIRV_HEADERS_SKIP_EXAMPLES ON CACHE BOOL "" FORCE)
20 set(SPIRV_HEADERS_SKIP_INSTALL ON CACHE BOOL "" FORCE)
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000021
22 message(STATUS "Dawn: using SPIRV-Headers at ${DAWN_SPIRV_HEADERS_DIR}")
Aleksi Sapon9a106742021-09-28 16:48:01 +000023 add_subdirectory(${DAWN_SPIRV_HEADERS_DIR} "${CMAKE_CURRENT_BINARY_DIR}/spirv-headers")
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000024endif()
25
Ben Claytonbf8791b2022-04-07 20:39:24 +000026# Needs to come before SPIR-V Tools
27if ((${TINT_BUILD_SPIRV_TOOLS_FUZZER} OR ${TINT_BUILD_AST_FUZZER}) AND
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +000028 (NOT TARGET protobuf::libprotobuf OR NOT TARGET protobuf::protoc))
29 set(protobuf_BUILD_TESTS OFF CACHE BOOL "Controls whether protobuf tests are built" FORCE)
30 set(protobuf_MSVC_STATIC_RUNTIME OFF CACHE BOOL "Controls whether a protobuf static runtime is built" FORCE)
31 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/protobuf/cmake)
Ryan Harrisone87ac762022-04-06 15:37:27 -040032endif()
33
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000034if (NOT TARGET SPIRV-Tools)
Corentin Wallez42450c62020-04-10 17:04:31 +000035 set(SPIRV_SKIP_TESTS ON CACHE BOOL "" FORCE)
36 set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "" FORCE)
37 set(SKIP_SPIRV_TOOLS_INSTALL ON CACHE BOOL "" FORCE)
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000038
Ryan Harrisone87ac762022-04-06 15:37:27 -040039 if(${TINT_BUILD_SPV_READER} OR ${TINT_BUILD_SPV_WRITER})
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +000040 set(SPIRV_SKIP_TESTS ON CACHE BOOL "Controls whether SPIR-V tests are run" FORCE)
41 set(SPIRV_WERROR OFF CACHE BOOL OFF FORCE)
42 if (${TINT_BUILD_SPIRV_TOOLS_FUZZER})
43 set(SPIRV_BUILD_FUZZER ON CACHE BOOL "Controls whether spirv-fuzz is built" FORCE)
44 endif()
Ryan Harrisone87ac762022-04-06 15:37:27 -040045 endif()
46
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000047 message(STATUS "Dawn: using SPIRV-Tools at ${DAWN_SPIRV_TOOLS_DIR}")
Ryan Harrisone87ac762022-04-06 15:37:27 -040048 add_subdirectory(${DAWN_SPIRV_TOOLS_DIR} "${CMAKE_CURRENT_BINARY_DIR}/spirv-tools" EXCLUDE_FROM_ALL)
Corentin Wallez7fe6efb2020-02-05 17:16:05 +000049endif()
50
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +000051if(NOT TARGET glslang AND ${TINT_BUILD_GLSL_WRITER} AND ${TINT_BUILD_SAMPLES})
52 set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "" FORCE)
53 add_subdirectory("${DAWN_THIRD_PARTY_DIR}/vulkan-deps/glslang/src" "${CMAKE_CURRENT_BINARY_DIR}/glslang" EXCLUDE_FROM_ALL)
54endif()
55
Ryan Harrisone87ac762022-04-06 15:37:27 -040056if (NOT TARGET glfw)
Ben Clayton0ecd67a2021-09-23 20:13:53 +000057 set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
58 set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
59 set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
60
61 message(STATUS "Dawn: using GLFW at ${DAWN_GLFW_DIR}")
Aleksi Sapon9a106742021-09-28 16:48:01 +000062 add_subdirectory(${DAWN_GLFW_DIR} "${CMAKE_CURRENT_BINARY_DIR}/glfw")
Ben Clayton0ecd67a2021-09-23 20:13:53 +000063endif()
64
Brandon Jonesa04663c2021-09-23 20:36:03 +000065if (NOT TARGET libabsl)
66 message(STATUS "Dawn: using Abseil at ${DAWN_ABSEIL_DIR}")
Aleksi Sapon9a106742021-09-28 16:48:01 +000067 add_subdirectory(${DAWN_ABSEIL_DIR} "${CMAKE_CURRENT_BINARY_DIR}/abseil")
Brandon Jonesa04663c2021-09-23 20:36:03 +000068endif()
69
Loko Kungc96ef432022-04-02 03:02:40 +000070if (NOT TARGET Vulkan-Headers)
71 message(STATUS "Dawn: using Vulkan-Headers at ${DAWN_VULKAN_HEADERS_DIR}")
72 add_subdirectory(${DAWN_VULKAN_HEADERS_DIR} "${CMAKE_CURRENT_BINARY_DIR}/vulkan-headers")
73endif()
74
Corentin Wallez215b5372020-02-15 00:39:13 +000075# Header-only library for khrplatform.h
76add_library(dawn_khronos_platform INTERFACE)
dan sinclairecd46ab2020-10-20 17:43:00 +000077target_sources(dawn_khronos_platform INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos/KHR/khrplatform.h")
78target_include_directories(dawn_khronos_platform INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos")
Ryan Harrisone87ac762022-04-06 15:37:27 -040079
80# Header-only library for Vulkan headers
81add_library(dawn_vulkan_headers INTERFACE)
82target_sources(dawn_vulkan_headers INTERFACE
83 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vk_icd.h"
84 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vk_layer.h"
85 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vk_platform.h"
86 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vk_sdk_platform.h"
87 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vulkan.h"
88 "${CMAKE_CURRENT_SOURCE_DIR}/khronos/vulkan/vulkan_core.h"
89)
90target_include_directories(dawn_vulkan_headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos")
91
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +000092if (NOT TARGET vk_swiftshader AND ${DAWN_ENABLE_SWIFTSHADER})
Corentin Wallezbe352ea2022-04-11 16:48:43 +000093 set(SWIFTSHADER_BUILD_TESTS OFF CACHE BOOL "" FORCE)
94 set(SWIFTSHADER_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE)
95
96 message(STATUS "Dawn: using Swiftshader at ${DAWN_SWIFTSHADER_DIR}")
97 add_subdirectory(${DAWN_SWIFTSHADER_DIR} "${CMAKE_CURRENT_BINARY_DIR}/swiftshader")
98endif()
99
Ben Claytonbe2362b2022-01-18 18:58:16 +0000100if (${TINT_BUILD_BENCHMARKS})
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +0000101 set(BENCHMARK_ENABLE_TESTING FALSE CACHE BOOL FALSE FORCE)
102 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/benchmark EXCLUDE_FROM_ALL)
Ben Claytonbe2362b2022-01-18 18:58:16 +0000103endif()
104
Corentin Wallezf9f1c4b2022-05-16 09:11:21 +0000105if (NOT TARGET gmock AND ${TINT_BUILD_TESTS})
106 set(gtest_force_shared_crt ON CACHE BOOL "Controls whether a shared run-time library should be used even when Google Test is built as static library" FORCE)
107 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/googletest EXCLUDE_FROM_ALL)
David Neto5b46d712020-06-26 22:29:27 +0000108endif()