1# Copyright (c) 2015-2016 The Khronos Group Inc. 2# 3# Permission is hereby granted, free of charge, to any person obtaining a 4# copy of this software and/or associated documentation files (the 5# "Materials"), to deal in the Materials without restriction, including 6# without limitation the rights to use, copy, modify, merge, publish, 7# distribute, sublicense, and/or sell copies of the Materials, and to 8# permit persons to whom the Materials are furnished to do so, subject to 9# the following conditions: 10# 11# The above copyright notice and this permission notice shall be included 12# in all copies or substantial portions of the Materials. 13# 14# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS 15# KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS 16# SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT 17# https://www.khronos.org/registry/ 18# 19# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 23# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 26 27# 28# The SPIR-V headers from the SPIR-V Registry 29# https://www.khronos.org/registry/spir-v/ 30# 31cmake_minimum_required(VERSION 3.0) 32project(SPIRV-Headers VERSION 1.4.1) 33 34# There are two ways to use this project. 35# 36# Using this source tree directly from a CMake-based project: 37# 1. Add an add_subdirectory directive to include this sub directory. 38# 2. Use ${SPIRV-Headers_SOURCE_DIR}/include} in a target_include_directories 39# command. 40# 41# Installing the headers first, then using them with an implicit include 42# directory. To install the headers: 43# 1. mkdir build ; cd build 44# 2. cmake .. 45# 3. cmake --build . --target install 46 47# legacy 48add_custom_target(install-headers 49 COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv 50 $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv) 51 52option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples" 53 ${SPIRV_HEADERS_SKIP_EXAMPLES}) 54if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES}) 55 set(SPIRV_HEADERS_ENABLE_EXAMPLES ON) 56endif() 57if (SPIRV_HEADERS_ENABLE_EXAMPLES) 58 message(STATUS "Building SPIRV-Header examples") 59 add_subdirectory(example) 60endif() 61 62include(GNUInstallDirs) 63add_library(${PROJECT_NAME} INTERFACE) 64target_include_directories(${PROJECT_NAME} INTERFACE 65 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> 66) 67 68# Installation 69 70set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") 71 72set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") 73 74set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") 75set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") 76set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") 77set(namespace "${PROJECT_NAME}::") 78 79include(CMakePackageConfigHelpers) 80write_basic_package_version_file( 81 "${version_config}" 82 COMPATIBILITY SameMajorVersion 83) 84 85configure_package_config_file( 86 "cmake/Config.cmake.in" 87 "${project_config}" 88 INSTALL_DESTINATION "${config_install_dir}" 89) 90 91install( 92 TARGETS ${PROJECT_NAME} 93 EXPORT "${TARGETS_EXPORT_NAME}" 94 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 95 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 96 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 97 INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 98) 99 100install( 101 DIRECTORY include/spirv 102 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 103) 104 105install( 106 FILES "${project_config}" "${version_config}" 107 DESTINATION "${config_install_dir}" 108) 109 110install( 111 EXPORT "${TARGETS_EXPORT_NAME}" 112 NAMESPACE "${namespace}" 113 DESTINATION "${config_install_dir}" 114) 115 116