diff --git a/source/Steam DLL/CMakeLists.txt b/source/Steam DLL/CMakeLists.txt index 7ea7fec3d..92616ddb8 100644 --- a/source/Steam DLL/CMakeLists.txt +++ b/source/Steam DLL/CMakeLists.txt @@ -1,3 +1,4 @@ +option(ENABLE_VCPKG OFF) cmake_minimum_required(VERSION 3.21) message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.") @@ -6,65 +7,162 @@ message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.") ######################################################################################################################## project( EnderalSteam - VERSION 2.1.0 + VERSION 2.1.4 DESCRIPTION "Enderal SE Steam Support" LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) -include(GNUInstallDirs) - -find_path(SIMPLEINI_INCLUDE_DIRS "ConvertUTF.c") +add_compile_definitions(NOMINMAX _USE_MATH_DEFINES WIN32_LEAN_AND_MEAN) +add_definitions(-DUNICODE -D_UNICODE) +add_compile_options(/Zc:preprocessor /EHsc) configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/version.rc - @ONLY) + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/version.rc + @ONLY +) -set(sources - src/Main.cpp - src/Papyrus.cpp - src/EventListener.cpp - src/Achievements.cpp +#include(GNUInstallDirs) - ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +file( + GLOB_RECURSE + sources + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp + ${CMAKE_CURRENT_BINARY_DIR}/version.rc +) source_group( - TREE ${CMAKE_CURRENT_SOURCE_DIR} - FILES - ${headers} - ${sources}) + TREE ${CMAKE_CURRENT_SOURCE_DIR} + FILES + ${headers} + ${sources} +) ######################################################################################################################## ## Configure target DLL ######################################################################################################################## -find_package(CommonLibSSE CONFIG REQUIRED) + + +include(FetchContent) + +# DirectXMath +FetchContent_Declare( + DirectXMath + URL "https://github.com/microsoft/DirectXMath/archive/refs/tags/apr2025.tar.gz" + OVERRIDE_FIND_PACKAGE + DOWNLOAD_EXTRACT_TIMESTAMP 1 + EXCLUDE_FROM_ALL + SYSTEM +) +FetchContent_MakeAvailable(DirectXMath) +add_library("Microsoft::DirectXMath" ALIAS "DirectXMath") + +# DirectXTK +FetchContent_Declare( + DirectXTK + URL "https://github.com/microsoft/DirectXTK/archive/refs/tags/jul2025.tar.gz" + DOWNLOAD_EXTRACT_TIMESTAMP 1 + OVERRIDE_FIND_PACKAGE + EXCLUDE_FROM_ALL + SYSTEM +) +FetchContent_MakeAvailable(DirectXTK) +add_library("Microsoft::DirectXTK" ALIAS "DirectXTK") + +# simpleini +FetchContent_Declare( + simpleini + URL "https://github.com/brofield/simpleini/archive/refs/tags/v4.22.tar.gz" + DOWNLOAD_EXTRACT_TIMESTAMP 1 +) +FetchContent_MakeAvailable(simpleini) +INCLUDE_DIRECTORIES(${simpleini_SOURCE_DIR}) + +# rapidcsv +FetchContent_Declare( + rapidcsv + URL "https://github.com/d99kris/rapidcsv/archive/refs/tags/v8.87.tar.gz" + DOWNLOAD_EXTRACT_TIMESTAMP 1 + OVERRIDE_FIND_PACKAGE +) +FetchContent_MakeAvailable(rapidcsv) +set(RAPIDCSV_INCLUDE_DIRS ${rapidcsv_SOURCE_DIR}/src) + +# spdlog +set(SPDLOG_INSTALL ON CACHE INTERNAL "Install SPDLOG for CommonLibSSE") +set(SPDLOG_USE_STD_FORMAT ON CACHE INTERNAL "Use std::format in SPDLOG, not fmt") +FetchContent_Declare( + spdlog + URL "https://github.com/gabime/spdlog/archive/refs/tags/v1.15.3.tar.gz" + DOWNLOAD_EXTRACT_TIMESTAMP 1 + OVERRIDE_FIND_PACKAGE +) +FetchContent_MakeAvailable(spdlog) + +# xbyak +FetchContent_Declare( + xbyak + URL "https://github.com/herumi/xbyak/archive/v7.28.tar.gz" + DOWNLOAD_EXTRACT_TIMESTAMP 1 +) +FetchContent_MakeAvailable(xbyak) + +# CommonLibSSE +set(SKSE_SUPPORT_XBYAK ON CACHE BOOL " " FORCE) +set(ENABLE_SKYRIM_SE ON CACHE BOOL " " FORCE) +set(ENABLE_SKYRIM_AE ON CACHE BOOL " " FORCE) +set(ENABLE_SKYRIM_VR ON CACHE BOOL " " FORCE) +set(BUILD_TESTS OFF CACHE BOOL " " FORCE) +message(STATUS "Fetching CommonLibSSE-NG (5e5417e3585c9434295e919bdda27737244e9c5a)...") +FetchContent_Declare( + CommonLibSSE + GIT_REPOSITORY https://github.com/eddoursul/CommonLibVR.git + GIT_TAG 5e5417e3585c9434295e919bdda27737244e9c5a +) +FetchContent_MakeAvailable(CommonLibSSE) + + +get_target_property(COMMONLIB_SRC_DIR CommonLibSSE SOURCE_DIR) + +include(${COMMONLIB_SRC_DIR}/cmake/CommonLibSSE.cmake) add_commonlibsse_plugin(${PROJECT_NAME} SOURCES ${headers} ${sources}) + add_library("${PROJECT_NAME}::${PROJECT_NAME}" ALIAS "${PROJECT_NAME}") target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/steam_api64.lib) -target_include_directories(${PROJECT_NAME} - PRIVATE - $ - $ - $ - ${SIMPLEINI_INCLUDE_DIRS} +target_link_libraries(CommonLibSSE PUBLIC + DirectXTK + xbyak +) + +target_link_libraries(${PROJECT_NAME} PUBLIC + CommonLibSSE::CommonLibSSE + spdlog Version.lib + xbyak ) target_include_directories(${PROJECT_NAME} - PUBLIC - $) + PRIVATE + $ + $ + $ +) +target_include_directories(${PROJECT_NAME} + PUBLIC + $ +) + target_precompile_headers(${PROJECT_NAME} - PRIVATE - src/PCH.h) - -install(TARGETS ${PROJECT_NAME} - DESTINATION "${CMAKE_INSTALL_LIBDIR}") + PRIVATE + src/PCH.h +) +install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}") ######################################################################################################################## diff --git a/source/Steam DLL/vcpkg-configuration.json b/source/Steam DLL/vcpkg-configuration.json deleted file mode 100644 index 54bfde8c1..000000000 --- a/source/Steam DLL/vcpkg-configuration.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "default-registry": { - "kind": "git", - "repository": "https://github.com/microsoft/vcpkg.git", - "baseline": "08c4e71048eb54733d9b180a28b9b1d7ce637454" - }, - "registries": [ - { - "kind": "git", - "repository": "https://gitlab.com/colorglass/vcpkg-colorglass", - "baseline": "6309841a1ce770409708a67a9ba5c26c537d2937", - "packages": [ - "commonlibsse-ng", - "gluino", - "script-extender-common", - "skse" - ] - } - ] -} diff --git a/source/Steam DLL/vcpkg.json b/source/Steam DLL/vcpkg.json deleted file mode 100644 index 1b8518e56..000000000 --- a/source/Steam DLL/vcpkg.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json", - "name": "enderal-se-steam", - "version-string": "1.0.2", - "port-version": 0, - "description": "Enderal SE Steam Support", - "homepage": "https://eddoursul.win/mods/enderal-se/", - "license": "LGPL-3.0", - "features": { - "plugin": { - "description": "Enderal SE Steam achievements and status support.", - "dependencies": [ - "commonlibsse-ng", - "simpleini" - ] - } - }, - "default-features": [ - "plugin" - ] -}