diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c27e640..7f812616 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,27 +1,15 @@ cmake_minimum_required(VERSION 3.16.3) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release) +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) endif() project(shadps4) -include_directories(third-party/) -include_directories(third-party/discord-rpc/include) -include_directories(third-party/imgui/) -include_directories(third-party/imgui/backends) -include_directories(third-party/sdl/) -include_directories(third-party/fmt/include) -include_directories(third-party/magic_enum/include) -include_directories(third-party/zydis/include/Zydis) -include_directories(third-party/winpthread/include) -include_directories(third-party/vulkan/include) -include_directories(third-party/xxhash/include) -include_directories(third-party/result/include) -add_subdirectory("third-party") -#=================== EXAMPLE =================== +add_subdirectory(third-party) include_directories(src) set(LIBC_SOURCES src/core/hle/libraries/Libc/Libc.cpp @@ -52,9 +40,7 @@ set(SYSTEMSERVICE_SOURCES src/core/hle/libraries/libsystemservice/system_service ) set(FILESYSTEM_SOURCES src/core/hle/libraries/libkernel/file_system.cpp - src/core/hle/libraries/libkernel/file_system.h - - + src/core/hle/libraries/libkernel/file_system.h ) set(HOST_SOURCES src/Emulator/Host/controller.cpp @@ -110,8 +96,11 @@ add_executable(shadps4 "src/Util/Disassembler.cpp" "src/Util/Disassembler.h" "src/core/PS4/Util/aerolib.h" "src/core/PS4/Loader/SymbolsResolver.h" "src/core/PS4/Loader/SymbolsResolver.cpp" "src/core/PS4/HLE/Libs.cpp" "src/core/PS4/HLE/Libs.h" "src/core/PS4/HLE/LibKernel.cpp" "src/core/PS4/HLE/LibKernel.h" "src/core/PS4/HLE/LibSceGnmDriver.cpp" "src/core/PS4/HLE/LibSceGnmDriver.h" "src/core/PS4/HLE/Kernel/ThreadManagement.cpp" "src/core/PS4/HLE/Kernel/ThreadManagement.h" "src/core/PS4/HLE/ErrorCodes.h" "src/debug.h" "src/core/PS4/HLE/Kernel/memory_management.cpp" "src/core/PS4/HLE/Kernel/memory_management.h" "src/core/PS4/GPU/gpu_memory.cpp" "src/core/PS4/GPU/gpu_memory.h" "src/emulator.cpp" "src/emulator.h" "src/core/PS4/HLE/Kernel/Objects/event_queue.h" "src/core/PS4/HLE/Kernel/Objects/event_queue.cpp" "src/core/PS4/HLE/Graphics/Objects/video_out_ctx.cpp" "src/core/PS4/HLE/Graphics/Objects/video_out_ctx.h" "src/core/PS4/HLE/Graphics/graphics_ctx.h" "src/vulkan_util.cpp" "src/vulkan_util.h" "src/core/PS4/GPU/video_out_buffer.cpp" "src/core/PS4/GPU/video_out_buffer.h" "src/core/PS4/HLE/Graphics/graphics_render.cpp" "src/core/PS4/HLE/Graphics/graphics_render.h" "src/core/PS4/GPU/tile_manager.cpp" "src/core/PS4/GPU/tile_manager.h" "src/version.h" "src/emuTimer.cpp" "src/emuTimer.h" "src/core/hle/libraries/libkernel/time_management.cpp" "src/core/hle/libraries/libkernel/time_management.h") -find_package(OpenGL REQUIRED) -target_link_libraries(shadps4 PUBLIC fmt mincore spdlog IMGUI SDL3-shared ${OPENGL_LIBRARY} vulkan-1 spirv-tools-opt spirv-tools) +target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt spdlog::spdlog toml11::toml11) +target_link_libraries(shadps4 PRIVATE discord-rpc imgui SDL3-shared vulkan-1 xxhash Zydis) +if (WIN32) + target_link_libraries(shadps4 PRIVATE mincore winpthread) +endif() add_custom_command(TARGET shadps4 POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different diff --git a/src/Util/Disassembler.h b/src/Util/Disassembler.h index 7e444c5a..b962142c 100644 --- a/src/Util/Disassembler.h +++ b/src/Util/Disassembler.h @@ -1,6 +1,6 @@ #pragma once -#include "Zydis.h" +#include #include "../types.h" class Disassembler diff --git a/src/Util/config.cpp b/src/Util/config.cpp index ab4eaf02..7c5a4fa7 100644 --- a/src/Util/config.cpp +++ b/src/Util/config.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include namespace Config { diff --git a/src/core/PS4/GPU/gpu_memory.cpp b/src/core/PS4/GPU/gpu_memory.cpp index e7e2fe81..6d084322 100644 --- a/src/core/PS4/GPU/gpu_memory.cpp +++ b/src/core/PS4/GPU/gpu_memory.cpp @@ -1,6 +1,6 @@ #include "gpu_memory.h" -#include +#include #include "Emulator/Util/singleton.h" diff --git a/src/core/PS4/Linker.cpp b/src/core/PS4/Linker.cpp index 14367dc5..f31087d2 100644 --- a/src/core/PS4/Linker.cpp +++ b/src/core/PS4/Linker.cpp @@ -2,7 +2,7 @@ #include "../virtual_memory.h" #include #include -#include "Zydis.h" +#include #include #include "Util/aerolib.h" #include "Loader/SymbolsResolver.h" diff --git a/src/discord.h b/src/discord.h index ca888018..0be14428 100644 --- a/src/discord.h +++ b/src/discord.h @@ -16,4 +16,4 @@ namespace Discord { void update(RPCStatus status, const std::string& title); void stop(); }; -} // namespace Discord \ No newline at end of file +} // namespace Discord diff --git a/src/vulkan_util.h b/src/vulkan_util.h index e4eda911..550b9b00 100644 --- a/src/vulkan_util.h +++ b/src/vulkan_util.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include #include diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index 0b0db59c..8dcf026e 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -1,69 +1,70 @@ -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED True) +if (MSVC) + # Silence "deprecation" warnings + add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) +endif() +# Discord-RPC +set(BUILD_EXAMPLES OFF CACHE BOOL "") +add_subdirectory(discord-rpc EXCLUDE_FROM_ALL) +target_include_directories(discord-rpc INTERFACE ./discord-rpc/include) -#====================FMT ==================== -set(fmt_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fmt) -add_subdirectory(${fmt_DIR}) +# fmtlib +add_subdirectory(fmt EXCLUDE_FROM_ALL) -#=================== SPD ==================== +# MagicEnum +add_subdirectory(magic_enum EXCLUDE_FROM_ALL) + +# Spdlog set(SPDLOG_WCHAR_FILENAMES ON CACHE BOOL "") set(SPDLOG_NO_THREAD_ID ON CACHE BOOL "") set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "") add_subdirectory(spdlog EXCLUDE_FROM_ALL) add_library(stb INTERFACE) -target_include_directories(stb INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/stb") +target_include_directories(stb INTERFACE ./stb) -#=================== SDL3 =================== +# SDL3 +add_subdirectory(SDL EXCLUDE_FROM_ALL) -set(SDL3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/SDL) -add_subdirectory(${SDL3_DIR}) +# Toml11 +add_subdirectory(toml11 EXCLUDE_FROM_ALL) -#================ Zydis ======================== -# Register Zydis dependency. -# Disable build of tools and examples. +# Vulkan +add_subdirectory(vulkan EXCLUDE_FROM_ALL) +target_include_directories(vulkan-1 INTERFACE vulkan/include) + +# Winpthreads +if (WIN32) + add_subdirectory(winpthread EXCLUDE_FROM_ALL) +endif() + +# xxHash +add_library(xxhash INTERFACE) +target_include_directories(xxhash INTERFACE xxhash) + +# Zydis option(ZYDIS_BUILD_TOOLS "" OFF) option(ZYDIS_BUILD_EXAMPLES "" OFF) -set(zydis_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zydis) -add_subdirectory(${zydis_DIR}) +add_subdirectory(zydis EXCLUDE_FROM_ALL) -#========== winpthreads ====================== -add_subdirectory(winpthread) -#=================== discord-rpc =================== -add_subdirectory(discord-rpc) -#=================== toml11 =================== -add_subdirectory(toml11) -#=================== vulkan ================== -add_subdirectory(vulkan) -#=================== IMGUI =================== +# Imgui +add_library(imgui STATIC) -set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui) -add_library(IMGUI STATIC) - - -target_sources( IMGUI - PRIVATE - ${IMGUI_DIR}/imgui_demo.cpp - ${IMGUI_DIR}/imgui_draw.cpp - ${IMGUI_DIR}/imgui_tables.cpp - ${IMGUI_DIR}/imgui_widgets.cpp - ${IMGUI_DIR}/imgui.cpp - - PRIVATE - ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp - ${IMGUI_DIR}/backends/imgui_impl_sdl3.cpp - ) - -target_include_directories( IMGUI - PUBLIC ${IMGUI_DIR} - PUBLIC ${IMGUI_DIR}/backends - PUBLIC ${SDL3_DIR}/include - ) - -find_package(OpenGL REQUIRED) -target_link_libraries(IMGUI PUBLIC ${OPENGL_LIBRARIES}) - - -target_link_libraries(IMGUI PUBLIC SDL3-shared ${CMAKE_DL_LIBS} Zydis winpthread discord-rpc) +target_sources(imgui PRIVATE + imgui/imgui_demo.cpp + imgui/imgui_draw.cpp + imgui/imgui_tables.cpp + imgui/imgui_widgets.cpp + imgui/imgui.cpp + imgui/backends/imgui_impl_opengl3.cpp + imgui/backends/imgui_impl_sdl3.cpp +) + +target_include_directories(imgui PUBLIC + imgui + imgui/backends + imgui/include +) + +target_link_libraries(imgui PRIVATE SDL3-shared ${CMAKE_DL_LIBS} Zydis winpthread discord-rpc)