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:
Corentin Wallez
2019-06-17 09:17:29 +00:00
committed by Commit Bot service account
parent abdb566c30
commit 8f4046b0b6
25 changed files with 243 additions and 6268 deletions

36
third_party/BUILD.gn vendored
View File

@@ -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" ]
}
###############################################################################

View File

@@ -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)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff