Use repository root as CMake source directory (#153)

* feat(project): add root cmakelists for ide auto-detect

* cmake: use repository root as source directory

---------

Co-authored-by: nmzik <Nmzik@mail.ru>
This commit is contained in:
boykopovar
2026-08-03 00:34:21 +02:00
committed by GitHub
co-authored by nmzik
parent fb5ecec455
commit c4134a95e2
7 changed files with 127 additions and 124 deletions
+3 -3
View File
@@ -73,7 +73,7 @@ jobs:
- name: Configure - name: Configure
shell: cmd shell: cmd
run: | run: |
cmake -S src -B _Build/windows ^ cmake -S . -B _Build/windows ^
-G Ninja ^ -G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_C_COMPILER=clang-cl ^ -DCMAKE_C_COMPILER=clang-cl ^
@@ -147,7 +147,7 @@ jobs:
- name: Configure - name: Configure
shell: bash shell: bash
run: | run: |
cmake -S src -B _Build/macos \ cmake -S . -B _Build/macos \
-G Ninja \ -G Ninja \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \
@@ -270,7 +270,7 @@ jobs:
shell: bash shell: bash
run: | run: |
mkdir -p _Build mkdir -p _Build
cmake -S src -B _Build/linux \ cmake -S . -B _Build/linux \
-G Ninja \ -G Ninja \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \ -DCMAKE_C_COMPILER=clang \
+2 -1
View File
@@ -3,4 +3,5 @@
.idea/ .idea/
build/ build/
_Build/vscode-clang/ _Build/vscode-clang/
_Build/ _Build/
cmake-build-debug/
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"cmake.sourceDirectory": "${workspaceFolder}/src", "cmake.sourceDirectory": "${workspaceFolder}",
"cmake.buildDirectory": "${workspaceFolder}/_Build/vscode-clang", "cmake.buildDirectory": "${workspaceFolder}/_Build/vscode-clang",
"cmake.generator": "Ninja", "cmake.generator": "Ninja",
"cmake.environment": { "cmake.environment": {
+112 -110
View File
@@ -6,6 +6,10 @@ endif()
project(Kyty) project(Kyty)
set(KYTY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(KYTY_TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests")
set(KYTY_THIRD_PARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty")
if(CMAKE_SYSTEM_NAME MATCHES ".*Linux") if(CMAKE_SYSTEM_NAME MATCHES ".*Linux")
set(LINUX TRUE) set(LINUX TRUE)
endif() endif()
@@ -19,13 +23,11 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF) set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
include(utils.cmake) include("${KYTY_SOURCE_DIR}/utils.cmake")
include(CTest) include(CTest)
option(KYTY_ENABLE_CLANG_TIDY "Run clang-tidy checks during builds" OFF) option(KYTY_ENABLE_CLANG_TIDY "Run clang-tidy checks during builds" OFF)
set(KYTY_THIRD_PARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty")
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
include(TestBigEndian) include(TestBigEndian)
@@ -97,36 +99,36 @@ endif()
project(Kyty${KYTY_PROJECT_NAME}${CMAKE_BUILD_TYPE}${KYTY_COMPILER} VERSION 0.2.2) project(Kyty${KYTY_PROJECT_NAME}${CMAKE_BUILD_TYPE}${KYTY_COMPILER} VERSION 0.2.2)
include_directories( include_directories(
${KYTY_THIRD_PARTY_DIR}/gtest/include ${KYTY_THIRD_PARTY_DIR}/gtest/include
${KYTY_THIRD_PARTY_DIR}/gtest ${KYTY_THIRD_PARTY_DIR}/gtest
${KYTY_THIRD_PARTY_DIR}/fmt/include ${KYTY_THIRD_PARTY_DIR}/fmt/include
${KYTY_THIRD_PARTY_DIR}/magic_enum/include/magic_enum ${KYTY_THIRD_PARTY_DIR}/magic_enum/include/magic_enum
${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR} ${KYTY_SOURCE_DIR}
) )
set(KYTY_VERSION "${PROJECT_VERSION}") set(KYTY_VERSION "${PROJECT_VERSION}")
configure_file( configure_file(
${PROJECT_SOURCE_DIR}/cmake_config.h.in ${KYTY_SOURCE_DIR}/cmake_config.h.in
${PROJECT_BINARY_DIR}/cmake_config.h ${PROJECT_BINARY_DIR}/cmake_config.h
) )
find_package(Git) find_package(Git)
add_custom_target( KytyGitVersion add_custom_target( KytyGitVersion
COMMAND ${CMAKE_COMMAND} COMMAND ${CMAKE_COMMAND}
-D INPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/kytyGitVersion.h.in -D INPUT_FILE=${KYTY_SOURCE_DIR}/kytyGitVersion.h.in
-D OUTPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/kytyGitVersion.h -D OUTPUT_FILE=${PROJECT_BINARY_DIR}/kytyGitVersion.h
-D GIT_EXECUTABLE=${GIT_EXECUTABLE} -D GIT_EXECUTABLE=${GIT_EXECUTABLE}
-D GIT_WORKING_DIRECTORY=${CMAKE_CURRENT_SOURCE_DIR} -D GIT_WORKING_DIRECTORY=${CMAKE_CURRENT_SOURCE_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/generate_version.cmake -P ${KYTY_SOURCE_DIR}/generate_version.cmake
COMMENT "Generate kytyGitVersion.h" COMMENT "Generate kytyGitVersion.h"
) )
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0.0) if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0.0)
list(APPEND KYTY_IWYU list(APPEND KYTY_IWYU
kyty_emulator kyty_emulator
common common
#launcher #launcher
@@ -139,55 +141,55 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0.0)
endif() endif()
option(KYTY_BUILD_LAUNCHER "Build Qt launcher" ON) option(KYTY_BUILD_LAUNCHER "Build Qt launcher" ON)
config_compiler_and_linker() config_compiler_and_linker()
add_subdirectory("${KYTY_THIRD_PARTY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/3rdparty") add_subdirectory("${KYTY_THIRD_PARTY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/3rdparty")
add_subdirectory(common) add_subdirectory("${KYTY_SOURCE_DIR}/common" "${CMAKE_CURRENT_BINARY_DIR}/common")
file(GLOB kyty_emulator_src CONFIGURE_DEPENDS file(GLOB kyty_emulator_src CONFIGURE_DEPENDS
libs/*.cpp "${KYTY_SOURCE_DIR}/libs/*.cpp"
libs/*.h "${KYTY_SOURCE_DIR}/libs/*.h"
graphics/*.cpp "${KYTY_SOURCE_DIR}/graphics/*.cpp"
graphics/*.h "${KYTY_SOURCE_DIR}/graphics/*.h"
graphics/guest_gpu/*.cpp "${KYTY_SOURCE_DIR}/graphics/guest_gpu/*.cpp"
graphics/guest_gpu/*.h "${KYTY_SOURCE_DIR}/graphics/guest_gpu/*.h"
graphics/guest_gpu/command_processor/*.cpp "${KYTY_SOURCE_DIR}/graphics/guest_gpu/command_processor/*.cpp"
graphics/guest_gpu/command_processor/*.h "${KYTY_SOURCE_DIR}/graphics/guest_gpu/command_processor/*.h"
graphics/host_gpu/*.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/*.cpp"
graphics/host_gpu/*.h "${KYTY_SOURCE_DIR}/graphics/host_gpu/*.h"
graphics/host_gpu/renderer/*.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/*.cpp"
graphics/host_gpu/renderer/*.h "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/*.h"
graphics/host_gpu/renderer/cache/*.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/cache/*.cpp"
graphics/host_gpu/renderer/cache/*.h "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/cache/*.h"
graphics/host_gpu/renderer/image/*.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/image/*.cpp"
graphics/host_gpu/renderer/image/*.h "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/image/*.h"
graphics/host_gpu/renderer/pipeline/*.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/pipeline/*.cpp"
graphics/host_gpu/renderer/pipeline/*.h "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/pipeline/*.h"
graphics/shader/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/*.cpp"
graphics/shader/*.h "${KYTY_SOURCE_DIR}/graphics/shader/*.h"
graphics/shader/recompiler/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/*.cpp"
graphics/shader/recompiler/*.h "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/*.h"
graphics/shader/recompiler/cfg/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/cfg/*.cpp"
graphics/shader/recompiler/cfg/*.h "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/cfg/*.h"
graphics/shader/recompiler/decompiler/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/decompiler/*.cpp"
graphics/shader/recompiler/decompiler/*.h "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/decompiler/*.h"
graphics/shader/recompiler/emitter/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/emitter/*.cpp"
graphics/shader/recompiler/emitter/*.h "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/emitter/*.h"
graphics/shader/recompiler/ir/*.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/*.cpp"
graphics/shader/recompiler/ir/*.h "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/*.h"
graphics/presentation/*.cpp "${KYTY_SOURCE_DIR}/graphics/presentation/*.cpp"
graphics/presentation/*.h "${KYTY_SOURCE_DIR}/graphics/presentation/*.h"
graphics/presentation/window/*.cpp "${KYTY_SOURCE_DIR}/graphics/presentation/window/*.cpp"
graphics/presentation/window/*.h "${KYTY_SOURCE_DIR}/graphics/presentation/window/*.h"
kernel/*.cpp "${KYTY_SOURCE_DIR}/kernel/*.cpp"
kernel/*.h "${KYTY_SOURCE_DIR}/kernel/*.h"
loader/*.cpp "${KYTY_SOURCE_DIR}/loader/*.cpp"
loader/*.h "${KYTY_SOURCE_DIR}/loader/*.h"
) )
find_program(KYTY_GLSLANG_VALIDATOR glslangValidator REQUIRED) find_program(KYTY_GLSLANG_VALIDATOR glslangValidator REQUIRED)
set(gpu_tiler_shader_dir "${CMAKE_CURRENT_SOURCE_DIR}/graphics/host_gpu/shaders") set(gpu_tiler_shader_dir "${KYTY_SOURCE_DIR}/graphics/host_gpu/shaders")
set(gpu_tiler_generated_dir "${PROJECT_BINARY_DIR}/gpu_tiler_shaders") set(gpu_tiler_generated_dir "${PROJECT_BINARY_DIR}/gpu_tiler_shaders")
set(gpu_tiler_shader_names set(gpu_tiler_shader_names
standard256 standard256
@@ -215,7 +217,7 @@ foreach(shader_name IN LISTS gpu_tiler_shader_names)
COMMAND "${KYTY_GLSLANG_VALIDATOR}" -V --target-env vulkan1.0 -Os COMMAND "${KYTY_GLSLANG_VALIDATOR}" -V --target-env vulkan1.0 -Os
"-I${gpu_tiler_shader_dir}" -o "${shader_spv}" "${shader_source}" "-I${gpu_tiler_shader_dir}" -o "${shader_spv}" "${shader_source}"
COMMAND ${CMAKE_COMMAND} -DINPUT=${shader_spv} -DOUTPUT=${shader_header} COMMAND ${CMAKE_COMMAND} -DINPUT=${shader_spv} -DOUTPUT=${shader_header}
-DSYMBOL=${shader_symbol} -P "${CMAKE_CURRENT_SOURCE_DIR}/embed_spirv.cmake" -DSYMBOL=${shader_symbol} -P "${KYTY_SOURCE_DIR}/embed_spirv.cmake"
DEPENDS "${shader_source}" ${gpu_tiler_shader_includes} DEPENDS "${shader_source}" ${gpu_tiler_shader_includes}
VERBATIM VERBATIM
) )
@@ -239,7 +241,7 @@ foreach(shader_source IN LISTS gpu_blit_shader_sources)
COMMAND "${KYTY_GLSLANG_VALIDATOR}" -V --target-env vulkan1.0 -Os COMMAND "${KYTY_GLSLANG_VALIDATOR}" -V --target-env vulkan1.0 -Os
"-I${gpu_tiler_shader_dir}" -o "${shader_spv}" "${shader_source}" "-I${gpu_tiler_shader_dir}" -o "${shader_spv}" "${shader_source}"
COMMAND ${CMAKE_COMMAND} -DINPUT=${shader_spv} -DOUTPUT=${shader_header} COMMAND ${CMAKE_COMMAND} -DINPUT=${shader_spv} -DOUTPUT=${shader_header}
-DSYMBOL=${shader_symbol} -P "${CMAKE_CURRENT_SOURCE_DIR}/embed_spirv.cmake" -DSYMBOL=${shader_symbol} -P "${KYTY_SOURCE_DIR}/embed_spirv.cmake"
DEPENDS "${shader_source}" DEPENDS "${shader_source}"
VERBATIM VERBATIM
) )
@@ -248,8 +250,8 @@ endforeach()
list(APPEND kyty_emulator_src ${gpu_blit_shader_headers}) list(APPEND kyty_emulator_src ${gpu_blit_shader_headers})
list(APPEND kyty_emulator_src list(APPEND kyty_emulator_src
emulator.h "${KYTY_SOURCE_DIR}/emulator.h"
emulator.cpp "${KYTY_SOURCE_DIR}/emulator.cpp"
) )
list(REMOVE_DUPLICATES kyty_emulator_src) list(REMOVE_DUPLICATES kyty_emulator_src)
@@ -280,7 +282,7 @@ if(LINUX)
endif() endif()
set(inc_headers set(inc_headers
${CMAKE_CURRENT_SOURCE_DIR} ${KYTY_SOURCE_DIR}
${KYTY_THIRD_PARTY_DIR}/SDL2/include ${KYTY_THIRD_PARTY_DIR}/SDL2/include
${KYTY_THIRD_PARTY_DIR}/VulkanMemoryAllocator/include ${KYTY_THIRD_PARTY_DIR}/VulkanMemoryAllocator/include
${KYTY_THIRD_PARTY_DIR}/SPIRV-Tools/include ${KYTY_THIRD_PARTY_DIR}/SPIRV-Tools/include
@@ -292,13 +294,13 @@ set(inc_headers
if (KYTY_CLANG_CL) if (KYTY_CLANG_CL)
list(APPEND kyty_emulator_link_libraries winpthread) list(APPEND kyty_emulator_link_libraries winpthread)
list(APPEND inc_headers list(APPEND inc_headers
${KYTY_THIRD_PARTY_DIR}/winpthread/include ${KYTY_THIRD_PARTY_DIR}/winpthread/include
) )
endif() endif()
list(APPEND check_headers list(APPEND check_headers
${CMAKE_CURRENT_SOURCE_DIR} ${KYTY_SOURCE_DIR}
) )
function(add_kyty_full_emulator_test target source) function(add_kyty_full_emulator_test target source)
@@ -320,108 +322,108 @@ endfunction()
function(configure_macos_guest_address_space target) function(configure_macos_guest_address_space target)
if(APPLE AND (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR if(APPLE AND (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR
(NOT CMAKE_OSX_ARCHITECTURES AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$"))) (NOT CMAKE_OSX_ARCHITECTURES AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")))
target_sources(${target} PRIVATE kernel/macosGuestAddressSpace.cpp) target_sources(${target} PRIVATE "${KYTY_SOURCE_DIR}/kernel/macosGuestAddressSpace.cpp")
target_compile_definitions(${target} PRIVATE KYTY_LINKED_GUEST_ADDRESS_SPACE=1) target_compile_definitions(${target} PRIVATE KYTY_LINKED_GUEST_ADDRESS_SPACE=1)
target_link_options(${target} PRIVATE target_link_options(${target} PRIVATE
-Wl,-ld_classic,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x40000,-segaddr,SYSTEM_MANAGED,0x40000,-segaddr,SYSTEM_RESERVED,0x7ffffc000,-segaddr,USER_AREA,0x7000000000,-image_base,0x700000000000) -Wl,-ld_classic,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x40000,-segaddr,SYSTEM_MANAGED,0x40000,-segaddr,SYSTEM_RESERVED,0x7ffffc000,-segaddr,USER_AREA,0x7000000000,-image_base,0x700000000000)
endif() endif()
endfunction() endfunction()
add_kyty_full_emulator_test(shader_cfg_tests ../tests/shaderCfgTests.cpp) add_kyty_full_emulator_test(shader_cfg_tests "${KYTY_TESTS_DIR}/shaderCfgTests.cpp")
add_executable(scalar_provenance_tests EXCLUDE_FROM_ALL add_executable(scalar_provenance_tests EXCLUDE_FROM_ALL
../tests/ScalarProvenanceTests.cpp "${KYTY_TESTS_DIR}/ScalarProvenanceTests.cpp"
graphics/host_gpu/hostMemory.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/hostMemory.cpp"
graphics/shader/recompiler/ir/ReadLaneElimination.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ReadLaneElimination.cpp"
graphics/shader/recompiler/ir/ScalarProvenance.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ScalarProvenance.cpp"
graphics/shader/recompiler/ir/SrtWalker.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/SrtWalker.cpp"
) )
target_link_libraries(scalar_provenance_tests fmt::fmt) target_link_libraries(scalar_provenance_tests fmt::fmt)
target_include_directories(scalar_provenance_tests PRIVATE ${inc_headers}) target_include_directories(scalar_provenance_tests PRIVATE ${inc_headers})
add_executable(page_manager_tests EXCLUDE_FROM_ALL add_executable(page_manager_tests EXCLUDE_FROM_ALL
../tests/PageManagerTests.cpp "${KYTY_TESTS_DIR}/PageManagerTests.cpp"
graphics/host_gpu/pageManager.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/pageManager.cpp"
) )
target_include_directories(page_manager_tests PRIVATE ${inc_headers}) target_include_directories(page_manager_tests PRIVATE ${inc_headers})
add_executable(bit_array_tests EXCLUDE_FROM_ALL add_executable(bit_array_tests EXCLUDE_FROM_ALL
../tests/BitArrayTests.cpp "${KYTY_TESTS_DIR}/BitArrayTests.cpp"
) )
target_include_directories(bit_array_tests PRIVATE ${inc_headers}) target_include_directories(bit_array_tests PRIVATE ${inc_headers})
add_executable(memory_tracker_tests EXCLUDE_FROM_ALL add_executable(memory_tracker_tests EXCLUDE_FROM_ALL
../tests/MemoryTrackerTests.cpp "${KYTY_TESTS_DIR}/MemoryTrackerTests.cpp"
graphics/host_gpu/pageManager.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/pageManager.cpp"
graphics/host_gpu/memoryTracker.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/memoryTracker.cpp"
) )
target_link_libraries(memory_tracker_tests fmt::fmt common) target_link_libraries(memory_tracker_tests fmt::fmt common)
target_include_directories(memory_tracker_tests PRIVATE ${inc_headers}) target_include_directories(memory_tracker_tests PRIVATE ${inc_headers})
add_executable(shader_vertex_metadata_tests EXCLUDE_FROM_ALL add_executable(shader_vertex_metadata_tests EXCLUDE_FROM_ALL
../tests/ShaderVertexMetadataTests.cpp "${KYTY_TESTS_DIR}/ShaderVertexMetadataTests.cpp"
graphics/host_gpu/hostMemory.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/hostMemory.cpp"
graphics/shader/shaderVertexMetadata.cpp "${KYTY_SOURCE_DIR}/graphics/shader/shaderVertexMetadata.cpp"
) )
target_include_directories(shader_vertex_metadata_tests PRIVATE ${inc_headers}) target_include_directories(shader_vertex_metadata_tests PRIVATE ${inc_headers})
add_executable(shader_stage_runtime_tests EXCLUDE_FROM_ALL add_executable(shader_stage_runtime_tests EXCLUDE_FROM_ALL
../tests/ShaderStageRuntimeTests.cpp "${KYTY_TESTS_DIR}/ShaderStageRuntimeTests.cpp"
graphics/guest_gpu/gpu_format.cpp "${KYTY_SOURCE_DIR}/graphics/guest_gpu/gpu_format.cpp"
graphics/host_gpu/hostMemory.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/hostMemory.cpp"
graphics/shader/shaderStageRuntime.cpp "${KYTY_SOURCE_DIR}/graphics/shader/shaderStageRuntime.cpp"
graphics/shader/recompiler/ir/ResourceMaterialization.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ResourceMaterialization.cpp"
graphics/shader/recompiler/ir/ScalarProvenance.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ScalarProvenance.cpp"
graphics/shader/recompiler/ir/SrtWalker.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/SrtWalker.cpp"
) )
target_link_libraries(shader_stage_runtime_tests fmt::fmt) target_link_libraries(shader_stage_runtime_tests fmt::fmt)
target_include_directories(shader_stage_runtime_tests PRIVATE ${inc_headers}) target_include_directories(shader_stage_runtime_tests PRIVATE ${inc_headers})
add_executable(resource_tracking_tests EXCLUDE_FROM_ALL add_executable(resource_tracking_tests EXCLUDE_FROM_ALL
../tests/ResourceTrackingTests.cpp "${KYTY_TESTS_DIR}/ResourceTrackingTests.cpp"
graphics/guest_gpu/gpu_format.cpp "${KYTY_SOURCE_DIR}/graphics/guest_gpu/gpu_format.cpp"
graphics/host_gpu/hostMemory.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/hostMemory.cpp"
graphics/shader/recompiler/ir/ScalarProvenance.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ScalarProvenance.cpp"
graphics/shader/recompiler/ir/SrtWalker.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/SrtWalker.cpp"
graphics/shader/recompiler/ir/SrtPatcher.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/SrtPatcher.cpp"
graphics/shader/recompiler/ir/ResourceTracking.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ResourceTracking.cpp"
graphics/shader/recompiler/ir/ResourceMaterialization.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ResourceMaterialization.cpp"
graphics/shader/recompiler/ir/ShaderInfoCollection.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/ShaderInfoCollection.cpp"
graphics/shader/recompiler/ir/BindingLayout.cpp "${KYTY_SOURCE_DIR}/graphics/shader/recompiler/ir/BindingLayout.cpp"
) )
target_link_libraries(resource_tracking_tests fmt::fmt) target_link_libraries(resource_tracking_tests fmt::fmt)
target_include_directories(resource_tracking_tests PRIVATE ${inc_headers}) target_include_directories(resource_tracking_tests PRIVATE ${inc_headers})
add_executable(resource_mutex_tests EXCLUDE_FROM_ALL add_executable(resource_mutex_tests EXCLUDE_FROM_ALL
../tests/ResourceMutexTests.cpp "${KYTY_TESTS_DIR}/ResourceMutexTests.cpp"
graphics/host_gpu/renderer/cache/resourceMutex.cpp "${KYTY_SOURCE_DIR}/graphics/host_gpu/renderer/cache/resourceMutex.cpp"
) )
target_link_libraries(resource_mutex_tests common) target_link_libraries(resource_mutex_tests common)
target_include_directories(resource_mutex_tests PRIVATE ${inc_headers}) target_include_directories(resource_mutex_tests PRIVATE ${inc_headers})
add_executable(audio_out2_port_tests EXCLUDE_FROM_ALL add_executable(audio_out2_port_tests EXCLUDE_FROM_ALL
../tests/AudioOut2PortTests.cpp "${KYTY_TESTS_DIR}/AudioOut2PortTests.cpp"
libs/libAudio2.cpp "${KYTY_SOURCE_DIR}/libs/libAudio2.cpp"
loader/timer.cpp "${KYTY_SOURCE_DIR}/loader/timer.cpp"
) )
target_link_libraries(audio_out2_port_tests common fmt::fmt) target_link_libraries(audio_out2_port_tests common fmt::fmt)
target_include_directories(audio_out2_port_tests PRIVATE ${inc_headers}) target_include_directories(audio_out2_port_tests PRIVATE ${inc_headers})
add_executable(event_queue_lifetime_tests EXCLUDE_FROM_ALL add_executable(event_queue_lifetime_tests EXCLUDE_FROM_ALL
../tests/EventQueueLifetimeTests.cpp "${KYTY_TESTS_DIR}/EventQueueLifetimeTests.cpp"
kernel/eventQueue.cpp "${KYTY_SOURCE_DIR}/kernel/eventQueue.cpp"
loader/timer.cpp "${KYTY_SOURCE_DIR}/loader/timer.cpp"
) )
target_link_libraries(event_queue_lifetime_tests common fmt::fmt) target_link_libraries(event_queue_lifetime_tests common fmt::fmt)
target_include_directories(event_queue_lifetime_tests PRIVATE ${inc_headers}) target_include_directories(event_queue_lifetime_tests PRIVATE ${inc_headers})
add_executable(image_page_table_tests EXCLUDE_FROM_ALL add_executable(image_page_table_tests EXCLUDE_FROM_ALL
../tests/ImagePageTableTests.cpp "${KYTY_TESTS_DIR}/ImagePageTableTests.cpp"
) )
target_link_libraries(image_page_table_tests common fmt::fmt) target_link_libraries(image_page_table_tests common fmt::fmt)
target_include_directories(image_page_table_tests PRIVATE ${inc_headers}) target_include_directories(image_page_table_tests PRIVATE ${inc_headers})
add_kyty_full_emulator_test(shader_recompiler_compute_tests ../tests/ShaderRecompilerComputeTests.cpp) add_kyty_full_emulator_test(shader_recompiler_compute_tests "${KYTY_TESTS_DIR}/ShaderRecompilerComputeTests.cpp")
set(gpu_test_generated_dir "${PROJECT_BINARY_DIR}/gpu_test_shaders") set(gpu_test_generated_dir "${PROJECT_BINARY_DIR}/gpu_test_shaders")
set(gpu_test_ms_depth_source set(gpu_test_ms_depth_source
@@ -437,14 +439,14 @@ add_custom_command(
-o "${gpu_test_ms_depth_spv}" "${gpu_test_ms_depth_source}" -o "${gpu_test_ms_depth_spv}" "${gpu_test_ms_depth_source}"
COMMAND ${CMAKE_COMMAND} -DINPUT=${gpu_test_ms_depth_spv} COMMAND ${CMAKE_COMMAND} -DINPUT=${gpu_test_ms_depth_spv}
-DOUTPUT=${gpu_test_ms_depth_header} -DSYMBOL=GPU_TEST_MS_DEPTH_SPV -DOUTPUT=${gpu_test_ms_depth_header} -DSYMBOL=GPU_TEST_MS_DEPTH_SPV
-P "${CMAKE_CURRENT_SOURCE_DIR}/embed_spirv.cmake" -P "${KYTY_SOURCE_DIR}/embed_spirv.cmake"
DEPENDS "${gpu_test_ms_depth_source}" DEPENDS "${gpu_test_ms_depth_source}"
VERBATIM VERBATIM
) )
target_sources(shader_recompiler_compute_tests PRIVATE target_sources(shader_recompiler_compute_tests PRIVATE
"${gpu_test_ms_depth_header}") "${gpu_test_ms_depth_header}")
add_kyty_full_emulator_test(virtual_memory_allocation_tests ../tests/VirtualMemoryAllocationTests.cpp) add_kyty_full_emulator_test(virtual_memory_allocation_tests "${KYTY_TESTS_DIR}/VirtualMemoryAllocationTests.cpp")
target_compile_definitions(virtual_memory_allocation_tests PRIVATE target_compile_definitions(virtual_memory_allocation_tests PRIVATE
KYTY_VIRTUAL_MEMORY_ALLOCATION_TESTS=1) KYTY_VIRTUAL_MEMORY_ALLOCATION_TESTS=1)
@@ -520,7 +522,7 @@ if(BUILD_TESTING)
endif() endif()
add_executable(kyty_emulator main.cpp ${kyty_emulator_src}) add_executable(kyty_emulator "${KYTY_SOURCE_DIR}/main.cpp" ${kyty_emulator_src})
configure_macos_guest_address_space(kyty_emulator) configure_macos_guest_address_space(kyty_emulator)
target_link_libraries(kyty_emulator ${kyty_emulator_link_libraries}) target_link_libraries(kyty_emulator ${kyty_emulator_link_libraries})
@@ -570,14 +572,14 @@ if(APPLE)
# reverts to the hardened defaults and aborts when it first executes written code). # reverts to the hardened defaults and aborts when it first executes written code).
add_custom_command(TARGET kyty_emulator POST_BUILD add_custom_command(TARGET kyty_emulator POST_BUILD
COMMAND codesign -s - --force --options runtime COMMAND codesign -s - --force --options runtime
--entitlements "${CMAKE_CURRENT_SOURCE_DIR}/macos_jit.entitlements" --entitlements "${KYTY_SOURCE_DIR}/macos_jit.entitlements"
$<TARGET_FILE:kyty_emulator> $<TARGET_FILE:kyty_emulator>
COMMENT "Codesign kyty_emulator with JIT entitlements (macOS)") COMMENT "Codesign kyty_emulator with JIT entitlements (macOS)")
endif() endif()
install(TARGETS kyty_emulator DESTINATION .) install(TARGETS kyty_emulator DESTINATION .)
if(KYTY_BUILD_LAUNCHER) if(KYTY_BUILD_LAUNCHER)
add_subdirectory(launcher) add_subdirectory("${KYTY_SOURCE_DIR}/launcher" "${CMAKE_CURRENT_BINARY_DIR}/launcher")
endif() endif()
if(KYTY_CLANG_CL) if(KYTY_CLANG_CL)
install(FILES "${KYTY_THIRD_PARTY_DIR}/winpthread/bin/libwinpthread-1.dll" DESTINATION .) install(FILES "${KYTY_THIRD_PARTY_DIR}/winpthread/bin/libwinpthread-1.dll" DESTINATION .)
+4 -4
View File
@@ -141,7 +141,7 @@ git submodule update --init --recursive
Configure the project. Replace the Qt path with the version installed on your system: Configure the project. Replace the Qt path with the version installed on your system:
```powershell ```powershell
cmake -S src -B _Build/windows -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_PREFIX_PATH="C:/Qt/6.x.x/msvc2022_64" cmake -S . -B _Build/windows -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_PREFIX_PATH="C:/Qt/6.x.x/msvc2022_64"
``` ```
Build the launcher and stage a runnable installation: Build the launcher and stage a runnable installation:
@@ -174,7 +174,7 @@ Qt 6 (Concurrent, Network, Widgets) is also required — either the distribution
```bash ```bash
git submodule update --init --recursive git submodule update --init --recursive
cmake -S src -B _Build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release \ cmake -S . -B _Build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_PREFIX_PATH="$Qt6_DIR" -DCMAKE_PREFIX_PATH="$Qt6_DIR"
@@ -188,7 +188,7 @@ The install step copies the Qt libraries and plugins next to the binaries, so
As on Windows, the MSVC compiler is not used; Clang is required. `cl.exe` is rejected at configure As on Windows, the MSVC compiler is not used; Clang is required. `cl.exe` is rejected at configure
time. time.
Note that the CMake source root is `src`, not the repository root. The CMake source root is the repository root.
### Building on macOS ### Building on macOS
@@ -207,7 +207,7 @@ Requirements:
```bash ```bash
git submodule update --init --recursive git submodule update --init --recursive
cmake -S src -B _Build/macos -G Ninja -DCMAKE_BUILD_TYPE=Release \ cmake -S . -B _Build/macos -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_PREFIX_PATH="$Qt6_DIR" -DCMAKE_PREFIX_PATH="$Qt6_DIR"
+1 -1
View File
@@ -13,7 +13,7 @@ endif()
add_library(common STATIC ${common_src} ${common_headers}) add_library(common STATIC ${common_src} ${common_headers})
target_include_directories(common target_include_directories(common
PUBLIC ${PROJECT_SOURCE_DIR} PUBLIC ${KYTY_SOURCE_DIR}
PRIVATE PRIVATE
${KYTY_THIRD_PARTY_DIR}/cpuinfo/include ${KYTY_THIRD_PARTY_DIR}/cpuinfo/include
) )
+4 -4
View File
@@ -141,14 +141,14 @@ elseif(LINUX)
endif() endif()
set(tidy_dirs "${CMAKE_SOURCE_DIR}/launcher/include") set(tidy_dirs "${CMAKE_CURRENT_SOURCE_DIR}/include")
set(iwyu_maps "${CMAKE_SOURCE_DIR}/launcher/utils/qt6_16.imp") set(iwyu_maps "${CMAKE_CURRENT_SOURCE_DIR}/utils/qt6_16.imp")
get_property(inc_headers TARGET launcher PROPERTY INCLUDE_DIRECTORIES) get_property(inc_headers TARGET launcher PROPERTY INCLUDE_DIRECTORIES)
list(APPEND inc_headers list(APPEND inc_headers
${CMAKE_SOURCE_DIR}/launcher ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}/launcher/launcher_autogen/include ${CMAKE_CURRENT_BINARY_DIR}/launcher_autogen/include
${Qt6Widgets_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS}
${Qt6Core_INCLUDE_DIRS} ${Qt6Core_INCLUDE_DIRS}
${Qt6Gui_INCLUDE_DIRS} ${Qt6Gui_INCLUDE_DIRS}