Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/third_party/CMakeLists.txt
1560 views
1
# Suppress all warnings from third-party projects.
2
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
3
4
set(SHADERC_THIRD_PARTY_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING
5
"Root location of all third_party projects")
6
set(SHADERC_GOOGLE_TEST_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/googletest" CACHE STRING
7
"Location of googletest source")
8
set(SHADERC_SPIRV_TOOLS_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/spirv-tools" CACHE STRING
9
"Location of spirv-tools source")
10
set(SHADERC_SPIRV_HEADERS_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/spirv-headers" CACHE STRING
11
"Location of spirv-headers source")
12
set(SHADERC_GLSLANG_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/glslang" CACHE STRING
13
"Location of glslang source")
14
set(SHADERC_EFFCEE_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/effcee" CACHE STRING
15
"Location of effcee source")
16
set(SHADERC_RE2_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/re2" CACHE STRING
17
"Location of re2 source")
18
set(SHADERC_TINT_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/tint" CACHE STRING
19
"Location of tint source")
20
set(SHADERC_ABSL_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/abseil_cpp" CACHE STRING
21
"Location of re2 source")
22
23
set( SKIP_GLSLANG_INSTALL ${SHADERC_SKIP_INSTALL} )
24
set( SKIP_SPIRV_TOOLS_INSTALL ${SHADERC_SKIP_INSTALL} )
25
set( SKIP_GOOGLETEST_INSTALL ${SHADERC_SKIP_INSTALL} )
26
27
# Configure third party projects.
28
if(${SHADERC_ENABLE_TESTS})
29
if (IS_DIRECTORY ${SHADERC_GOOGLE_TEST_DIR})
30
add_subdirectory(${SHADERC_GOOGLE_TEST_DIR} googletest)
31
endif()
32
if (NOT TARGET gmock)
33
message(FATAL_ERROR "gmock was not found - required for tests")
34
endif()
35
endif()
36
37
set(OLD_PLATFORM_TOOLSET ${CMAKE_GENERATOR_TOOLSET})
38
check_cxx_compiler_flag(-fPIC COMPILER_SUPPORTS_PIC)
39
40
41
if (IS_DIRECTORY ${SHADERC_SPIRV_HEADERS_DIR})
42
set(SPIRV_HEADERS_SKIP_EXAMPLES ON)
43
add_subdirectory(${SHADERC_SPIRV_HEADERS_DIR} spirv-headers)
44
endif()
45
46
if (NOT TARGET SPIRV-Tools)
47
# Check SPIRV-Tools before glslang so that it is linked into glslang.
48
# we control optimizations via glslang API calls directly.
49
if (IS_DIRECTORY ${SHADERC_SPIRV_TOOLS_DIR})
50
if ("${SHADERC_SKIP_TESTS}")
51
# Also skip building tests in SPIRV-Tools.
52
set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
53
elseif(NOT "${SPIRV_SKIP_TESTS}")
54
# SPIRV-Tools requires effcee, re2, and abseil to build tests.
55
# re2 depends on abseil, so abseil must be added first.
56
set(ABSL_INTERNAL_AT_LEAST_CXX17 ON)
57
set(ABSL_PROPAGATE_CXX_STD ON)
58
set(ABSL_ENABLE_INSTALL ON)
59
add_subdirectory(${SHADERC_ABSL_DIR} absl EXCLUDE_FROM_ALL)
60
61
# re2 tests take a long time and do not add much value, since re2 is a
62
# dependency of a dependency, so not running them.
63
set(RE2_BUILD_TESTING OFF CACHE STRING "Run RE2 Tests")
64
add_subdirectory(${SHADERC_RE2_DIR} re2)
65
add_subdirectory(${SHADERC_EFFCEE_DIR} effcee)
66
endif()
67
add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools)
68
if (NOT "${SPIRV_SKIP_TESTS}")
69
if (MSVC)
70
if (${MSVC_VERSION} LESS 1920)
71
# VS 2017 requires /bigobj on test_opt
72
# https://github.com/google/shaderc/issues/1345
73
# https://github.com/KhronosGroup/SPIRV-Tools/issues/5335
74
target_compile_options(test_opt PRIVATE /bigobj)
75
endif()
76
endif()
77
endif()
78
endif()
79
if (NOT TARGET SPIRV-Tools)
80
message(FATAL_ERROR "SPIRV-Tools was not found - required for compilation")
81
endif()
82
endif()
83
84
if (NOT TARGET glslang)
85
if (IS_DIRECTORY ${SHADERC_GLSLANG_DIR})
86
add_subdirectory(${SHADERC_GLSLANG_DIR} glslang)
87
endif()
88
if (NOT TARGET glslang)
89
message(FATAL_ERROR "glslang was not found - required for compilation")
90
endif()
91
if(WIN32)
92
# This is unfortunate but glslang forces our
93
# platform toolset to be v110, which we may not even have
94
# installed, undo anything glslang has done to it.
95
set(CMAKE_GENERATOR_TOOLSET "${OLD_PLATFORM_TOOLSET}" CACHE STRING
96
"Platform Toolset" FORCE)
97
endif()
98
endif()
99
100
if (SHADERC_ENABLE_WGSL_OUTPUT)
101
# Use Google Tint for WGSL output.
102
if (NOT TARGET libtint)
103
if (IS_DIRECTORY ${SHADERC_TINT_DIR})
104
if (NOT IS_DIRECTORY ${SHADERC_TINT_DIR}/out/docs)
105
# The Tint Doxygen configuration assumes it can write to the out/docs
106
# source directory.
107
message(STATUS "Tint source directory out/docs does not exist. Disabling doc generation")
108
set(TINT_BUILD_DOCS OFF)
109
endif()
110
set(TINT_BUILD_SPV_READER ON CACHE BOOL "Built Tint SPIR-V reader" FORCE)
111
set(TINT_BUILD_WGSL_WRITER ON CACHE BOOL "Build Tint WGSL writer" FORCE)
112
add_subdirectory(${SHADERC_TINT_DIR} tint)
113
endif()
114
endif()
115
if (NOT TARGET libtint)
116
message(FATAL_ERROR "Tint was not found - required for WGSL output")
117
endif()
118
endif (SHADERC_ENABLE_WGSL_OUTPUT)
119
120