From a5bb2c8b0ab9b7d878e6d6333efcbe0f59755585 Mon Sep 17 00:00:00 2001 From: irisz64 Date: Tue, 22 Jul 2025 15:35:37 +0200 Subject: [PATCH] make build from root dir as to simplify where the binary ends up being --- CMakeLists.txt | 141 ++++++++++++++++++++++++++++++++++- README.md | 2 +- src/frontend/CMakeLists.txt | 142 ------------------------------------ 3 files changed, 141 insertions(+), 144 deletions(-) delete mode 100644 src/frontend/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 4db40731..259f04ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,142 @@ cmake_minimum_required(VERSION 3.20) +project(kaizen) -add_subdirectory(src/frontend) \ No newline at end of file +if (WIN32) + add_compile_definitions(NOMINMAX) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) +endif () + +add_compile_definitions(VK_NO_PROTOTYPES) + +if(APPLE) + set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0) + enable_language(OBJC) +endif() + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +include_directories( + src/frontend + src/ + . + src/utils + src/backend + src/backend/core + src/backend/core/mmio + src/backend/core/mmio/PIF + src/backend/core/registers + src/backend/core/rsp + external + external/discord_rpc/include + external/xbyak + external/mio/include + external/json/include + external/parallel-rdp + external/parallel-rdp + external/parallel-rdp/parallel-rdp-standalone/parallel-rdp + external/parallel-rdp/parallel-rdp-standalone/volk + external/parallel-rdp/parallel-rdp-standalone/spirv-cross + external/parallel-rdp/parallel-rdp-standalone/vulkan + external/parallel-rdp/parallel-rdp-standalone/vulkan-headers/include + external/parallel-rdp/parallel-rdp-standalone/util + external/unarr + external/SDL/include + external/sse2neon + external/capstone/include + external/imgui + external/imgui/backends + external/cflags/include + external/mINI/src/ + src/frontend/ImGuiImpl/ +) + +option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." OFF) +option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." OFF) +option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." OFF) +option(BUILD_SHARED_LIBS OFF) + +include(CheckCCompilerFlag) + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") + set(X86 TRUE) + message("Compiling on x86") +else() + set(X86 FALSE) +endif() + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)") + set(ARM64 TRUE) + message("Compiling on Arm64") +else() + set(ARM64 FALSE) +endif() + +set(SIMD_FLAG NULL) + +if(ARM64 AND APPLE) + message("Defining USE_NEON...") + add_compile_definitions(USE_NEON) + add_compile_definitions(SIMD_SUPPORT) +elseif(NOT ARM64) + if(MSVC) + set(SIMD_FLAG /arch:AVX) + else() + set(SIMD_FLAG -msse4.1) + endif() + check_c_compiler_flag(${SIMD_FLAG} HAS_SIMD) +else() + message("Compiling on an unsupported Arm device! Good Luck!") +endif() + +if (HAS_SIMD) + message("Defining SIMD_SUPPORT...") + add_compile_definitions(SIMD_SUPPORT) + add_compile_options(${SIMD_FLAG}) +endif () + +if (${CMAKE_BUILD_TYPE} MATCHES Debug) + add_compile_definitions(VULKAN_DEBUG) +endif () + +add_subdirectory(external/discord_rpc) +add_subdirectory(external/mio) +add_subdirectory(src/backend) +add_subdirectory(external/parallel-rdp) +add_subdirectory(external/unarr) +add_subdirectory(external/SDL) +add_subdirectory(external/cflags) +add_subdirectory(external/imgui) +add_subdirectory(external/mINI) +set(CAPSTONE_ARCHITECTURE_DEFAULT OFF) +set(CAPSTONE_MIPS_SUPPORT ON) +set(CAPSTONE_X86_SUPPORT ON) +add_subdirectory(external/capstone) + +add_executable(kaizen + src/frontend/main.cpp + src/frontend/KaizenGui.hpp + src/frontend/KaizenGui.cpp + src/frontend/RenderWidget.cpp + src/frontend/RenderWidget.hpp + src/frontend/EmuThread.hpp + src/frontend/EmuThread.cpp + src/frontend/SettingsWindow.hpp + src/frontend/SettingsWindow.cpp + src/frontend/CPUSettings.hpp + src/frontend/CPUSettings.cpp + src/frontend/AudioSettings.hpp + src/frontend/AudioSettings.cpp + src/frontend/NativeWindow.hpp + src/utils/Options.cpp + src/frontend/Debugger.hpp + src/frontend/Debugger.cpp) + +target_link_libraries(kaizen PUBLIC imgui SDL3::SDL3 SDL3::SDL3-static cflags::cflags discord-rpc mio parallel-rdp capstone backend) +target_compile_definitions(kaizen PUBLIC SDL_MAIN_HANDLED) + +file(COPY resources/ DESTINATION ${PROJECT_BINARY_DIR}/resources/) +file(REMOVE + ${PROJECT_BINARY_DIR}/resources/mario.png + ${PROJECT_BINARY_DIR}/resources/shader.frag + ${PROJECT_BINARY_DIR}/resources/shader.vert) diff --git a/README.md b/README.md index 3701dc31..81acc85e 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ cmake --build build/ --config Release ## Running: ``` -./path/to/kaizen [ROM] [Mupen Movie] +./build/kaizen [ROM] [Mupen Movie] ``` Your GPU needs to support Vulkan 1.3+, because the RDP is implemented via [ParaLLEl-RDP](https://github.com/Themaister/parallel-rdp). diff --git a/src/frontend/CMakeLists.txt b/src/frontend/CMakeLists.txt deleted file mode 100644 index 1c3d4cc2..00000000 --- a/src/frontend/CMakeLists.txt +++ /dev/null @@ -1,142 +0,0 @@ -cmake_minimum_required(VERSION 3.20) -project(kaizen) - -if (WIN32) - add_compile_definitions(NOMINMAX) - add_compile_definitions(_CRT_SECURE_NO_WARNINGS) -endif () - -add_compile_definitions(VK_NO_PROTOTYPES) - -if(APPLE) - set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0) - enable_language(OBJC) -endif() - -set(CMAKE_CXX_STANDARD 23) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -include_directories( - . - ../ - ../../ - ../utils - ../backend - ../backend/core - ../backend/core/mmio - ../backend/core/mmio/PIF - ../backend/core/registers - ../backend/core/rsp - ../../external - ../../external/discord_rpc/include - ../../external/xbyak - ../../external/mio/include - ../../external/json/include - ../../external/parallel-rdp - ../../external/parallel-rdp - ../../external/parallel-rdp/parallel-rdp-standalone/parallel-rdp - ../../external/parallel-rdp/parallel-rdp-standalone/volk - ../../external/parallel-rdp/parallel-rdp-standalone/spirv-cross - ../../external/parallel-rdp/parallel-rdp-standalone/vulkan - ../../external/parallel-rdp/parallel-rdp-standalone/vulkan-headers/include - ../../external/parallel-rdp/parallel-rdp-standalone/util - ../../external/unarr - ../../external/SDL/include - ../../external/sse2neon - ../../external/capstone/include - ../../external/imgui - ../../external/imgui/backends - ../../external/cflags/include - ../../external/mINI/src/ - ImGuiImpl/ -) - -option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." OFF) -option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." OFF) -option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." OFF) -option(BUILD_SHARED_LIBS OFF) - -include(CheckCCompilerFlag) - -if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") - set(X86 TRUE) - message("Compiling on x86") -else() - set(X86 FALSE) -endif() - -if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)") - set(ARM64 TRUE) - message("Compiling on Arm64") -else() - set(ARM64 FALSE) -endif() - -set(SIMD_FLAG NULL) - -if(ARM64 AND APPLE) - message("Defining USE_NEON...") - add_compile_definitions(USE_NEON) - add_compile_definitions(SIMD_SUPPORT) -elseif(NOT ARM64) - if(MSVC) - set(SIMD_FLAG /arch:AVX) - else() - set(SIMD_FLAG -msse4.1) - endif() - check_c_compiler_flag(${SIMD_FLAG} HAS_SIMD) -else() - message("Compiling on an unsupported Arm device! Good Luck!") -endif() - -if (HAS_SIMD) - message("Defining SIMD_SUPPORT...") - add_compile_definitions(SIMD_SUPPORT) - add_compile_options(${SIMD_FLAG}) -endif () - -if (${CMAKE_BUILD_TYPE} MATCHES Debug) - add_compile_definitions(VULKAN_DEBUG) -endif () - -add_subdirectory(../../external/discord_rpc discord_rpc) -add_subdirectory(../../external/mio mio) -add_subdirectory(../backend backend) -add_subdirectory(../../external/parallel-rdp parallel-rdp) -add_subdirectory(../../external/unarr unarr) -add_subdirectory(../../external/SDL SDL) -add_subdirectory(../../external/cflags cflags) -add_subdirectory(../../external/imgui imgui) -add_subdirectory(../../external/mINI mINI) -set(CAPSTONE_ARCHITECTURE_DEFAULT OFF) -set(CAPSTONE_MIPS_SUPPORT ON) -set(CAPSTONE_X86_SUPPORT ON) -add_subdirectory(../../external/capstone capstone) - -add_executable(kaizen - main.cpp - KaizenGui.hpp - KaizenGui.cpp - RenderWidget.cpp - RenderWidget.hpp - EmuThread.hpp - EmuThread.cpp - SettingsWindow.hpp - SettingsWindow.cpp - CPUSettings.hpp - CPUSettings.cpp - AudioSettings.hpp - AudioSettings.cpp - NativeWindow.hpp - ../utils/Options.cpp - Debugger.hpp - Debugger.cpp) - -target_link_libraries(kaizen PUBLIC imgui SDL3::SDL3 SDL3::SDL3-static cflags::cflags discord-rpc mio parallel-rdp capstone backend) -target_compile_definitions(kaizen PUBLIC SDL_MAIN_HANDLED) - -file(COPY ../../resources/ DESTINATION ${PROJECT_BINARY_DIR}/resources/) -file(REMOVE - ${PROJECT_BINARY_DIR}/resources/mario.png - ${PROJECT_BINARY_DIR}/resources/shader.frag - ${PROJECT_BINARY_DIR}/resources/shader.vert)