- Setup dynamic linking to libdecor
This commit is contained in:
@@ -21,6 +21,17 @@
|
||||
|
||||
# some of this code is based on SDL3's use of wayland-scanner
|
||||
|
||||
function(fennec_wayland_get_protocol)
|
||||
set( _OPTIONS_ARGS )
|
||||
set( _ONE_VALUE_ARGS )
|
||||
set( _MULTI_VALUE_ARGS NAMES PATHS )
|
||||
|
||||
cmake_parse_arguments(_FINDPROTOCOLS "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
|
||||
|
||||
find_file(_FINDPROTOCOLS_TEMP NAMES ${_FINDPROTOCOLS_NAMES} PATHS ${_FINDPROTOCOLS_PATHS})
|
||||
file(COPY ${_FINDPROTOCOLS_TEMP} DESTINATION ${WAYLAND_PROTOCOLS_DIR})
|
||||
endfunction()
|
||||
|
||||
macro(fennec_wayland_get_header _SCANNER _XML _FILE)
|
||||
set(_WAYLAND_PROT_H_CODE "${WAYLAND_HEADERS_DIR}/${_FILE}-client-protocols.h")
|
||||
set(_WAYLAND_PROT_C_CODE "${WAYLAND_SOURCES_DIR}/${_FILE}-client.c")
|
||||
@@ -59,6 +70,7 @@ macro(fennec_check_wayland)
|
||||
NAMES wayland-egl libwayland-egl
|
||||
)
|
||||
|
||||
|
||||
if( (WAYLAND_CLIENT_INCLUDE_DIR AND WAYLAND_CLIENT_LIBRARY AND WAYLAND_SCANNER)
|
||||
AND (WAYLAND_EGL_INCLUDE_DIR AND WAYLAND_EGL_LIBRARY))
|
||||
message(STATUS "Found Wayland: ${WAYLAND_CLIENT_LIBRARY}")
|
||||
@@ -68,12 +80,8 @@ macro(fennec_check_wayland)
|
||||
set(WAYLAND_SOURCES_DIR ${FENNEC_SOURCE_DIR}/source/platform/linux/wayland/lib/sources)
|
||||
|
||||
# Search for base protocol xml
|
||||
find_file(WAYLAND_PROTOCOL NAMES wayland.xml PATHS /usr/share/wayland /usr/share/wayland-protocols)
|
||||
file(COPY ${WAYLAND_PROTOCOL} DESTINATION ${WAYLAND_PROTOCOLS_DIR})
|
||||
|
||||
# search for xdg protocols
|
||||
find_file(XDG_SHELL_PROTOCOL NAMES xdg-shell.xml PATHS /usr/share/wayland-protocols/stable/xdg-shell)
|
||||
file(COPY ${XDG_SHELL_PROTOCOL} DESTINATION ${WAYLAND_PROTOCOLS_DIR})
|
||||
fennec_wayland_get_protocol(NAMES "wayland.xml" PATHS "/usr/share/wayland" "/usr/share/wayland-protocols")
|
||||
fennec_wayland_get_protocol(NAMES "xdg-shell.xml" PATHS "/usr/share/wayland/stable/xdg-shell" "/usr/share/wayland-protocols/stable/xdg-shell")
|
||||
|
||||
# include sub-dependencies
|
||||
include("${FENNEC_SOURCE_DIR}/cmake/xkb.cmake")
|
||||
@@ -123,5 +131,38 @@ macro(fennec_check_wayland)
|
||||
FENNEC_LIB_WAYLAND="${WAYLAND_CLIENT_LIBRARY}"
|
||||
FENNEC_LIB_WAYLAND_EGL="${WAYLAND_EGL_LIBRARY}"
|
||||
)
|
||||
|
||||
|
||||
# find libdecor
|
||||
find_path(
|
||||
LIBDECOR_INCLUDE_DIR
|
||||
PATH_SUFFIXES libdecor libdecor-0
|
||||
NAMES libdecor.h libdecor.h
|
||||
)
|
||||
find_library(
|
||||
LIBDECOR_LIBRARY
|
||||
PATH_SUFFIXES libdecor libdecor-0
|
||||
NAMES libdecor.so libdecor-0.so
|
||||
)
|
||||
|
||||
if(LIBDECOR_INCLUDE_DIR AND LIBDECOR_LIBRARY)
|
||||
message(STATUS "Found libdecor: ${LIBDECOR_LIBRARY}")
|
||||
|
||||
fennec_add_definitions(
|
||||
FENNEC_HAS_LIBDECOR=1
|
||||
FENNEC_LIB_LIBDECOR="${LIBDECOR_LIBRARY}"
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${LIBDECOR_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
fennec_add_sources(
|
||||
include/fennec/platform/linux/wayland/libdecor/sym.h
|
||||
include/fennec/platform/linux/wayland/libdecor/libdecor.h
|
||||
include/fennec/platform/linux/wayland/libdecor/loader.h source/platform/linux/wayland/libdecor/loader.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endmacro()
|
||||
Reference in New Issue
Block a user