1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9521fcf6a7..9c38142ec2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -460,6 +460,11 @@ set(TINT_SPIRV_TOOLS_DIR ${DAWN_SPIRV_TOOLS_DIR})
################################################################################
# Run on all subdirectories
################################################################################
+find_package(absl CONFIG REQUIRED)
+if (DAWN_ENABLE_VULKAN)
+ find_package(VulkanHeaders CONFIG REQUIRED)
+ find_package(VulkanUtilityLibraries CONFIG REQUIRED)
+endif()
add_subdirectory(third_party)
# TODO(crbug.com/tint/455): Tint does not currently build with CMake when
diff --git a/src/cmake/BundleLibraries.cmake b/src/cmake/BundleLibraries.cmake
index 682a73924c..1ec358c54c 100644
--- a/src/cmake/BundleLibraries.cmake
+++ b/src/cmake/BundleLibraries.cmake
@@ -92,7 +92,18 @@ function(bundle_libraries output_target library_type)
# Collect $<TARGET_OBJECTS:...> from STATIC and OBJECT library dependencies
set(all_objects "")
+ set(all_libraries "")
+ message(STATUS "all_dependencies: ${all_dependencies}")
foreach(dependency IN LISTS all_dependencies)
+ if("${dependency}" MATCHES "^absl::")
+ list(APPEND all_libraries ${dependency})
+ continue()
+ endif()
+ if("${dependency}" MATCHES "^Vulkan-Headers" OR "${dependency}" MATCHES "^VulkanUtility")
+ list(APPEND all_libraries ${dependency})
+ continue()
+ endif()
+
get_target_property(type ${dependency} TYPE)
# We only want object files from static or object libraries.
@@ -112,6 +123,7 @@ function(bundle_libraries output_target library_type)
# Create the output library using the validated type and collected objects
# If all_objects is empty, add_library will still create an empty library of the specified type.
add_library(${output_target} ${library_type} ${all_objects})
+ target_link_libraries(${output_target} PRIVATE ${all_libraries})
# Add dependencies to ensure input targets are built before the bundled library.
# This handles the build order correctly.
diff --git a/src/cmake/DawnConfig.cmake.in b/src/cmake/DawnConfig.cmake.in
index 8bfeda55bc..a0f9858530 100644
--- a/src/cmake/DawnConfig.cmake.in
+++ b/src/cmake/DawnConfig.cmake.in
@@ -31,4 +31,9 @@
# 2. https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20Export%20Configuration.html
@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+
+find_dependency(absl CONFIG)
+
include ("${CMAKE_CURRENT_LIST_DIR}/DawnTargets.cmake")
diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt
index 21ef415451..7f4867fee6 100644
--- a/src/dawn/native/CMakeLists.txt
+++ b/src/dawn/native/CMakeLists.txt
@@ -636,11 +636,17 @@ if ((DAWN_ENABLE_OPENGL OR DAWN_ENABLE_VULKAN) AND DAWN_ENABLE_SPIRV_VALIDATION)
endif()
if (DAWN_ENABLE_OPENGL)
+ find_path(OPENGL_REGISTRY_INCLUDE_DIRS "GL/glcorearb.h")
+ find_file(
+ OPENGL_XML_FILE
+ NAMES "opengl/gl.xml"
+ PATHS "${OPENGL_REGISTRY_INCLUDE_DIRS}/../share"
+ )
DawnGenerator(
SCRIPT "${Dawn_SOURCE_DIR}/generator/opengl_loader_generator.py"
PRINT_NAME "OpenGL function loader"
EXTRA_PARAMETERS "--gl-xml"
- "${Dawn_SOURCE_DIR}/third_party/khronos/OpenGL-Registry/xml/gl.xml"
+ "${OPENGL_XML_FILE}"
"--supported-extensions"
"${Dawn_SOURCE_DIR}/src/dawn/native/opengl/supported_extensions.json"
OUTPUT_HEADERS DAWN_NATIVE_OPENGL_AUTOGEN_HEADERS
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index b423c43d27..068a784b3d 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -41,6 +41,7 @@ if (DAWN_FETCH_DEPENDENCIES)
)
endif ()
+if(0)
set(ABSL_ROOT_DIR ${DAWN_ABSEIL_DIR})
if (NOT TARGET absl::strings)
# Recommended setting for compatibility with future abseil releases.
@@ -62,6 +63,7 @@ if (NOT TARGET absl::strings)
add_subdirectory(${DAWN_ABSEIL_DIR} "${CMAKE_CURRENT_BINARY_DIR}/abseil")
endif()
+endif()
if (DAWN_BUILD_PROTOBUF AND EXISTS "${DAWN_PROTOBUF_DIR}/cmake")
if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") AND WIN32)
@@ -175,10 +177,12 @@ endif()
if (DAWN_ENABLE_DESKTOP_GL OR DAWN_ENABLE_OPENGLES)
# Header-only library for khrplatform.h
add_library(dawn_khronos_platform INTERFACE)
- target_sources(dawn_khronos_platform INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos/EGL-Registry/api/KHR/khrplatform.h")
- target_include_directories(dawn_khronos_platform INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos/EGL-Registry/api")
+ find_path(EGL_REGISTRY_INCLUDE_DIRS "EGL/egl.h")
+ target_sources(dawn_khronos_platform INTERFACE "${EGL_REGISTRY_INCLUDE_DIRS}/KHR/khrplatform.h")
+ target_include_directories(dawn_khronos_platform INTERFACE "${EGL_REGISTRY_INCLUDE_DIRS}")
endif()
+if (0)
if (NOT TARGET Vulkan::Headers AND DAWN_ENABLE_VULKAN)
message(STATUS "Dawn: using Vulkan::Headers at ${DAWN_VULKAN_HEADERS_DIR}")
@@ -190,6 +194,7 @@ if (NOT TARGET Vulkan::UtilityHeaders AND DAWN_ENABLE_VULKAN)
message(STATUS "Dawn: using VulkanUtilityLibraries at ${DAWN_VULKAN_UTILITY_LIBRARIES_DIR}")
add_subdirectory(${DAWN_VULKAN_UTILITY_LIBRARIES_DIR} "${CMAKE_CURRENT_BINARY_DIR}/vulkan-utility-libraries/src")
endif()
+endif()
if (DAWN_ENABLE_SWIFTSHADER AND NOT TARGET vk_swiftshader)
set(SWIFTSHADER_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|