This commit is contained in:
oltolm 2025-08-10 21:37:57 +02:00 committed by GitHub
commit ffb0cde0ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 147 additions and 48 deletions

1
.gitignore vendored
View file

@ -43,3 +43,4 @@ CMakeLists.txt.user
/.vscode/
# Ignore flatpak-builder's cache dir
.flatpak-builder
CMakeUserPresets.json

View file

@ -193,7 +193,7 @@ endif()
# as defined above.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Binaries)
if (WIN32)
if (MSVC)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/Binary)
if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
@ -536,7 +536,7 @@ if(ENABLE_EGL)
endif()
if(ENCODE_FRAMEDUMPS)
if(WIN32)
if(MSVC)
if(_M_X86_64)
set(FFMPEG_DIR Externals/FFmpeg-bin/x64)
elseif(_M_ARM_64)
@ -556,7 +556,7 @@ if(ENCODE_FRAMEDUMPS)
if(WIN32)
# Our prebuilt binaries depend on Bcrypt
set_property(TARGET FFmpeg::avutil APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "Bcrypt.lib"
INTERFACE_LINK_LIBRARIES Bcrypt
)
endif()
else()
@ -769,8 +769,10 @@ else()
message(STATUS "libsystemd not found, disabling traversal server watchdog support")
endif()
if (WIN32)
if (MSVC)
include_directories(Externals/WIL/include)
endif()
if (WIN32)
include_directories(Externals/OpenAL/include)
endif()

59
CMakePresets.json Normal file
View file

@ -0,0 +1,59 @@
{
"version": 2,
"configurePresets": [
{
"name": "Release",
"generator": "Ninja",
"binaryDir": "Build\\${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "Debug",
"generator": "Ninja",
"binaryDir": "Build\\${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "Release (arm64)",
"generator": "Ninja",
"binaryDir": "Build\\${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_SYSTEM_NAME": "Windows",
"CMAKE_SYSTEM_PROCESSOR": "aarch64"
}
},
{
"name": "Debug (arm64)",
"generator": "Ninja",
"binaryDir": "Build\\${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_SYSTEM_NAME": "Windows",
"CMAKE_SYSTEM_PROCESSOR": "aarch64"
}
},
{
"name": "gcc-debug",
"binaryDir": "build-gcc-debug",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "clang-debug",
"binaryDir": "build-clang-debug",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
}
]
}

View file

@ -10,6 +10,7 @@ option(BUILD_RUST_LIBS "Build rust backends" OFF)
option(BUNDLE_SPEEX "Bundle the speex library" OFF)
option(LAZY_LOAD_LIBS "Lazily load shared libraries" ON)
option(USE_SANITIZERS "Use sanitizers" ON)
option(BUILD_TOOLS "Build tools" OFF)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING

View file

@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 3.2.0)
cmake_minimum_required (VERSION 3.10.0)
project (DiscordRPC)
include(GNUInstallDirs)

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.10)
project(enet)

View file

@ -6,8 +6,9 @@ target_include_directories(hidapi PUBLIC hidapi-src/hidapi)
if(APPLE)
target_sources(hidapi PRIVATE hidapi-src/mac/hid.c)
elseif(MSVC)
elseif(WIN32)
target_sources(hidapi PRIVATE hidapi-src/windows/hid.c)
target_link_libraries(hidapi PUBLIC setupapi)
else()
find_package(LIBUDEV)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND LIBUDEV_FOUND)

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.10)
project(spng C)

View file

@ -9,7 +9,7 @@ add_library(usb STATIC EXCLUDE_FROM_ALL
dolphin_disable_warnings(usb)
set_target_properties(usb PROPERTIES VERSION 1.0.26)
if(WIN32)
if(MSVC)
target_include_directories(usb BEFORE PUBLIC libusb/libusb PRIVATE libusb/msvc)
else()
target_include_directories(usb
@ -31,6 +31,7 @@ if(WIN32 OR CYGWIN)
libusb/libusb/os/events_windows.c
)
set(PLATFORM_WINDOWS TRUE)
set(ENABLE_LOGGING TRUE)
elseif(APPLE)
target_sources(usb PRIVATE libusb/libusb/os/darwin_usb.c)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
@ -92,7 +93,9 @@ include(CheckTypeSize)
include(CheckSymbolExists)
check_include_files(asm/types.h HAVE_ASM_TYPES_H)
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
if(NOT WIN32)
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
endif()
check_symbol_exists(EFD_CLOEXEC "sys/eventfd.h" HAVE_DECL_EFD_CLOEXEC)
check_symbol_exists(EFD_NONBLOCK "sys/eventfd.h" HAVE_DECL_EFD_NONBLOCK)
check_symbol_exists(TFD_CLOEXEC "sys/timerfd.h" HAVE_DECL_TFD_CLOEXEC)

View file

@ -8,7 +8,7 @@
#undef ENABLE_DEBUG_LOGGING
/* Define to 1 to enable message logging. */
#undef ENABLE_LOGGING
#cmakedefine ENABLE_LOGGING 1
/* Define to 1 if you have the <asm/types.h> header file. */
#cmakedefine HAVE_ASM_TYPES_H 1

View file

@ -20,7 +20,7 @@
# mbedtls, mbedx509, mbedcrypto and apidoc targets.
#
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.10)
# https://cmake.org/cmake/help/latest/policy/CMP0011.html
# Setting this policy is required in CMake >= 3.18.0, otherwise a warning is generated. The OLD

