blob: 40d41582d88c6422e66747f4f9332d55b8032ec8 [file] [log] [blame]
# Copyright 2018 The Amber 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.
# Include this file to find Dawn and and set up compilation and linking.
## Example usage:
##
## include(find_dawn.cmake)
## # Set HAVE_DAWN to 1 if we have Dawn, and 0 otherwise.
## add_definitions(-DHAVE_DAWN=$<BOOL:${Dawn_FOUND}>)
## # Set up link dependencies.
## if (${Dawn_FOUND})
## target_link_libraries(mylib Dawn::dawn_native)
## endif()
##
# Exports these settings to the includer:
# Boolean Dawn_FOUND indicates whether we found Dawn.
# If Dawn was found, then library dependencies for Dawn::dawn and Dawn::dawn_native
# will be set up.
set(Dawn_FOUND FALSE)
# Setup via CMake setting variables:
#
# Separately specify the directory locations of the Dawn headers and
# the dawn_native library.
#
# -DDawn_INCLUDE_DIR=<directory containing dawn/dawn_export.h>
# -DDawn_GEN_INCLUDE_DIR=<directory containing dawn/dawn.h>
# -DDawn_LIBRARY_DIR=<directory containing dawn_native library
# e.g., libdawn_native.a>
find_path(Dawn_INCLUDE_DIR
NAMES dawn/dawn_export.h
PATHS
"${Dawn_INCLUDE_DIR}"
)
find_path(Dawn_GEN_INCLUDE_DIR
NAMES dawn/dawn.h dawn/dawncpp.h
PATHS
"${Dawn_GEN_INCLUDE_DIR}"
)
find_library(Dawn_LIBRARY
NAMES dawn
PATHS
"${Dawn_LIBRARY_DIR}"
)
find_library(Dawn_native_LIBRARY
NAMES dawn_native
PATHS
"${Dawn_LIBRARY_DIR}"
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Dawn
DEFAULT_MSG
Dawn_INCLUDE_DIR Dawn_GEN_INCLUDE_DIR
Dawn_LIBRARY Dawn_native_LIBRARY
)
if(${Dawn_FOUND} AND NOT TARGET Dawn::dawn)
add_library(Dawn::dawn UNKNOWN IMPORTED)
set_target_properties(Dawn::dawn PROPERTIES
IMPORTED_LOCATION "${Dawn_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Dawn_INCLUDE_DIR};${Dawn_GEN_INCLUDE_DIR}")
endif()
if(${Dawn_FOUND} AND NOT TARGET Dawn::dawn_native)
add_library(Dawn::dawn_native UNKNOWN IMPORTED)
set_target_properties(Dawn::dawn_native PROPERTIES
IMPORTED_LOCATION "${Dawn_native_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Dawn_INCLUDE_DIR};${Dawn_GEN_INCLUDE_DIR}")
endif()
if (${Dawn_FOUND})
message(STATUS "Amber: Using Dawn headers at ${Dawn_INCLUDE_DIR}")
message(STATUS "Amber: Using Dawn generated headers at ${Dawn_GEN_INCLUDE_DIR}")
message(STATUS "Amber: Using Dawn library ${Dawn_LIBRARY}")
message(STATUS "Amber: Using Dawn native library ${Dawn_native_LIBRARY}")
else()
message(STATUS "Amber: Did not find Dawn")
endif()