mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-12-02 10:35:39 +00:00
211 lines
5.3 KiB
CMake
211 lines
5.3 KiB
CMake
add_library(core
|
|
achievements.cpp
|
|
achievements.h
|
|
achievements_private.h
|
|
analog_controller.cpp
|
|
analog_controller.h
|
|
analog_joystick.cpp
|
|
analog_joystick.h
|
|
bios.cpp
|
|
bios.h
|
|
bus.cpp
|
|
bus.h
|
|
cdrom.cpp
|
|
cdrom.h
|
|
cdrom_async_reader.cpp
|
|
cdrom_async_reader.h
|
|
cheats.cpp
|
|
cheats.h
|
|
controller.cpp
|
|
controller.h
|
|
cpu_code_cache.cpp
|
|
cpu_code_cache.h
|
|
cpu_code_cache_private.h
|
|
cpu_core.cpp
|
|
cpu_core.h
|
|
cpu_core_private.h
|
|
cpu_disasm.cpp
|
|
cpu_disasm.h
|
|
cpu_pgxp.cpp
|
|
cpu_pgxp.h
|
|
cpu_types.cpp
|
|
cpu_types.h
|
|
digital_controller.cpp
|
|
digital_controller.h
|
|
dma.cpp
|
|
dma.h
|
|
fullscreen_ui.cpp
|
|
fullscreen_ui.h
|
|
game_database.cpp
|
|
game_database.h
|
|
game_list.cpp
|
|
game_list.h
|
|
gdb_protocol.cpp
|
|
gdb_protocol.h
|
|
gpu.cpp
|
|
gpu.h
|
|
gpu_backend.cpp
|
|
gpu_backend.h
|
|
gpu_commands.cpp
|
|
gpu_hw.cpp
|
|
gpu_hw.h
|
|
gpu_hw_shadergen.cpp
|
|
gpu_hw_shadergen.h
|
|
gpu_shadergen.cpp
|
|
gpu_shadergen.h
|
|
gpu_sw.cpp
|
|
gpu_sw.h
|
|
gpu_sw_backend.cpp
|
|
gpu_sw_backend.h
|
|
gpu_types.h
|
|
guncon.cpp
|
|
guncon.h
|
|
gte.cpp
|
|
gte.h
|
|
gte_types.h
|
|
host.cpp
|
|
host.h
|
|
host_interface_progress_callback.cpp
|
|
host_interface_progress_callback.h
|
|
hotkeys.cpp
|
|
input_types.h
|
|
imgui_overlays.cpp
|
|
imgui_overlays.h
|
|
interrupt_controller.cpp
|
|
interrupt_controller.h
|
|
mdec.cpp
|
|
mdec.h
|
|
memory_card.cpp
|
|
memory_card.h
|
|
memory_card_image.cpp
|
|
memory_card_image.h
|
|
multitap.cpp
|
|
multitap.h
|
|
negcon.cpp
|
|
negcon.h
|
|
pad.cpp
|
|
pad.h
|
|
pcdrv.cpp
|
|
pcdrv.h
|
|
playstation_mouse.cpp
|
|
playstation_mouse.h
|
|
psf_loader.cpp
|
|
psf_loader.h
|
|
resources.cpp
|
|
resources.h
|
|
save_state_version.h
|
|
settings.cpp
|
|
settings.h
|
|
shader_cache_version.h
|
|
sio.cpp
|
|
sio.h
|
|
spu.cpp
|
|
spu.h
|
|
system.cpp
|
|
system.h
|
|
texture_replacements.cpp
|
|
texture_replacements.h
|
|
timers.cpp
|
|
timers.h
|
|
timing_event.cpp
|
|
timing_event.h
|
|
types.h
|
|
)
|
|
|
|
set(RECOMPILER_SRCS
|
|
cpu_recompiler_code_generator.cpp
|
|
cpu_recompiler_code_generator.h
|
|
cpu_recompiler_code_generator_generic.cpp
|
|
cpu_recompiler_register_cache.cpp
|
|
cpu_recompiler_register_cache.h
|
|
cpu_recompiler_thunks.h
|
|
cpu_recompiler_types.h
|
|
)
|
|
|
|
set(NEWREC_SOURCES
|
|
cpu_newrec_compiler.cpp
|
|
cpu_newrec_compiler.h
|
|
)
|
|
|
|
target_precompile_headers(core PRIVATE "pch.h")
|
|
target_include_directories(core PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
|
target_include_directories(core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
|
target_link_libraries(core PUBLIC Threads::Threads common util ZLIB::ZLIB)
|
|
target_link_libraries(core PRIVATE xxhash imgui rapidyaml rcheevos)
|
|
|
|
if(CPU_ARCH_X64)
|
|
target_compile_definitions(core PUBLIC "ENABLE_RECOMPILER=1" "ENABLE_NEWREC=1" "ENABLE_MMAP_FASTMEM=1")
|
|
target_sources(core PRIVATE ${RECOMPILER_SRCS} ${NEWREC_SOURCES}
|
|
cpu_recompiler_code_generator_x64.cpp
|
|
cpu_newrec_compiler_x64.cpp
|
|
cpu_newrec_compiler_x64.h
|
|
)
|
|
target_link_libraries(core PRIVATE xbyak)
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
target_link_libraries(core PRIVATE zydis)
|
|
endif()
|
|
message("Building x64 recompiler")
|
|
endif()
|
|
if(CPU_ARCH_ARM32)
|
|
target_compile_definitions(core PUBLIC "ENABLE_RECOMPILER=1" "ENABLE_NEWREC=1")
|
|
target_sources(core PRIVATE ${RECOMPILER_SRCS} ${NEWREC_SOURCES}
|
|
cpu_recompiler_code_generator_aarch32.cpp
|
|
cpu_newrec_compiler_aarch32.cpp
|
|
cpu_newrec_compiler_aarch32.h
|
|
)
|
|
target_link_libraries(core PUBLIC vixl)
|
|
message("Building AArch32 recompiler")
|
|
endif()
|
|
if(CPU_ARCH_ARM64)
|
|
target_compile_definitions(core PUBLIC "ENABLE_RECOMPILER=1" "ENABLE_NEWREC=1" "ENABLE_MMAP_FASTMEM=1")
|
|
target_sources(core PRIVATE ${RECOMPILER_SRCS} ${NEWREC_SOURCES}
|
|
cpu_recompiler_code_generator_aarch64.cpp
|
|
cpu_newrec_compiler_aarch64.cpp
|
|
cpu_newrec_compiler_aarch64.h
|
|
)
|
|
target_link_libraries(core PUBLIC vixl)
|
|
message("Building AArch64 recompiler")
|
|
endif()
|
|
if(CPU_ARCH_RISCV64)
|
|
target_compile_definitions(core PUBLIC "ENABLE_NEWREC=1" "ENABLE_MMAP_FASTMEM=1")
|
|
target_sources(core PRIVATE ${NEWREC_SOURCES}
|
|
cpu_newrec_compiler_riscv64.cpp
|
|
cpu_newrec_compiler_riscv64.h
|
|
)
|
|
target_link_libraries(core PUBLIC biscuit::biscuit riscv-disas)
|
|
message("Building RISC-V 64-bit recompiler")
|
|
endif()
|
|
|
|
if(ENABLE_DISCORD_PRESENCE)
|
|
target_compile_definitions(core PUBLIC -DENABLE_DISCORD_PRESENCE=1)
|
|
target_link_libraries(core PRIVATE discord-rpc)
|
|
endif()
|
|
|
|
# Copy the provided data directory to the output directory. Borrowed from PCSX2.
|
|
function(add_resources target path basedir)
|
|
get_filename_component(dir ${path} DIRECTORY)
|
|
file(RELATIVE_PATH subdir ${basedir} ${dir})
|
|
if(APPLE)
|
|
target_sources(${target} PRIVATE ${path})
|
|
set_source_files_properties(${path} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${subdir})
|
|
else()
|
|
add_custom_command(TARGET ${target} POST_BUILD
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "$<TARGET_FILE_DIR:${target}>/resources/${subdir}"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${path}" "$<TARGET_FILE_DIR:${target}>/resources/${subdir}")
|
|
endif()
|
|
source_group(Resources/${subdir} FILES ${path})
|
|
endfunction()
|
|
|
|
function(add_core_resources target)
|
|
add_util_resources(${target})
|
|
|
|
file(GLOB_RECURSE RESOURCE_FILES ${CMAKE_SOURCE_DIR}/data/resources/*)
|
|
foreach(path IN LISTS RESOURCE_FILES)
|
|
get_filename_component(file ${path} NAME)
|
|
if("${file}" MATCHES "^\\.") # Don't copy macOS garbage (mainly Finder's .DS_Store files) into application
|
|
continue()
|
|
endif()
|
|
add_resources(${target} ${path} ${CMAKE_SOURCE_DIR}/data/resources/)
|
|
endforeach()
|
|
endfunction()
|