mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 00:17:03 +00:00
Remove glad and replace it with our own GL header
This completely removes the dependency on glad by generating the GL headers from gl.xml directly. This requires adding khrplatform.h so all Khronos dependencies are gathered in third_party/khronos. Also removes a stray CMakeLists.txt that was still hanging out. BUG=dawn:165 Change-Id: Ia64bc51bc8b18c6b48613918e2f309f7405ecb3b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/8163 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
abdb566c30
commit
8f4046b0b6
36
third_party/BUILD.gn
vendored
36
third_party/BUILD.gn
vendored
@@ -22,21 +22,6 @@ is_msvc = is_win && !is_clang
|
||||
# Third-party dependencies needed by libdawn_native
|
||||
###############################################################################
|
||||
|
||||
# Glad
|
||||
config("glad_public") {
|
||||
include_dirs = [ "glad/include" ]
|
||||
}
|
||||
|
||||
static_library("glad") {
|
||||
sources = [
|
||||
"glad/include/KHR/khrplatform.h",
|
||||
"glad/include/glad/glad.h",
|
||||
"glad/src/glad.c",
|
||||
]
|
||||
|
||||
public_configs = [ ":glad_public" ]
|
||||
}
|
||||
|
||||
# SPIRV-Cross
|
||||
spirv_cross_dir = dawn_spirv_cross_dir
|
||||
|
||||
@@ -127,19 +112,26 @@ static_library("spirv_cross_full_for_fuzzers") {
|
||||
]
|
||||
}
|
||||
|
||||
# An empty Vulkan target to add the include dirs and list the sources
|
||||
# for the header inclusion check.
|
||||
config("vulkan_headers_public") {
|
||||
include_dirs = [ "." ]
|
||||
# Empty targets to add the include dirs and list the sources of Khronos headers for header inclusion check.
|
||||
config("khronos_headers_public") {
|
||||
include_dirs = [ "khronos" ]
|
||||
}
|
||||
|
||||
source_set("vulkan_headers") {
|
||||
sources = [
|
||||
"vulkan/vk_platform.h",
|
||||
"vulkan/vulkan.h",
|
||||
"khronos/vulkan/vk_platform.h",
|
||||
"khronos/vulkan/vulkan.h",
|
||||
]
|
||||
|
||||
public_configs = [ ":vulkan_headers_public" ]
|
||||
public_configs = [ ":khronos_headers_public" ]
|
||||
}
|
||||
|
||||
source_set("khronos_platform") {
|
||||
sources = [
|
||||
"khronos/KHR/khrplatform.h",
|
||||
]
|
||||
|
||||
public_configs = [ ":khronos_headers_public" ]
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
|
||||
151
third_party/CMakeLists.txt
vendored
151
third_party/CMakeLists.txt
vendored
@@ -1,151 +0,0 @@
|
||||
# Copyright 2017 The Dawn Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# GLFW, only build the library
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
add_subdirectory(glfw)
|
||||
DawnExternalTarget("third_party" glfw)
|
||||
|
||||
# GoogleTest
|
||||
set(GTEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest)
|
||||
set(GMOCK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/googletest/googlemock)
|
||||
add_library(gtest STATIC ${GTEST_DIR}/src/gtest-all.cc ${GMOCK_DIR}/src/gmock-all.cc)
|
||||
target_include_directories(gtest SYSTEM PUBLIC ${GTEST_DIR}/include ${GMOCK_DIR}/include)
|
||||
target_include_directories(gtest SYSTEM PRIVATE ${GTEST_DIR} ${GMOCK_DIR})
|
||||
find_package(Threads)
|
||||
target_link_libraries(gtest ${CMAKE_THREAD_LIBS_INIT})
|
||||
DawnExternalTarget("third_party" gtest)
|
||||
|
||||
# Glad
|
||||
add_library(glad STATIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/glad/src/glad.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/glad/include/glad/glad.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/glad/include/KHR/khrplatform.h
|
||||
)
|
||||
set(GLAD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glad/include)
|
||||
set(GLAD_INCLUDE_DIR ${GLAD_INCLUDE_DIR} PARENT_SCOPE)
|
||||
target_include_directories(glad SYSTEM PUBLIC ${GLAD_INCLUDE_DIR})
|
||||
DawnExternalTarget("third_party" glad)
|
||||
|
||||
# SPIRV-Tools
|
||||
set(SPIRV_TOOLS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools/include PARENT_SCOPE)
|
||||
|
||||
# ShaderC
|
||||
# Prevent SPIRV-Tools from using Werror as it has a warning on MSVC
|
||||
set(SPIRV_WERROR OFF CACHE BOOL "" FORCE)
|
||||
# Don't add unnecessary shaderc targets
|
||||
set(SHADERC_SKIP_TESTS ON)
|
||||
set(SHADERC_SKIP_INSTALL ON)
|
||||
# Remove unused glslang and spirv-tools parts
|
||||
# set(ENABLE_HLSL OFF CACHE BOOL "")
|
||||
set(ENABLE_OPT OFF CACHE BOOL "")
|
||||
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "")
|
||||
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "")
|
||||
set(SKIP_SPIRV_TOOLS_INSTALL ON CACHE BOOL "")
|
||||
set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "")
|
||||
# Help shaderc find the non-standard paths for its dependencies
|
||||
set(SHADERC_GOOGLE_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/googletest CACHE STRING "Location of googletest source")
|
||||
set(SHADERC_GLSLANG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/glslang" CACHE STRING "Location of glslang source")
|
||||
set(SHADERC_SPIRV_TOOLS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools CACHE STRING "Location of spirv-tools source")
|
||||
# Help shaderc find the python executable when run inside VS.
|
||||
find_package(PythonInterp REQUIRED)
|
||||
set(PYTHON_EXE ${PYTHON_EXECUTABLE})
|
||||
# Need to include this for spirv-tools to find it
|
||||
add_subdirectory(spirv-headers)
|
||||
add_subdirectory(shaderc)
|
||||
# Namespace the shaderc targets in a folder to avoid cluttering the
|
||||
# Visual Studio solution explorer
|
||||
set_target_properties(
|
||||
add-copyright
|
||||
build-version
|
||||
check-copyright
|
||||
glslc
|
||||
glslc_exe
|
||||
install-headers
|
||||
shaderc
|
||||
shaderc_shared
|
||||
shaderc_util
|
||||
shaderc_combined_genfile
|
||||
shaderc-online-compile testdata
|
||||
SPIRV-Headers-example
|
||||
SPIRV-Headers-example-1.1
|
||||
PROPERTIES FOLDER "third_party/shaderc"
|
||||
)
|
||||
# Remove a bunch of targets we don't need that are pulled by shaderc and glslang
|
||||
set_target_properties(
|
||||
SPIRV-Headers-example-1.1
|
||||
SPIRV-Headers-example
|
||||
glslc_exe
|
||||
SPIRV-Tools-link
|
||||
SPVRemapper
|
||||
shaderc
|
||||
shaderc-online-compile
|
||||
shaderc_combined_genfile
|
||||
PROPERTIES EXCLUDE_FROM_ALL true
|
||||
)
|
||||
|
||||
# SPIRV-Cross
|
||||
set(SPIRV_CROSS_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/GLSL.std.450.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_common.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_cfg.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_cfg.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_cross.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_cross.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv.hpp
|
||||
)
|
||||
|
||||
set(NEED_SPIRV_CROSS_GLSL OFF)
|
||||
if (DAWN_ENABLE_D3D12)
|
||||
list(APPEND SPIRV_CROSS_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_hlsl.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_hlsl.hpp
|
||||
)
|
||||
set(NEED_SPIRV_CROSS_GLSL ON)
|
||||
endif()
|
||||
|
||||
if (DAWN_ENABLE_METAL)
|
||||
list(APPEND SPIRV_CROSS_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_msl.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_msl.hpp
|
||||
)
|
||||
set(NEED_SPIRV_CROSS_GLSL ON)
|
||||
endif()
|
||||
|
||||
if (DAWN_ENABLE_OPENGL OR NEED_SPIRV_CROSS_GLSL)
|
||||
list(APPEND SPIRV_CROSS_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_glsl.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv-cross/spirv_glsl.hpp
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(spirv_cross STATIC ${SPIRV_CROSS_SOURCES})
|
||||
target_compile_definitions(spirv_cross PUBLIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
|
||||
set(SPIRV_CROSS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
|
||||
DawnExternalTarget("third_party" spirv_cross)
|
||||
|
||||
# STB, used for stb_image
|
||||
set(STB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/stb PARENT_SCOPE)
|
||||
|
||||
# glm matrix math library
|
||||
set(GLM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glm PARENT_SCOPE)
|
||||
|
||||
# Tiny glTF loader library
|
||||
set(TINYGLTFLOADER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
|
||||
|
||||
# Vulkan headers
|
||||
set(VULKAN_HEADERS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
|
||||
3773
third_party/glad/include/glad/glad.h
vendored
3773
third_party/glad/include/glad/glad.h
vendored
File diff suppressed because it is too large
Load Diff
2274
third_party/glad/src/glad.c
vendored
2274
third_party/glad/src/glad.c
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user