Various cleanups to CMake files.
- Only request Python3 once.
- Put conditionals around add_subdirectory instead of the file itself.
- Cleanup dawn/glfw/CMakelists.txt a bit to make it simpler.
Bug: None
Change-Id: I5a8d869eaba30a9d75b8ca5d96459978ec22792e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/181462
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 082dca7..9e29093 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -369,8 +369,8 @@
message(STATUS "Using provided LIB_FUZZING_ENGINE options: ${TINT_LIB_FUZZING_ENGINE_LINK_OPTIONS}")
endif()
-message(STATUS "Using python3")
find_package(Python3 REQUIRED)
+message(STATUS "Dawn: using python at ${Python3_EXECUTABLE}")
################################################################################
# common_compile_options - sets compiler and linker options common for dawn and
@@ -562,7 +562,6 @@
set(BUILD_SHARED_LIBS 0)
add_subdirectory(src/tint)
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_SAVED})
-
add_subdirectory(generator)
add_subdirectory(src/dawn)
diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt
index aca1d28..9e643ad 100644
--- a/generator/CMakeLists.txt
+++ b/generator/CMakeLists.txt
@@ -25,9 +25,6 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-find_package(Python3 REQUIRED)
-message(STATUS "Dawn: using python at ${Python3_EXECUTABLE}")
-
# Check for Jinja2
if (NOT DAWN_JINJA2_DIR)
message(STATUS "Dawn: Using system jinja2")
diff --git a/src/dawn/CMakeLists.txt b/src/dawn/CMakeLists.txt
index 9b0ed37..4bb4986 100644
--- a/src/dawn/CMakeLists.txt
+++ b/src/dawn/CMakeLists.txt
@@ -34,36 +34,18 @@
add_subdirectory(platform)
add_subdirectory(native)
add_subdirectory(wire)
-# TODO(dawn:269): Remove once the implementation-based swapchains are removed.
add_subdirectory(utils)
-add_subdirectory(glfw)
-add_subdirectory(tests/benchmarks)
+if (DAWN_BUILD_BENCHMARKS)
+ add_subdirectory(tests/benchmarks)
+endif()
+if(DAWN_USE_GLFW)
+ add_subdirectory(glfw)
+endif()
if (DAWN_BUILD_SAMPLES)
- #TODO(dawn:269): Add this once implementation-based swapchains are removed.
- #add_subdirectory(src/utils)
add_subdirectory(samples)
endif()
-
if (DAWN_BUILD_NODE_BINDINGS)
- set(NODE_BINDING_DEPS
- ${NODE_ADDON_API_DIR}
- ${NODE_API_HEADERS_DIR}
- ${WEBGPU_IDL_PATH}
- )
- foreach(DEP ${NODE_BINDING_DEPS})
- if (NOT EXISTS ${DEP})
- message(FATAL_ERROR
- "DAWN_BUILD_NODE_BINDINGS requires missing dependency '${DEP}'\n"
- "Please follow the 'Fetch dependencies' instructions at:\n"
- "./src/dawn/node/README.md"
- )
- endif()
- endforeach()
- if (NOT CMAKE_POSITION_INDEPENDENT_CODE)
- message(FATAL_ERROR "DAWN_BUILD_NODE_BINDINGS requires building with DAWN_ENABLE_PIC")
- endif()
-
add_subdirectory(node)
endif()
diff --git a/src/dawn/glfw/CMakeLists.txt b/src/dawn/glfw/CMakeLists.txt
index 1cefdb2..2e5d56c 100644
--- a/src/dawn/glfw/CMakeLists.txt
+++ b/src/dawn/glfw/CMakeLists.txt
@@ -25,9 +25,7 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-if(DAWN_USE_GLFW)
-
-add_library(dawn_glfw STATIC)
+add_library(dawn_glfw)
common_compile_options(dawn_glfw)
target_sources(dawn_glfw
INTERFACE
@@ -37,25 +35,21 @@
)
target_link_libraries(dawn_glfw
PUBLIC
- glfw
dawncpp_headers
- dawn_common
PRIVATE
+ glfw
+ dawn_common
dawn_internal_config
)
-target_compile_definitions(dawn_glfw PRIVATE "WGPU_IMPLEMENTATION")
+target_compile_definitions(dawn_glfw PRIVATE "WGPU_GLFW_IMPLEMENTATION")
if(BUILD_SHARED_LIBS)
- target_compile_definitions(dawn_glfw PRIVATE "WGPU_SHARED_LIBRARY")
+ target_compile_definitions(dawn_glfw PRIVATE "WGPU_GLFW_SHARED_LIBRARY")
endif()
if (DAWN_ENABLE_METAL)
target_link_libraries(dawn_glfw PRIVATE "-framework Metal")
- target_sources(dawn_glfw PRIVATE
- "utils_metal.mm"
- )
+ target_sources(dawn_glfw PRIVATE "utils_metal.mm")
endif()
add_library(webgpu_glfw ALIAS dawn_glfw)
-
-endif()
diff --git a/src/dawn/node/CMakeLists.txt b/src/dawn/node/CMakeLists.txt
index e0fe9b7..d8860f6 100644
--- a/src/dawn/node/CMakeLists.txt
+++ b/src/dawn/node/CMakeLists.txt
@@ -25,6 +25,24 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+set(NODE_BINDING_DEPS
+ ${NODE_ADDON_API_DIR}
+ ${NODE_API_HEADERS_DIR}
+ ${WEBGPU_IDL_PATH}
+)
+foreach(DEP ${NODE_BINDING_DEPS})
+ if (NOT EXISTS ${DEP})
+ message(FATAL_ERROR
+ "DAWN_BUILD_NODE_BINDINGS requires missing dependency '${DEP}'\n"
+ "Please follow the 'Fetch dependencies' instructions at:\n"
+ "./src/dawn/node/README.md"
+ )
+ endif()
+endforeach()
+if (NOT CMAKE_POSITION_INDEPENDENT_CODE)
+ message(FATAL_ERROR "DAWN_BUILD_NODE_BINDINGS requires building with DAWN_ENABLE_PIC")
+endif()
+
set(DAWN_NODE_GEN_DIR "${DAWN_BUILD_GEN_DIR}/node")
set(IDLGEN_TOOL_DIR "${PROJECT_SOURCE_DIR}/tools/src/cmd/idlgen")
diff --git a/src/dawn/tests/benchmarks/CMakeLists.txt b/src/dawn/tests/benchmarks/CMakeLists.txt
index c5af722..fcbd266 100644
--- a/src/dawn/tests/benchmarks/CMakeLists.txt
+++ b/src/dawn/tests/benchmarks/CMakeLists.txt
@@ -25,18 +25,19 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-if (${DAWN_BUILD_BENCHMARKS})
- add_executable(dawn_benchmarks
+add_executable(dawn_benchmarks
"NullDeviceSetup.cpp"
"NullDeviceSetup.h"
"ObjectCreation.cpp"
- )
- set_target_properties(dawn_benchmarks PROPERTIES FOLDER "Benchmarks")
+)
+set_target_properties(dawn_benchmarks PROPERTIES FOLDER "Benchmarks")
- target_include_directories(dawn_benchmarks PUBLIC "${PROJECT_SOURCE_DIR}/include")
- target_include_directories(dawn_benchmarks PUBLIC "${PROJECT_SOURCE_DIR}/src")
+target_include_directories(dawn_benchmarks PUBLIC
+ "${PROJECT_SOURCE_DIR}/include"
+ "${PROJECT_SOURCE_DIR}/src"
+)
- target_link_libraries(dawn_benchmarks PRIVATE
+target_link_libraries(dawn_benchmarks PRIVATE
benchmark::benchmark
benchmark::benchmark_main
dawn_common
@@ -44,5 +45,5 @@
dawn_utils
dawncpp_headers
dawncpp
- dawn_proc)
-endif()
+ dawn_proc
+)
diff --git a/src/dawn/utils/CMakeLists.txt b/src/dawn/utils/CMakeLists.txt
index 891f1de..b437164 100644
--- a/src/dawn/utils/CMakeLists.txt
+++ b/src/dawn/utils/CMakeLists.txt
@@ -78,7 +78,3 @@
elseif(UNIX)
target_sources(dawn_utils PRIVATE "PosixTimer.cpp")
endif()
-
-if (DAWN_ENABLE_METAL)
- target_link_libraries(dawn_utils PRIVATE "-framework Metal")
-endif()
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index 17c4aab..8f3e3ae 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -32,8 +32,6 @@
# It is particularly interesting when building dawn as a subdirectory in
# a parent project that does not want to use depot_tools.
if (${DAWN_FETCH_DEPENDENCIES})
- find_package(Python3 REQUIRED)
-
set(EXTRA_FETCH_ARGS)
if (NOT TARGET gmock AND ${TINT_BUILD_TESTS})
list(APPEND EXTRA_FETCH_ARGS --use-test-deps)
@@ -76,6 +74,7 @@
if(NOT TARGET glslang AND (${TINT_BUILD_GLSL_WRITER} OR ${TINT_BUILD_GLSL_VALIDATOR}) AND ${TINT_BUILD_CMD_TOOLS})
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "" FORCE)
+ set(ENABLE_OPT OFF CACHE BOOL "" FORCE)
add_subdirectory("${DAWN_THIRD_PARTY_DIR}/vulkan-deps/glslang/src" "${CMAKE_CURRENT_BINARY_DIR}/glslang" EXCLUDE_FROM_ALL)
endif()