make build from root dir as to simplify where the binary ends up being

This commit is contained in:
irisz64
2025-07-22 15:35:37 +02:00
parent 5443776239
commit a5bb2c8b0a
3 changed files with 141 additions and 144 deletions

View File

@@ -1,3 +1,142 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
project(kaizen)
add_subdirectory(src/frontend) 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)

View File

@@ -29,7 +29,7 @@ cmake --build build/ --config Release
## Running: ## 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). Your GPU needs to support Vulkan 1.3+, because the RDP is implemented via [ParaLLEl-RDP](https://github.com/Themaister/parallel-rdp).

View File

@@ -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)