set (platform_INCLUDES "") set (platform_LIBS "") set(_HAS_WAYLAND Off) if(UNIX) find_package(X11 QUIET) if(X11_FOUND) list(APPEND platform_INCLUDES ui_interfaces/x11/XcbInterface.cpp ui_interfaces/x11/XcbEventInterface.cpp ui_interfaces/x11/XcbWindow.cpp ui_interfaces/x11/XcbScreen.cpp ui_interfaces/x11/XcbImage.cpp ui_interfaces/x11/XcbLayerInterface.cpp ui_interfaces/x11/XcbTextInterface.cpp ui_interfaces/x11/XcbKeyboard.cpp ui_interfaces/x11/XcbGlInterface.cpp ui_interfaces/x11/XcbGlWindowInterface.cpp ) list(APPEND platform_LIBS ${X11_LIBRARIES} ${X11_xcb_LIB} ${X11_X11_xcb_LIB} ${X11_xkbcommon_LIB} libxcb-image.so) list(APPEND X11_INCLUDE_DIRS ${X11_xkbcommon_INCLUDE_PATH}) else() message(STATUS "x11 development headers not found - skipping support") endif() find_path(WAYLAND_CLIENT_INCLUDE_DIR NAMES wayland-client.h) #if (NOT ${WAYLAND_CLIENT_INCLUDE_DIR-NOTFOUND}) list(APPEND WAYLAND_INCLUDE_DIRS ${WAYLAND_CLIENT_INCLUDE_DIR}) find_path(WAYLAND_EXTENSIONS_INCLUDE_DIR NAMES xdg-shell-client-protocol.h HINTS ENV WAYLAND_EXTENSION_DIR) #if(NOT ${WAYLAND_EXTENSIONS_INCLUDE_DIR-NOTFOUND}) find_library(WAYLAND_CLIENT_LIBRARY NAMES wayland-client libwayland-client) list(APPEND WAYLAND_INCLUDE_DIRS ${WAYLAND_EXTENSIONS_INCLUDE_DIR}) list(APPEND platform_INCLUDES ui_interfaces/wayland/WaylandInterface.cpp ui_interfaces/wayland/WaylandSurface.cpp ui_interfaces/wayland/WaylandBuffer.cpp ui_interfaces/wayland/WaylandPointerInterface.cpp ui_interfaces/wayland/WaylandSeatInterface.cpp ui_interfaces/wayland/WaylandKeyboard.cpp ui_interfaces/wayland/WaylandEglInterface.cpp ui_interfaces/wayland/WaylandEglWindowInterface.cpp ${WAYLAND_EXTENSIONS_INCLUDE_DIR}/xdg-shell-protocol.cpp ) set(OpenGL_GL_PREFERENCE "GLVND") find_package(OpenGL QUIET) if (OpenGL_FOUND) list(APPEND platform_LIBS OpenGL::EGL) endif() set(_HAS_WAYLAND ON) #else() #message(STATUS "Wayland Extensions Header not found - not building Wayland support") #endif() #else() #message(STATUS "Wayland Client Header not found - not building Wayland support") #endif() else() list(APPEND platform_INCLUDES ui_interfaces/win32/Win32UIInterface.h ui_interfaces/win32/Win32UIInterface.cpp ui_interfaces/win32/Win32WindowInterface.h ui_interfaces/win32/Win32WindowInterface.cpp ui_interfaces/win32/Win32Window.h ui_interfaces/win32/Win32Window.cpp ) endif() set(HAS_WAYLAND ${_HAS_WAYLAND} CACHE BOOL "Can build with Wayland") list(APPEND windows_LIB_INCLUDES ui_interfaces/UiInterfaceFactory.cpp managers/WindowManager.cpp managers/DesktopManager.cpp managers/EventManager.cpp) # add the library add_library(windows SHARED ${windows_LIB_INCLUDES} ${platform_INCLUDES}) target_include_directories(windows PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/managers" "${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces" "${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces/x11" "${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces/wayland" "${CMAKE_CURRENT_SOURCE_DIR}/ui_interfaces/win32" ${WAYLAND_INCLUDE_DIRS} ${X11_INCLUDE_DIRS} ) target_link_libraries(windows PUBLIC ${platform_LIBS} core geometry graphics ui_elements ${WAYLAND_CLIENT_LIBRARY} wayland-egl) target_compile_options(windows PRIVATE -Wno-attributes) # From xdg shell autogen code set_property(TARGET windows PROPERTY FOLDER src) set_target_properties( windows PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )