[Build] Convert build system to raw cmake and remove premake layer
This commit is contained in:
115
src/xenia/app/CMakeLists.txt
Normal file
115
src/xenia/app/CMakeLists.txt
Normal file
@@ -0,0 +1,115 @@
|
||||
# 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
|
||||
)
|
||||
# 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"
|
||||
)
|
||||
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)
|
||||
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-gpu-vulkan
|
||||
xenia-hid
|
||||
xenia-hid-nop
|
||||
xenia-kernel
|
||||
xenia-patcher
|
||||
xenia-ui
|
||||
xenia-ui-vulkan
|
||||
xenia-vfs
|
||||
# Third-party
|
||||
aes_128
|
||||
capstone
|
||||
fmt
|
||||
dxbc
|
||||
discord-rpc
|
||||
glslang-spirv
|
||||
imgui
|
||||
libavcodec
|
||||
libavutil
|
||||
mspack
|
||||
snappy
|
||||
xxhash
|
||||
)
|
||||
|
||||
# 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
|
||||
)
|
||||
|
||||
# x64 backend
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
|
||||
target_link_libraries(xenia-app PRIVATE xenia-cpu-backend-x64)
|
||||
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)
|
||||
Reference in New Issue
Block a user