# Copyright (c) 2020 Sony Interactive Entertainment Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # * 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. # * Neither the name of Intel Corporation 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 PARTNativeLAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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. # # Try to find Harfbuzz include and library directories. # # After successful discovery, this will set for inclusion where needed: # Dawn_INCLUDE_DIRS - containg the Dawn headers # Dawn_LIBRARIES - containg the Dawn library #[=======================================================================[.rst: FindDawn -------------- Find Dawn headers and libraries. Imported Targets ^^^^^^^^^^^^^^^^ ``Dawn::dawn`` The Dawn library, if found. ``Dawn::native`` The Dawn Native library, if found. ``Dawn::wire``` The Dawn Wire library, if found. Result Variables ^^^^^^^^^^^^^^^^ This will define the following variables in your project: ``Dawn_FOUND`` true if (the requested version of) Dawn is available. ``Dawn_LIBRARIES`` the libraries to link against to use Dawn. ``Dawn_INCLUDE_DIRS`` where to find the Dawn headers. ``Dawn_COMPILE_OPTIONS`` this should be passed to target_compile_options(), if the target is not used for linking #]=======================================================================] find_path(WebGPU_INCLUDE_DIR NAMES webgpu/webgpu.h ) find_path(Dawn_INCLUDE_DIR NAMES dawn/dawn_proc.h ) find_library(Dawn_LIBRARY NAMES ${Dawn_NAMES} dawn_proc ) # Find components if (WebGPU_INCLUDE_DIR AND Dawn_INCLUDE_DIR AND Dawn_LIBRARY) set(_Dawn_REQUIRED_LIBS_FOUND ON) set(Dawn_LIBS_FOUND "Dawn (required): ${Dawn_LIBRARY}") else () set(_Dawn_REQUIRED_LIBS_FOUND OFF) set(Dawn_LIBS_NOT_FOUND "Dawn (required)") endif () if ("native" IN_LIST Dawn_FIND_COMPONENTS) find_path(Dawn_Native_INCLUDE_DIR NAMES dawn_native/dawn_native_export.h ) find_library(Dawn_Native_LIBRARY NAMES dawn_native ) if (Dawn_Native_INCLUDE_DIR AND Dawn_Native_LIBRARY) if (Dawn_FIND_REQUIRED_native) list(APPEND Dawn_LIBS_FOUND "Native (required): ${Dawn_Native_LIBRARY}") else () list(APPEND Dawn_LIBS_FOUND "Native (optional): ${Dawn_Native_LIBRARY}") endif () else () if (Dawn_FIND_REQUIRED_native) set(_Dawn_REQUIRED_LIBS_FOUND OFF) list(APPEND Dawn_LIBS_NOT_FOUND "Native (required)") else () list(APPEND Dawn_LIBS_NOT_FOUND "Native (optional)") endif () endif () endif () if ("wire" IN_LIST Dawn_FIND_COMPONENTS) find_path(Dawn_Wire_INCLUDE_DIR NAMES dawn_wire/dawn_wire_export.h ) find_library(Dawn_Wire_LIBRARY NAMES dawn_wire ) if (Dawn_Wire_INCLUDE_DIR AND Dawn_Wire_LIBRARY) if (Dawn_FIND_REQUIRED_wire) list(APPEND Dawn_LIBS_FOUND "Wire (required): ${Dawn_Wire_LIBRARY}") else () list(APPEND Dawn_LIBS_FOUND "Wire (optional): ${Dawn_Wire_LIBRARY}") endif () else () if (Dawn_FIND_REQUIRED_wire) set(_Dawn_REQUIRED_LIBS_FOUND OFF) list(APPEND Dawn_LIBS_NOT_FOUND "Wire (required)") else () list(APPEND Dawn_LIBS_NOT_FOUND "Wire (optional)") endif () endif () endif () if (NOT Dawn_FIND_QUIETLY) if (Dawn_LIBS_FOUND) message(STATUS "Found the following Dawn libraries:") foreach (found ${Dawn_LIBS_FOUND}) message(STATUS " ${found}") endforeach () endif () if (Dawn_LIBS_NOT_FOUND) message(STATUS "The following Dawn libraries were not found:") foreach (found ${Dawn_LIBS_NOT_FOUND}) message(STATUS " ${found}") endforeach () endif () endif () include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Dawn FOUND_VAR Dawn_FOUND REQUIRED_VARS WebGPU_INCLUDE_DIR Dawn_INCLUDE_DIR Dawn_LIBRARY _Dawn_REQUIRED_LIBS_FOUND ) if (Dawn_LIBRARY AND NOT TARGET Dawn::dawn) add_library(Dawn::dawn UNKNOWN IMPORTED GLOBAL) set_target_properties(Dawn::dawn PROPERTIES IMPORTED_LOCATION "${Dawn_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${WebGPU_INCLUDE_DIR};${Dawn_INCLUDE_DIR}" ) endif () if (Dawn_Native_LIBRARY AND NOT TARGET Dawn::native) add_library(Dawn::native UNKNOWN IMPORTED GLOBAL) set_target_properties(Dawn::native PROPERTIES IMPORTED_LOCATION "${Dawn_Native_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Dawn_INCLUDE_DIR};${Dawn_Native_INCLUDE_DIR}" ) endif () if (Dawn_Native_LIBRARY AND NOT TARGET Dawn::wire) add_library(Dawn::wire UNKNOWN IMPORTED GLOBAL) set_target_properties(Dawn::wire PROPERTIES IMPORTED_LOCATION "${Dawn_Wire_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Dawn_INCLUDE_DIR};${Dawn_Wire_INCLUDE_DIR}" ) endif () mark_as_advanced( Dawn_INCLUDE_DIR Dawn_LIBRARY Dawn_Native_INCLUDE_DIR Dawn_Native_LIBRARY Dawn_Wire_INCLUDE_DIR Dawn_Wire_LIBRARY ) if (Dawn_FOUND) set(Dawn_LIBRARIES ${Dawn_LIBRARY} ${Dawn_Native_LIBRARY} ${Dawn_Wire_LIBRARY} ) set(Dawn_INCLUDE_DIRS ${WebGPU_INCLUDE_DIR} ${Dawn_INCLUDE_DIR} ${Dawn_Native_INCLUDE_DIR} ${Dawn_Wire_INCLUDE_DIR} ) endif ()