mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-27 23:47:03 +02:00
Since the launch of the steam controller I think it's only best to push towards updating to SDL3 allowing for a wider range of controller support I went ahead and started on getting it working. Everything here should be functional, I've personally tested it all on Arch Linux. Still untested on windows, so looking for feedback on that Any feedback and help would be appreciated! Main changes: - Bump everything to SDL3 - Handle SDL3 audio and input - Add steam controller support, including HD Rumble - Improved battery reporting via the status icon by using real % rather than state alone Co-authored-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3952 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Lizzie <lizzie@eden-emu.dev>
77 lines
2.5 KiB
CMake
77 lines
2.5 KiB
CMake
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# Credits to Samantas5855 and others for this function.
|
|
function(create_resource file output filename)
|
|
# Read hex data from file
|
|
file(READ ${file} filedata HEX)
|
|
# Convert hex data for C compatibility
|
|
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
|
|
# Write data to output file
|
|
set(RESOURCES_DIR "${PROJECT_BINARY_DIR}/dist" PARENT_SCOPE)
|
|
file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n")
|
|
endfunction()
|
|
|
|
if (ENABLE_OPENGL)
|
|
list(APPEND OPENGL_SOURCES
|
|
emu_window/emu_window_sdl3_gl.cpp
|
|
emu_window/emu_window_sdl3_gl.h
|
|
)
|
|
else()
|
|
set(OPENGL_SOURCES "")
|
|
endif()
|
|
|
|
add_executable(yuzu-cmd
|
|
emu_window/emu_window_sdl3.cpp
|
|
emu_window/emu_window_sdl3.h
|
|
emu_window/emu_window_sdl3_null.cpp
|
|
emu_window/emu_window_sdl3_null.h
|
|
emu_window/emu_window_sdl3_vk.cpp
|
|
emu_window/emu_window_sdl3_vk.h
|
|
sdl_config.cpp
|
|
sdl_config.h
|
|
yuzu.cpp
|
|
yuzu.rc
|
|
${OPENGL_SOURCES}
|
|
)
|
|
|
|
target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common video_core)
|
|
if (ENABLE_OPENGL)
|
|
target_link_libraries(yuzu-cmd PRIVATE glad)
|
|
endif()
|
|
if (MSVC)
|
|
target_link_libraries(yuzu-cmd PRIVATE getopt)
|
|
endif()
|
|
target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
|
|
|
create_resource("../../dist/eden.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon")
|
|
target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR})
|
|
|
|
target_link_libraries(yuzu-cmd PRIVATE SDL3::SDL3)
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
install(TARGETS yuzu-cmd)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
# compile as a win32 gui application instead of a console application
|
|
if(MSVC)
|
|
set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
|
|
elseif(MINGW)
|
|
set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")
|
|
endif()
|
|
endif()
|
|
|
|
create_target_directory_groups(yuzu-cmd)
|
|
|
|
# needed for vma
|
|
if (NOT MSVC)
|
|
target_compile_options(yuzu-cmd PRIVATE
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
|
|
endif()
|