mirror of
https://github.com/miyu0-bit/frameeye-helper.git
synced 2026-10-06 01:00:14 +02:00
63 lines
2.8 KiB
CMake
63 lines
2.8 KiB
CMake
# frameeyeosc-panel as a desktop window, for previewing it on a Linux PC without SteamVR.
|
|
# Builds the panel's own sources unchanged, except:
|
|
# - vr_overlay.cpp / vk_texture.cpp (SteamVR and its Vulkan textures) are replaced by vr_overlay_desktop.cpp (SDL2)
|
|
# - config.h's font paths point at this distribution's Noto Sans CJK (SteamOS keeps them elsewhere)
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(frameeyeosc-panel-preview LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
endif()
|
|
|
|
set(UPSTREAM "${CMAKE_CURRENT_SOURCE_DIR}/../../upstream/frameeyeosc" CACHE PATH "frameeyeosc source tree")
|
|
set(PANEL_FONT_REGULAR "/usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Regular.ttc" CACHE FILEPATH "Regular font")
|
|
set(PANEL_FONT_BOLD "/usr/share/fonts/google-noto-sans-cjk-fonts/NotoSansCJK-Bold.ttc" CACHE FILEPATH "Bold font")
|
|
|
|
# A copy of the panel's sources with the font paths replaced
|
|
set(SRC "${CMAKE_BINARY_DIR}/panel-src")
|
|
file(REMOVE_RECURSE "${SRC}")
|
|
file(COPY "${UPSTREAM}/panel/src/" DESTINATION "${SRC}")
|
|
file(READ "${SRC}/config.h" CONFIG_H)
|
|
string(REPLACE "/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc" "${PANEL_FONT_REGULAR}" CONFIG_H "${CONFIG_H}")
|
|
string(REPLACE "/usr/share/fonts/noto-cjk/NotoSansCJK-Bold.ttc" "${PANEL_FONT_BOLD}" CONFIG_H "${CONFIG_H}")
|
|
file(WRITE "${SRC}/config.h" "${CONFIG_H}")
|
|
|
|
file(STRINGS "${UPSTREAM}/Cargo.toml" CARGO_VERSION_LINE REGEX "^version = \"[^\"]+\"" LIMIT_COUNT 1)
|
|
string(REGEX REPLACE "^version = \"([^\"]+)\".*" "\\1" FRAMEEYEOSC_VERSION "${CARGO_VERSION_LINE}")
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
find_package(Threads REQUIRED)
|
|
pkg_check_modules(CAIRO REQUIRED IMPORTED_TARGET cairo)
|
|
pkg_check_modules(FREETYPE REQUIRED IMPORTED_TARGET freetype2)
|
|
pkg_check_modules(SDL2 REQUIRED IMPORTED_TARGET sdl2)
|
|
# vk_texture.h (included by vr_overlay.h) needs the Vulkan headers only; nothing links Vulkan
|
|
find_path(VULKAN_INCLUDE vulkan/vulkan.h REQUIRED)
|
|
|
|
add_executable(frameeyeosc-panel-preview
|
|
${SRC}/main.cpp
|
|
${SRC}/autostart.cpp
|
|
${SRC}/command.cpp
|
|
${SRC}/config.cpp
|
|
${SRC}/draw.cpp
|
|
${SRC}/gaze_dots.cpp
|
|
${SRC}/gaze_fit.cpp
|
|
${SRC}/fit_text.cpp
|
|
${SRC}/host_entry.cpp
|
|
${SRC}/i18n.cpp
|
|
${SRC}/json.cpp
|
|
${SRC}/model.cpp
|
|
${SRC}/panel.cpp
|
|
${SRC}/sounds.cpp
|
|
${SRC}/status.cpp
|
|
${SRC}/target.cpp
|
|
${SRC}/theme.cpp
|
|
${UPSTREAM}/vendor/frame-updater/cpp/update_check.cpp
|
|
vr_overlay_desktop.cpp
|
|
)
|
|
target_include_directories(frameeyeosc-panel-preview PRIVATE "${SRC}" "${UPSTREAM}/vendor/frame-updater/cpp" "${VULKAN_INCLUDE}")
|
|
target_compile_definitions(frameeyeosc-panel-preview PRIVATE FRAMEEYEOSC_VERSION="${FRAMEEYEOSC_VERSION}")
|
|
target_compile_options(frameeyeosc-panel-preview PRIVATE -Wall -Wextra)
|
|
target_link_libraries(frameeyeosc-panel-preview PRIVATE PkgConfig::CAIRO PkgConfig::FREETYPE PkgConfig::SDL2 Threads::Threads)
|