aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2019-09-10 10:22:37 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-09-10 10:22:37 -0700
commit1bf420a7897c466fe9d56243bc76df050ad66438 (patch)
treed5a048708a32322f12632670bd061bfba315e4d1 /CMakeLists.txt
parent985033d3c58a7b855f1fbc8f47e8f7374e38e7f0 (diff)
parent36ef3defe87039c8580d6513ae360bef8b1f4d29 (diff)
downloadspirv-headers-1bf420a7897c466fe9d56243bc76df050ad66438.tar.gz
Merge "Merge aosp/master-ndk to aosp/master"
am: 36ef3defe8 Change-Id: If826da5d9133ec10aeeb4c233c43f2da18f74ed3
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt77
1 files changed, 66 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2488baf..5fd0196 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,8 +28,8 @@
# The SPIR-V headers from the SPIR-V Registry
# https://www.khronos.org/registry/spir-v/
#
-cmake_minimum_required(VERSION 2.8.11)
-project(SPIRV-Headers)
+cmake_minimum_required(VERSION 3.0)
+project(SPIRV-Headers VERSION 1.4.1)
# There are two ways to use this project.
#
@@ -44,17 +44,72 @@ project(SPIRV-Headers)
# 2. cmake ..
# 3. cmake --build . --target install
-file(GLOB_RECURSE HEADER_FILES
- RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- include/spirv/*)
-foreach(HEADER_FILE ${HEADER_FILES})
- get_filename_component(HEADER_INSTALL_DIR ${HEADER_FILE} PATH)
- install(FILES ${HEADER_FILE} DESTINATION ${HEADER_INSTALL_DIR})
-endforeach()
-
# legacy
add_custom_target(install-headers
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv
$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv)
-add_subdirectory(example)
+option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples"
+ ${SPIRV_HEADERS_SKIP_EXAMPLES})
+if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES})
+ set(SPIRV_HEADERS_ENABLE_EXAMPLES ON)
+endif()
+if (SPIRV_HEADERS_ENABLE_EXAMPLES)
+ message(STATUS "Building SPIRV-Header examples")
+ add_subdirectory(example)
+endif()
+
+include(GNUInstallDirs)
+add_library(${PROJECT_NAME} INTERFACE)
+target_include_directories(${PROJECT_NAME} INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+)
+
+# Installation
+
+set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
+
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+set(namespace "${PROJECT_NAME}::")
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${version_config}"
+ COMPATIBILITY SameMajorVersion
+)
+
+configure_package_config_file(
+ "cmake/Config.cmake.in"
+ "${project_config}"
+ INSTALL_DESTINATION "${config_install_dir}"
+)
+
+install(
+ TARGETS ${PROJECT_NAME}
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
+
+install(
+ DIRECTORY include/spirv
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
+
+install(
+ FILES "${project_config}" "${version_config}"
+ DESTINATION "${config_install_dir}"
+)
+
+install(
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ NAMESPACE "${namespace}"
+ DESTINATION "${config_install_dir}"
+)
+