diff --git a/CMakeLists.txt b/CMakeLists.txt index 962db6d5..0a85cb78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -164,16 +164,16 @@ set(SHADER_SOURCES Src/Shaders/ToneMap.fx) # These source files are identical in both DX11 and DX12 version. -set(LIBRARY_HEADERS ${LIBRARY_HEADERS} +list(APPEND LIBRARY_HEADERS Inc/SimpleMath.h Inc/SimpleMath.inl) -set(LIBRARY_SOURCES ${LIBRARY_SOURCES} +list(APPEND LIBRARY_SOURCES Src/BinaryReader.cpp Src/Geometry.cpp Src/SimpleMath.cpp) -set(LIBRARY_SOURCES ${LIBRARY_SOURCES} +list(APPEND LIBRARY_SOURCES Src/AlignedNew.h Src/Bezier.h Src/BinaryReader.h @@ -187,7 +187,7 @@ set(LIBRARY_SOURCES ${LIBRARY_SOURCES} Src/vbo.h Src/TeapotData.inc) -set(SHADER_SOURCES ${SHADER_SOURCES} +list(APPEND SHADER_SOURCES Src/Shaders/Common.fxh Src/Shaders/Lighting.fxh Src/Shaders/PBRCommon.fxh @@ -198,30 +198,30 @@ set(SHADER_SOURCES ${SHADER_SOURCES} # Xbox-specific extensions if(DEFINED XBOX_CONSOLE_TARGET) - set(LIBRARY_HEADERS ${LIBRARY_HEADERS} + list(APPEND LIBRARY_HEADERS Inc/XboxDDSTextureLoader.h) - set(LIBRARY_SOURCES ${LIBRARY_SOURCES} + list(APPEND LIBRARY_SOURCES Src/XboxDDSTextureLoader.cpp) endif() if(BUILD_XINPUT OR BUILD_WGI OR BUILD_GAMEINPUT) - set(LIBRARY_HEADERS ${LIBRARY_HEADERS} + list(APPEND LIBRARY_HEADERS Inc/GamePad.h Inc/Keyboard.h Inc/Mouse.h) - set(LIBRARY_SOURCES ${LIBRARY_SOURCES} + list(APPEND LIBRARY_SOURCES Src/GamePad.cpp Src/Keyboard.cpp Src/Mouse.cpp) endif() if(BUILD_XAUDIO_WIN10 OR BUILD_XAUDIO_WIN8 OR BUILD_XAUDIO_REDIST) - set(LIBRARY_HEADERS ${LIBRARY_HEADERS} + list(APPEND LIBRARY_HEADERS Inc/Audio.h) - set(LIBRARY_SOURCES ${LIBRARY_SOURCES} + list(APPEND LIBRARY_SOURCES Audio/AudioEngine.cpp Audio/DynamicSoundEffectInstance.cpp Audio/SoundCommon.cpp @@ -246,8 +246,7 @@ else() file(TO_CMAKE_PATH ${COMPILED_SHADERS} COMPILED_SHADERS) endif() -set(LIBRARY_SOURCES ${LIBRARY_SOURCES} - ${COMPILED_SHADERS}/SpriteEffect_SpriteVertexShader.inc) +list(APPEND LIBRARY_SOURCES ${COMPILED_SHADERS}/SpriteEffect_SpriteVertexShader.inc) if(BUILD_XBOXONE_SHADERS) message(STATUS "Using Shader Model 5.0 for Xbox One for shaders") @@ -264,7 +263,9 @@ if(NOT USE_PREBUILT_SHADERS) HINTS "C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}/${DIRECTX_HOST_ARCH}" "C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_SYSTEM_VERSION}.0/${DIRECTX_HOST_ARCH}" "C:/Program Files (x86)/Windows Kits/10/bin/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/${DIRECTX_HOST_ARCH}") - message(STATUS "Using LegacyShaderCompiler found in ${DIRECTX_FXC_TOOL}") + if(DIRECTX_FXC_TOOL) + message(STATUS "Using LegacyShaderCompiler found in ${DIRECTX_FXC_TOOL}") + endif() endif() add_custom_command( OUTPUT "${COMPILED_SHADERS}/SpriteEffect_SpriteVertexShader.inc" @@ -312,8 +313,9 @@ source_group(Inc REGULAR_EXPRESSION Inc/*.*) source_group(Src REGULAR_EXPRESSION Src/*.*) target_include_directories(${PROJECT_NAME} PUBLIC - $ - $) + $) +target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE + $) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11) @@ -330,7 +332,9 @@ endif() if(directxmath_FOUND) message(STATUS "Using DirectXMath package") - target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath) + if(NOT MINGW) + target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath) + endif() endif() if(BUILD_XAUDIO_REDIST AND (NOT BUILD_XAUDIO_WIN10) AND (NOT BUILD_XAUDIO_WIN8)) @@ -397,10 +401,9 @@ install(FILES DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}) # Create pkg-config file -include(build/JoinPaths.cmake) # from: https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files -join_paths(DIRECTXTK_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") -join_paths(DIRECTXTK_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") +cmake_path(APPEND DIRECTXTK_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") +cmake_path(APPEND DIRECTXTK_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") set(DIRECTXTK_DEP_L "") if(directxmath_FOUND) @@ -420,6 +423,8 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/DirectXTK.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) #--- Command-line tools +set(TOOL_EXES "") + if(BUILD_TOOLS AND WIN32) set(TOOL_EXES xwbtool) @@ -490,8 +495,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_compile_options(${t} PRIVATE "-Wno-attributes") endif() endforeach() -elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") - set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14) elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") if(BUILD_SHARED_LIBS) target_compile_options(${PROJECT_NAME} PRIVATE /wd4251 /wd4275) @@ -533,6 +536,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endforeach() if(BUILD_FUZZING AND (NOT WINDOWS_STORE)) + # Prevent fuzzing builds (which is otherwise configured as a Release mode) from disabling assertions string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}) @@ -573,7 +577,7 @@ if(WIN32) endif() endif() -if(BUILD_TOOLS AND WIN32) +if(BUILD_TOOLS AND WIN32 AND (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)) set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT xwbtool) endif() diff --git a/CMakePresets.json b/CMakePresets.json index a0f0ea01..4cf2814e 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -253,10 +253,10 @@ "hidden": true }, - { "name": "x64-Debug" , "description": "MSVC for x64 (Debug) for Windows 8", "inherits": [ "base", "x64", "Debug", "MSVC" ] }, - { "name": "x64-Release" , "description": "MSVC for x64 (Release) for Windows 8", "inherits": [ "base", "x64", "Release", "MSVC" ] }, - { "name": "x86-Debug" , "description": "MSVC for x86 (Debug) for Windows 8", "inherits": [ "base", "x86", "Debug", "MSVC" ] }, - { "name": "x86-Release" , "description": "MSVC for x86 (Release) for Windows 8", "inherits": [ "base", "x86", "Release", "MSVC" ] }, + { "name": "x64-Debug" , "description": "MSVC for x64 (Debug) for Windows 8.1", "inherits": [ "base", "x64", "Debug", "MSVC" ] }, + { "name": "x64-Release" , "description": "MSVC for x64 (Release) for Windows 8.1", "inherits": [ "base", "x64", "Release", "MSVC" ] }, + { "name": "x86-Debug" , "description": "MSVC for x86 (Debug) for Windows 8.1", "inherits": [ "base", "x86", "Debug", "MSVC" ] }, + { "name": "x86-Release" , "description": "MSVC for x86 (Release) for Windows 8.1", "inherits": [ "base", "x86", "Release", "MSVC" ] }, { "name": "x64-Debug-Win10" , "description": "MSVC for x64 (Debug) for Windows 10", "inherits": [ "base", "x64", "Debug", "MSVC", "Win10" ] }, { "name": "x64-Release-Win10" , "description": "MSVC for x64 (Release) for Windows 10", "inherits": [ "base", "x64", "Release", "MSVC", "Win10" ] }, @@ -303,10 +303,10 @@ { "name": "arm64ec-Debug-VCPKG" , "description": "MSVC for ARM64EC (Debug) using VCPKG", "inherits": [ "base", "ARM64EC", "Debug", "MSVC", "VCPKG", "Win10" ], "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, { "name": "arm64ec-Release-VCPKG", "description": "MSVC for ARM64EC (Release) using VCPKG", "inherits": [ "base", "ARM64EC", "Release", "MSVC", "VCPKG", "Win10" ], "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64ec-windows" } }, - { "name": "x64-Debug-Clang" , "description": "Clang/LLVM for x64 (Debug) for Windows 8", "inherits": [ "base", "x64", "Debug", "Clang" ] }, - { "name": "x64-Release-Clang" , "description": "Clang/LLVM for x64 (Release) for Windows 8", "inherits": [ "base", "x64", "Release", "Clang" ] }, - { "name": "x86-Debug-Clang" , "description": "Clang/LLVM for x86 (Debug) for Windows 8", "inherits": [ "base", "x86", "Debug", "Clang", "Clang-X86" ] }, - { "name": "x86-Release-Clang" , "description": "Clang/LLVM for x86 (Release) for Windows 8", "inherits": [ "base", "x86", "Release", "Clang", "Clang-X86" ] }, + { "name": "x64-Debug-Clang" , "description": "Clang/LLVM for x64 (Debug) for Windows 8.1", "inherits": [ "base", "x64", "Debug", "Clang" ] }, + { "name": "x64-Release-Clang" , "description": "Clang/LLVM for x64 (Release) for Windows 8.1", "inherits": [ "base", "x64", "Release", "Clang" ] }, + { "name": "x86-Debug-Clang" , "description": "Clang/LLVM for x86 (Debug) for Windows 8.1", "inherits": [ "base", "x86", "Debug", "Clang", "Clang-X86" ] }, + { "name": "x86-Release-Clang" , "description": "Clang/LLVM for x86 (Release) for Windows 8.1", "inherits": [ "base", "x86", "Release", "Clang", "Clang-X86" ] }, { "name": "x64-Debug-Win10-Clang" , "description": "Clang/LLVM for x64 (Debug) for Windows 10", "inherits": [ "base", "x64", "Debug", "Clang", "Win10" ] }, { "name": "x64-Release-Win10-Clang" , "description": "Clang/LLVM for x64 (Release) for Windows 10", "inherits": [ "base", "x64", "Release", "Clang", "Win10" ] }, @@ -344,13 +344,13 @@ { "name": "x64-Debug-MinGW-GI" , "description": "MinG-W64 (Debug) using GameInput", "inherits": [ "base", "x64", "Debug", "GNUC", "VCPKG", "XAudio2Redist", "MinGW64" ], "cacheVariables": { "BUILD_GAMEINPUT": "true" } }, { "name": "x64-Release-MinGW-GI", "description": "MinG-W64 (Release) using GameInput", "inherits": [ "base", "x64", "Release", "GNUC", "VCPKG", "XAudio2Redist", "MinGW64" ], "cacheVariables": { "BUILD_GAMEINPUT": "true" } }, - { "name": "x64-Debug-ICC" , "description": "Intel Classic Compiler (Debug) for Windows 8", "inherits": [ "base", "x64", "Debug", "Intel" ] }, - { "name": "x64-Release-ICC" , "description": "Intel Classic Compiler (Release) for Windows 8", "inherits": [ "base", "x64", "Release", "Intel" ] }, + { "name": "x64-Debug-ICC" , "description": "Intel Classic Compiler (Debug) for Windows 8.1", "inherits": [ "base", "x64", "Debug", "Intel" ] }, + { "name": "x64-Release-ICC" , "description": "Intel Classic Compiler (Release) for Windows 8.1", "inherits": [ "base", "x64", "Release", "Intel" ] }, - { "name": "x64-Debug-ICX" , "description": "Intel oneAPI Compiler (Debug) for Windows 8", "inherits": [ "base", "x64", "Debug", "IntelLLVM" ] }, - { "name": "x64-Release-ICX" , "description": "Intel oneAPI Compiler (Release) for Windows 8", "inherits": [ "base", "x64", "Release", "IntelLLVM" ] }, + { "name": "x64-Debug-ICX" , "description": "Intel oneAPI Compiler (Debug) for Windows 8.1", "inherits": [ "base", "x64", "Debug", "IntelLLVM" ] }, + { "name": "x64-Release-ICX" , "description": "Intel oneAPI Compiler (Release) for Windows 8.1", "inherits": [ "base", "x64", "Release", "IntelLLVM" ] }, - { "name": "x64-Analyze" , "description": "MSVC for x64 (Debug) for Windows 8 using /analyze", "inherits": [ "base", "x64", "Debug", "MSVC", "Analyze" ] }, + { "name": "x64-Analyze" , "description": "MSVC for x64 (Debug) for Windows 8.1 using /analyze", "inherits": [ "base", "x64", "Debug", "MSVC", "Analyze" ] }, { "name": "x64-Analyze-Win10" , "description": "MSVC for x64 (Debug) for Windows 10 using /analyze", "inherits": [ "base", "x64", "Debug", "MSVC", "Win10", "Analyze" ] }, { "name": "x64-Coverage" , "description": "MSVC for x64 (Debug) w/ Code Coverage", "inherits": [ "base", "x64", "Debug", "MSVC", "Coverage" ] }, { "name": "x64-Coverage-Clang", "description": "Clang/LLVM for x64 (Debug) w/ Code Coverage", "inherits": [ "base", "x64", "Debug", "Clang", "Coverage" ] }, diff --git a/build/JoinPaths.cmake b/build/JoinPaths.cmake deleted file mode 100644 index c68d91b8..00000000 --- a/build/JoinPaths.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# This module provides function for joining paths -# known from most languages -# -# SPDX-License-Identifier: (MIT OR CC0-1.0) -# Copyright 2020 Jan Tojnar -# https://github.com/jtojnar/cmake-snips -# -# Modelled after Python’s os.path.join -# https://docs.python.org/3.7/library/os.path.html#os.path.join -# Windows not supported -function(join_paths joined_path first_path_segment) - set(temp_path "${first_path_segment}") - foreach(current_segment IN LISTS ARGN) - if(NOT ("${current_segment}" STREQUAL "")) - if(IS_ABSOLUTE "${current_segment}") - set(temp_path "${current_segment}") - else() - set(temp_path "${temp_path}/${current_segment}") - endif() - endif() - endforeach() - set(${joined_path} "${temp_path}" PARENT_SCOPE) -endfunction()