NoGUI: Migrate to new host abstraction

This commit is contained in:
Connor McLaughlin
2022-08-24 19:12:38 +10:00
parent 7277d29ff9
commit 6df7d9acda
30 changed files with 3475 additions and 1931 deletions

View File

@@ -1,39 +1,18 @@
add_executable(duckstation-nogui
main.cpp
nogui_host_interface.cpp
nogui_host_interface.h
nogui_host.cpp
nogui_host.h
nogui_platform.h
)
target_link_libraries(duckstation-nogui PRIVATE core common imgui glad frontend-common scmversion)
if(USE_SDL2)
target_sources(duckstation-nogui PRIVATE
sdl_host_interface.cpp
sdl_host_interface.h
sdl_key_names.h
)
target_include_directories(duckstation-nogui PRIVATE ${SDL2_INCLUDE_DIRS})
target_link_libraries(duckstation-nogui PRIVATE ${SDL2_LIBRARIES})
endif()
if(USE_EVDEV)
target_sources(duckstation-nogui PRIVATE
vty_host_interface.cpp
vty_host_interface.h
)
target_compile_definitions(duckstation-nogui PRIVATE "-DWITH_VTY=1")
target_compile_definitions(duckstation-nogui PRIVATE "-DUSE_LIBEVDEV=1")
target_include_directories(duckstation-nogui PRIVATE ${LIBEVDEV_INCLUDE_DIRS})
target_link_libraries(duckstation-nogui PRIVATE ${LIBEVDEV_LIBRARIES})
endif()
if(USE_DRMKMS)
target_compile_definitions(duckstation-nogui PRIVATE "-DWITH_DRMKMS=1")
endif()
target_link_libraries(duckstation-nogui PRIVATE core util common imgui glad frontend-common scmversion)
if(WIN32)
message(STATUS "Building Win32 NoGUI Platform.")
target_sources(duckstation-nogui PRIVATE
duckstation-nogui.manifest
resource.h
win32_nogui_platform.cpp
win32_nogui_platform.h
)
# We want a Windows subsystem application not console.
@@ -42,3 +21,57 @@ if(WIN32)
DEBUG_POSTFIX "-debug")
endif()
if(USE_X11)
message(STATUS "Building X11 NoGUI Platform.")
target_compile_definitions(duckstation-nogui PRIVATE "NOGUI_PLATFORM_X11=1")
target_sources(duckstation-nogui PRIVATE
x11_nogui_platform.cpp
x11_nogui_platform.h
)
target_include_directories(duckstation-nogui PRIVATE "${X11_INCLUDE_DIR}" "${X11_Xrandr_INCLUDE_PATH}")
target_link_libraries(duckstation-nogui PRIVATE "${X11_LIBRARIES}" "${X11_Xrandr_LIB}")
endif()
if(USE_WAYLAND)
message(STATUS "Building Wayland NoGUI Platform.")
find_package(Wayland REQUIRED Client)
find_package(WaylandScanner REQUIRED)
find_package(WaylandProtocols 1.15 REQUIRED)
find_package(XKBCommon REQUIRED)
target_compile_definitions(duckstation-nogui PRIVATE "NOGUI_PLATFORM_WAYLAND=1")
target_sources(duckstation-nogui PRIVATE
wayland_nogui_platform.cpp
wayland_nogui_platform.h
)
# Generate the xdg-shell and xdg-decoration protocols at build-time.
# Because these are C, not C++, we have to put them in their own library, otherwise
# cmake tries to generate a C PCH as well as the C++ one...
ecm_add_wayland_client_protocol(WAYLAND_PLATFORM_SRCS
PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/xdg-shell/xdg-shell.xml"
BASENAME xdg-shell)
ecm_add_wayland_client_protocol(WAYLAND_PLATFORM_SRCS
PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml"
BASENAME xdg-decoration)
add_library(duckstation-nogui-wayland-protocols STATIC ${WAYLAND_PLATFORM_SRCS})
target_include_directories(duckstation-nogui-wayland-protocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(duckstation-nogui PRIVATE
duckstation-nogui-wayland-protocols
Wayland::Client
XKBCommon::XKBCommon
)
endif()
if(USE_DRMKMS AND USE_EVDEV)
message(STATUS "Building VTY/DRM/KMS/EVDev NoGUI Platform.")
target_compile_definitions(duckstation-nogui PRIVATE "NOGUI_PLATFORM_VTY=1" "WITH_DRMKMS=1")
target_sources(duckstation-nogui PRIVATE
vty_key_names.h
vty_nogui_platform.cpp
vty_nogui_platform.h
)
target_include_directories(duckstation-nogui PRIVATE ${LIBEVDEV_INCLUDE_DIRS})
target_link_libraries(duckstation-nogui PRIVATE ${LIBEVDEV_LIBRARIES})
endif()