From 6c8ae19be66cee247980a48e736a4e05d14de179 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Tue, 2 Dec 2025 16:39:36 -0800 Subject: Immediate-mode renderer, triangle demo, shader compilation in cmake, Agility SDK --- contrib/DirectX-Headers-1.618.2/CMakeLists.txt | 118 +++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 contrib/DirectX-Headers-1.618.2/CMakeLists.txt (limited to 'contrib/DirectX-Headers-1.618.2/CMakeLists.txt') diff --git a/contrib/DirectX-Headers-1.618.2/CMakeLists.txt b/contrib/DirectX-Headers-1.618.2/CMakeLists.txt new file mode 100644 index 0000000..c96a580 --- /dev/null +++ b/contrib/DirectX-Headers-1.618.2/CMakeLists.txt @@ -0,0 +1,118 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +cmake_minimum_required(VERSION 3.10.2) +project(DirectX-Headers + LANGUAGES CXX + VERSION 1.618.2 +) +include(CTest) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) +enable_testing() + +# It's useful to know if you are a top level project or not, if your project is +# being consumed via add_subdirectory +if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + set(IS_TOPLEVEL_PROJECT TRUE) +else() + set(IS_TOPLEVEL_PROJECT FALSE) +endif() + +# Use DXHEADERS_* prefix to avoid potential name conflicts in cmake-gui, and allow +# grouping by prefix if more options are added +# +# Testing should only be enabled by default if we are top level. Otherwise clients can set it +# either via cmake or cmake-gui +option(DXHEADERS_BUILD_TEST "Build the test" ${IS_TOPLEVEL_PROJECT}) +option(DXHEADERS_INSTALL "Installation logic" ${IS_TOPLEVEL_PROJECT}) +option(DXHEADERS_BUILD_GOOGLE_TEST "Build the google test suite" ${IS_TOPLEVEL_PROJECT}) + +include(GNUInstallDirs) + +# Enables consumers to add this library as a link target to automatically add +# these include directories, regardless of whether this is referenced via subdirectory +# or from an installed location +add_library(DirectX-Headers STATIC src/d3dx12_property_format_table.cpp) +target_include_directories(DirectX-Headers SYSTEM PUBLIC + "$" + "$" +) +target_include_directories(DirectX-Headers PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/directx) + +add_library(Microsoft::DirectX-Headers ALIAS DirectX-Headers) + +add_library(DirectX-Guids STATIC src/dxguids.cpp) +target_link_libraries(DirectX-Guids PRIVATE DirectX-Headers) + +add_library(Microsoft::DirectX-Guids ALIAS DirectX-Guids) + +# For non-Windows targets, also add the WSL stubs to the include path +if (NOT WIN32) + target_include_directories(DirectX-Headers SYSTEM PUBLIC + "$" + "$" + ) +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) + # MinGW has RPC headers which define old versions, and complain if D3D + # headers are included before the RPC headers, since D3D headers were + # generated with new MIDL and "require" new RPC headers. + target_compile_definitions(DirectX-Headers PRIVATE "__REQUIRED_RPCNDR_H_VERSION__=475") + target_compile_definitions(DirectX-Guids PRIVATE "__REQUIRED_RPCNDR_H_VERSION__=475") +endif() + +if (DXHEADERS_INSTALL) + # Install the targets + install(TARGETS DirectX-Headers DirectX-Guids + EXPORT DirectX-Headers-Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + # Create the targets CMake file which contains the above definitions + install(EXPORT DirectX-Headers-Targets FILE directx-headers-targets.cmake + NAMESPACE Microsoft:: + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake) + + # Install the actual includes + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + # Create the CMake config files + include(CMakePackageConfigHelpers) + write_basic_package_version_file("directx-headers-config-version.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/directx-headers-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake) + + # Install the CMake config files + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config-version.cmake" + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake) + + # Create pkg-config file + include(cmake/JoinPaths.cmake) + # from: https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files + join_paths(DIRECTX_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + join_paths(DIRECTX_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/DirectX-Headers.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/DirectX-Headers.pc" @ONLY) + + # Install the pkg-config file + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/DirectX-Headers.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +endif() + +if (BUILD_TESTING) + if (DXHEADERS_BUILD_TEST) + add_subdirectory(test) + endif() + + if (DXHEADERS_BUILD_GOOGLE_TEST) + # We do not want to install GoogleTest when packaging DirectX-Headers. + set(INSTALL_GTEST OFF) + add_subdirectory(googletest) + endif() +endif() -- cgit v1.2.3