Files
Xenia-Canary/src/xenia/app/CMakeLists.txt

126 lines
2.7 KiB
CMake

# src/xenia/app/CMakeLists.txt - Main xenia_canary executable.
if(WIN32)
add_executable(xenia-app WIN32)
else()
add_executable(xenia-app)
endif()
set_target_properties(xenia-app PROPERTIES OUTPUT_NAME "xenia_canary")
# Main source
target_sources(xenia-app PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/xenia_main.cc
)
# Other app sources (emulator_window, profile_dialogs, etc.)
xe_platform_sources(xenia-app ${CMAKE_CURRENT_SOURCE_DIR})
# Platform-specific entry points
if(WIN32)
target_sources(xenia-app PRIVATE
${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_win.cc
${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_win.cc
${CMAKE_CURRENT_SOURCE_DIR}/main_resources.rc
${PROJECT_SOURCE_DIR}/src/xenia/base/app_win32.manifest
)
if(XE_TARGET_X86_64)
# main_init_win.cc needs SSE2 only (not AVX)
set_source_files_properties(
${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_win.cc
PROPERTIES COMPILE_OPTIONS "/arch:SSE2"
)
endif()
else()
target_sources(xenia-app PRIVATE
${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_posix.cc
${PROJECT_SOURCE_DIR}/src/xenia/ui/windowed_app_main_posix.cc
)
if(NOT MSVC AND XE_TARGET_X86_64)
set_source_files_properties(
${PROJECT_SOURCE_DIR}/src/xenia/base/main_init_posix.cc
PROPERTIES COMPILE_OPTIONS "-msse2;-mno-avx"
)
endif()
endif()
target_compile_definitions(xenia-app PRIVATE
XBYAK_NO_OP_NAMES
XBYAK_ENABLE_OMITTED_OPERAND
)
# Core libraries (all platforms)
target_link_libraries(xenia-app PRIVATE
xenia-apu
xenia-apu-nop
xenia-base
xenia-core
xenia-cpu
xenia-gpu
xenia-gpu-null
xenia-hid
xenia-hid-nop
xenia-kernel
xenia-patcher
xenia-ui
xenia-vfs
# Third-party
aes_128
capstone
fmt
dxbc
discord-rpc
imgui
libavcodec
libavutil
mspack
snappy
xxhash
)
# Vulkan/SPIR-V backends (not macOS)
if(NOT APPLE)
target_link_libraries(xenia-app PRIVATE
xenia-gpu-vulkan
xenia-ui-vulkan
glslang-spirv
)
endif()
# Non-Android specific (always true for Windows/Linux)
target_link_libraries(xenia-app PRIVATE
xenia-app-discord
xenia-apu-sdl
xenia-debug-ui
xenia-helper-sdl
xenia-hid-sdl
)
# Architecture-specific backend
if(XE_TARGET_X86_64)
target_link_libraries(xenia-app PRIVATE xenia-cpu-backend-x64)
elseif(XE_TARGET_AARCH64)
target_link_libraries(xenia-app PRIVATE xenia-cpu-backend-a64)
endif()
# Platform-specific libraries
if(WIN32)
target_link_libraries(xenia-app PRIVATE
xenia-apu-xaudio2
xenia-gpu-d3d12
xenia-hid-winkey
xenia-hid-xinput
xenia-ui-d3d12
)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries(xenia-app PRIVATE
xenia-apu-alsa
X11
xcb
X11-xcb
SDL2
)
endif()
xe_target_defaults(xenia-app)