Move set_if_not_defined into DawnSetIfNotDefined module in src/cmake
- Introduces src/cmake which will house various CMake modules that can be included in root CMakeLists.txt
Change-Id: I3baef3cf49528f601854a08e9fee90c3b7516d4f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/194900
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Jaswant Panchumarti <jaswant.panchumarti@kitware.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 28a58a3..f9d5f13 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,8 @@
)
enable_testing()
+list(INSERT CMAKE_MODULE_PATH 0 "${Dawn_SOURCE_DIR}/src/cmake")
+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
@@ -55,29 +57,14 @@
set(CMAKE_BUILD_TYPE "Debug")
endif()
+include(DawnSetIfNotDefined)
+
set(DAWN_BUILD_GEN_DIR "${Dawn_BINARY_DIR}/gen")
set(DAWN_GENERATOR_DIR "${Dawn_SOURCE_DIR}/generator")
set(DAWN_SRC_DIR "${Dawn_SOURCE_DIR}/src")
set(DAWN_INCLUDE_DIR "${Dawn_SOURCE_DIR}/include")
set(DAWN_TEMPLATE_DIR "${DAWN_GENERATOR_DIR}/templates")
-################################################################################
-# Configuration options
-################################################################################
-# set_if_not_defined(name value description)
-# Behaves like:
-# set(${name} ${value} CACHE STRING ${description})
-# If a variable is not already defined with the given name, otherwise the
-# function does nothing.
-# Simplifies customization by projects that use Dawn as a dependency.
-# Usages of set_if_not_defined can be safely replaced with `set` after
-# the minimum cmake version is bumped to >= 3.20
-function (set_if_not_defined name value description)
- if(NOT DEFINED ${name})
- set(${name} ${value} CACHE STRING ${description})
- endif()
-endfunction()
-
function (install_if_enabled target)
if(NOT DAWN_ENABLE_INSTALL)
return()
@@ -116,7 +103,9 @@
endforeach()
endfunction()
-
+################################################################################
+# Configuration options
+################################################################################
# Default values for the backend-enabling options
set(ENABLE_D3D11 OFF)
set(ENABLE_D3D12 OFF)
diff --git a/src/cmake/DawnSetIfNotDefined.cmake b/src/cmake/DawnSetIfNotDefined.cmake
new file mode 100644
index 0000000..4268771
--- /dev/null
+++ b/src/cmake/DawnSetIfNotDefined.cmake
@@ -0,0 +1,40 @@
+# Copyright 2024 The Dawn & Tint Authors
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# 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_if_not_defined(name value description)
+# Behaves like:
+# set(${name} ${value} CACHE STRING ${description})
+# If a variable is not already defined with the given name, otherwise the
+# function does nothing.
+# Simplifies customization by projects that use Dawn as a dependency.
+# Usages of set_if_not_defined can be safely replaced with `set` after
+# the minimum cmake version is bumped to >= 3.20
+function(set_if_not_defined name value description)
+ if(NOT DEFINED ${name})
+ set(${name} ${value} CACHE STRING ${description})
+ endif()
+endfunction()