View file

@ -61,13 +61,15 @@ dolphin_disable_warnings(rcheevos)
target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include")
target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
target_compile_definitions(rcheevos PRIVATE "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL")
target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_HASH")
target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_EXTERNAL")
target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ENCRYPTED")
target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ROM")
target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ZIP")
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_RAINTEGRATION")
target_compile_definitions(rcheevos PUBLIC "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL")
target_compile_definitions(rcheevos PUBLIC "RC_CLIENT_SUPPORTS_HASH")
target_compile_definitions(rcheevos PUBLIC "RC_CLIENT_SUPPORTS_EXTERNAL")
target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ENCRYPTED")
target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ROM")
target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ZIP")
if(WIN32)
if(RC_CLIENT_SUPPORTS_RAINTEGRATION)
target_compile_definitions(rcheevos PUBLIC RC_CLIENT_SUPPORTS_RAINTEGRATION)
endif()
target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif()

View file

@ -205,12 +205,17 @@ if (APPLE)
elseif(WIN32)
target_link_libraries(common
PRIVATE
kernel32.lib
shlwapi.lib
winmm.lib
kernel32
shlwapi
winmm
SetupAPI
)
if (_M_X86_64)
target_link_libraries(common PRIVATE opengl32.lib)
target_link_libraries(common PRIVATE opengl32)
endif()
if(MINGW)
target_compile_definitions(common PRIVATE _WIN32_WINNT=0x0602)
target_compile_options(common PRIVATE -mxsave)
endif()
elseif (ANDROID)
target_link_libraries(common
@ -342,6 +347,7 @@ endif()
if(WIN32)
target_sources(common PRIVATE HRWrap.h HRWrap.cpp)
target_link_libraries(common PUBLIC qwave)
endif()
if(USE_UPNP)
@ -381,7 +387,7 @@ if(UNIX)
if(SYSTEMD_FOUND)
target_link_libraries(traversal_server PRIVATE ${SYSTEMD_LIBRARIES})
endif()
elseif(WIN32)
elseif(MSVC)
find_package(PowerShell REQUIRED)
execute_process(
COMMAND ${POWERSHELL_EXE} -Command "[System.Diagnostics.FileVersionInfo]::GetVersionInfo('$ENV{VCToolsRedistDir}vc_redist.x64.exe').ProductVersion"

View file

@ -1,4 +1,4 @@
add_library(core
add_library(core STATIC
AchievementManager.cpp
AchievementManager.h
ActionReplay.cpp
@ -733,8 +733,7 @@ if(WIN32)
target_link_libraries(core PUBLIC
videod3d
videod3d12
setupapi.lib
iphlpapi.lib
setupapi
)
target_compile_definitions(core PRIVATE "-D_WINSOCK_DEPRECATED_NO_WARNINGS")
elseif(APPLE)

View file

@ -84,3 +84,8 @@ if(MSVC)
# Add precompiled header
target_link_libraries(discio PRIVATE use_pch)
endif()
if(USE_RETRO_ACHIEVEMENTS)
target_link_libraries(discio PUBLIC rcheevos)
target_compile_definitions(discio PUBLIC -DUSE_RETRO_ACHIEVEMENTS)
endif()

View file

@ -12,6 +12,7 @@ endif()
if(WIN32)
target_sources(dolphin-nogui PRIVATE PlatformWin32.cpp)
target_link_libraries(dolphin-nogui PRIVATE Dwmapi)
endif()
if(APPLE)
@ -32,6 +33,13 @@ PRIVATE
cpp-optparse
)
if(WIN32)
target_link_libraries(dolphin-nogui PRIVATE d3d11)
if(NOT MSVC)
target_link_options(dolphin-nogui PRIVATE -municode)
endif()
endif()
if(APPLE)
target_link_libraries(dolphin-nogui
PRIVATE
@ -43,7 +51,7 @@ endif()
if(WIN32)
# needed for adjusting window decorations with DwmSetWindowAttribute
target_link_libraries(dolphin-nogui PRIVATE dwmapi.lib)
target_link_libraries(dolphin-nogui PRIVATE dwmapi)
endif()
if(MSVC)

View file

@ -19,7 +19,7 @@ message(STATUS "Found Qt version ${Qt6_VERSION}")
set_property(TARGET Qt6::Core PROPERTY INTERFACE_COMPILE_FEATURES "")
add_executable(dolphin-emu
add_executable(dolphin-emu WIN32
AboutDialog.cpp
AboutDialog.h
CheatSearchFactoryWidget.cpp
@ -443,10 +443,13 @@ PRIVATE
if (WIN32)
target_link_libraries(dolphin-emu
PRIVATE
gdi32.lib
shell32.lib
dwmapi.lib # Needed to set window decorations for dark theme
gdi32
shell32
dwmapi # Needed to set window decorations for dark theme
)
if(NOT MSVC)
target_link_options(dolphin-emu PRIVATE -municode)
endif()
endif()
if (MSVC)
@ -498,11 +501,6 @@ if(WIN32)
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.win" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
)
# Delegate to Qt's official deployment binary on Windows to copy over the necessary Qt-specific libraries, etc.
get_target_property(MOC_EXECUTABLE_LOCATION Qt6::moc IMPORTED_LOCATION)
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)
find_program(WINDEPLOYQT_EXE windeployqt HINTS "${QT_BINARY_DIRECTORY}")
# Note: We set the PATH for the duration of this command so that the
# deployment application is able to locate the Qt libraries to copy.
# if the necessary paths aren't already set beforehand.
@ -519,13 +517,14 @@ if(WIN32)
#
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E env PATH="${QT_BINARY_DIRECTORY}"
"${WINDEPLOYQT_EXE}" --libdir="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
--plugindir="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/QtPlugins"
$<IF:$<CONFIG:Debug>,--debug,--release>
"${WINDEPLOYQT_EXECUTABLE}" --libdir="$<TARGET_FILE_DIR:dolphin-emu>"
--plugindir="$<TARGET_FILE_DIR:dolphin-emu>/QtPlugins"
$<$<CXX_COMPILER_ID:MSVC>:$<IF:$<CONFIG:Debug>,--debug,--release>>
--no-translations
--no-compiler-runtime
--no-system-d3d-compiler
--no-opengl-sw
--verbose 0
"$<TARGET_FILE:dolphin-emu>"
)
endif()
@ -685,7 +684,4 @@ endif()
if(USE_RETRO_ACHIEVEMENTS)
target_link_libraries(dolphin-emu PRIVATE rcheevos)
target_compile_definitions(dolphin-emu PRIVATE -DUSE_RETRO_ACHIEVEMENTS)
if(RC_CLIENT_SUPPORTS_RAINTEGRATION)
target_compile_definitions(dolphin-emu PRIVATE -DRC_CLIENT_SUPPORTS_RAINTEGRATION)
endif()
endif()

View file

@ -21,6 +21,10 @@ PRIVATE
fmt::fmt
)
if(WIN32 AND NOT MSVC)
target_link_options(dolphin-tool PRIVATE -municode)
endif()
if(MSVC)
# Add precompiled header
target_link_libraries(dolphin-tool PRIVATE use_pch)

View file

@ -1,4 +1,4 @@
add_library(inputcommon
add_library(inputcommon STATIC
DynamicInputTextureManager.cpp
DynamicInputTextureManager.h
GCAdapter.cpp
@ -101,13 +101,20 @@ if(WIN32)
ControllerInterface/DInput/XInputFilter.h
ControllerInterface/Win32/Win32.cpp
ControllerInterface/Win32/Win32.h
ControllerInterface/WGInput/WGInput.cpp
ControllerInterface/WGInput/WGInput.h
ControllerInterface/XInput/XInput.cpp
ControllerInterface/XInput/XInput.h
ControllerInterface/ForceFeedback/ForceFeedbackDevice.cpp
ControllerInterface/ForceFeedback/ForceFeedbackDevice.h
)
if(MSVC)
target_sources(inputcommon PRIVATE
ControllerInterface/WGInput/WGInput.cpp
ControllerInterface/WGInput/WGInput.h
)
else()
target_compile_definitions(inputcommon PRIVATE WINVER=0x0602)
endif()
target_link_libraries(inputcommon PUBLIC cfgmgr32 dinput8)
elseif(APPLE)
target_sources(inputcommon PRIVATE
ControllerInterface/Quartz/Quartz.h

View file

@ -1,4 +1,4 @@
add_library(videod3d
add_library(videod3d STATIC
D3DBase.cpp
D3DBase.h
D3DBoundingBox.cpp

View file

@ -12,6 +12,11 @@ target_link_libraries(winupdater PRIVATE
Comctl32
)
target_compile_definitions(winupdater PRIVATE _UNICODE UNICODE)
if(NOT MSVC)
target_link_options(winupdater PRIVATE -municode)
endif()
set_target_properties(winupdater PROPERTIES OUTPUT_NAME "Updater")
if(MSVC)