aboutsummaryrefslogtreecommitdiff
path: root/contrib/DirectX-Headers/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/DirectX-Headers/CMakeLists.txt')
-rw-r--r--contrib/DirectX-Headers/CMakeLists.txt87
1 files changed, 87 insertions, 0 deletions
diff --git a/contrib/DirectX-Headers/CMakeLists.txt b/contrib/DirectX-Headers/CMakeLists.txt
new file mode 100644
index 0000000..9d3c51b
--- /dev/null
+++ b/contrib/DirectX-Headers/CMakeLists.txt
@@ -0,0 +1,87 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3cmake_minimum_required(VERSION 3.10.2)
4project(DirectX-Headers
5 LANGUAGES CXX
6 VERSION 1.4.9
7)
8
9set(CMAKE_CXX_STANDARD 14)
10set(CMAKE_CXX_STANDARD_REQUIRED ON)
11set(CMAKE_CXX_EXTENSIONS OFF)
12
13# It's useful to know if you are a top level project or not, if your project is
14# being consumed via add_subdirectory
15if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
16 set(IS_TOPLEVEL_PROJECT TRUE)
17else()
18 set(IS_TOPLEVEL_PROJECT FALSE)
19endif()
20
21# Use DXHEADERS_* prefix to avoid potential name conflicts in cmake-gui, and allow
22# grouping by prefix if more options are added
23#
24# Testing should only be enabled by default if we are top level. Otherwise clients can set it
25# either via cmake or cmake-gui
26option(DXHEADERS_BUILD_TEST "Build the test" ${IS_TOPLEVEL_PROJECT})
27option(DXHEADERS_INSTALL "Installation logic" ${IS_TOPLEVEL_PROJECT})
28
29include(GNUInstallDirs)
30
31# Enables consumers to add this library as a link target to automatically add
32# these include directories, regardless of whether this is referenced via subdirectory
33# or from an installed location
34add_library(DirectX-Headers INTERFACE)
35target_include_directories(DirectX-Headers SYSTEM INTERFACE
36 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
37 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
38)
39
40# For non-Windows targets, also add the WSL stubs to the include path
41if (NOT WIN32)
42 target_include_directories(DirectX-Headers SYSTEM INTERFACE
43 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/wsl/stubs>"
44 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsl/stubs>"
45 )
46endif()
47
48add_library(Microsoft::DirectX-Headers ALIAS DirectX-Headers)
49
50add_library(DirectX-Guids STATIC src/dxguids.cpp)
51target_link_libraries(DirectX-Guids PRIVATE DirectX-Headers)
52
53add_library(Microsoft::DirectX-Guids ALIAS DirectX-Guids)
54
55if (DXHEADERS_INSTALL)
56 # Install the targets
57 install(TARGETS DirectX-Headers DirectX-Guids
58 EXPORT DirectX-Headers-Targets
59 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
60 # Create the targets CMake file which contains the above definitions
61 install(EXPORT DirectX-Headers-Targets FILE directx-headers-targets.cmake
62 NAMESPACE Microsoft::
63 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
64
65 # Install the actual includes
66 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/"
67 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
68
69 # Create the CMake config files
70 include(CMakePackageConfigHelpers)
71 write_basic_package_version_file("directx-headers-config-version.cmake"
72 VERSION ${PROJECT_VERSION}
73 COMPATIBILITY SameMajorVersion)
74 configure_package_config_file(
75 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/directx-headers-config.cmake.in"
76 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
77 INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
78
79 # Install the CMake config files
80 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
81 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config-version.cmake"
82 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
83endif()
84
85if (DXHEADERS_BUILD_TEST)
86 add_subdirectory(test)
87endif()