diff options
| author | Tony-LunarG <tony@lunarg.com> | 2022-01-13 16:33:24 -0700 |
|---|---|---|
| committer | Tony Barbour <tony@lunarg.com> | 2022-02-02 13:23:52 -0700 |
| commit | 2d9f59a357c372951120faa792209afd8a0da9b0 (patch) | |
| tree | b89b1c2f34d93bde2b3eb27d741c8c5947307db0 | |
| parent | b69bea34466e746f919388ff88a783fae64ca43a (diff) | |
| download | usermoji-2d9f59a357c372951120faa792209afd8a0da9b0.tar.xz | |
build: Add build target for vkcube-wayland
| -rw-r--r-- | cube/CMakeLists.txt | 114 |
1 files changed, 74 insertions, 40 deletions
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt index d59eb436..4087351d 100644 --- a/cube/CMakeLists.txt +++ b/cube/CMakeLists.txt @@ -69,6 +69,41 @@ if(UNIX AND NOT APPLE) # i.e. Linux find_package(WaylandScanner REQUIRED) find_package(WaylandProtocols REQUIRED) include_directories(${WAYLAND_CLIENT_INCLUDE_DIR}) + set(XDG_SHELL_PROTOCOL ${WAYLAND_PROTOCOLS_PATH}/stable/xdg-shell/xdg-shell.xml) + add_custom_command(COMMENT "Generating xdg-shell protocol dispatch data" + OUTPUT xdg-shell-code.c + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} + private-code + ${XDG_SHELL_PROTOCOL} + ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-code.c + MAIN_DEPENDENCY ${XDG_SHELL_PROTOCOL} + DEPENDS ${XDG_SHELL_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) + add_custom_command(COMMENT "Generating xdg-shell protocol header" + OUTPUT xdg-shell-client-header.h + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} + client-header + ${XDG_SHELL_PROTOCOL} + ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-client-header.h + MAIN_DEPENDENCY ${XDG_SHELL_PROTOCOL} + DEPENDS ${XDG_SHELL_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) + + set(XDG_DECORATION_PROTOCOL ${WAYLAND_PROTOCOLS_PATH}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml) + add_custom_command(COMMENT "Generating xdg-decoration protocol dispatch data" + OUTPUT xdg-decoration-code.c + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} + private-code + ${XDG_DECORATION_PROTOCOL} + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-code.c + MAIN_DEPENDENCY ${XDG_DECORATION_PROTOCOL} + DEPENDS ${XDG_DECORATION_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) + add_custom_command(COMMENT "Generating xdg-decoration protocol header" + OUTPUT xdg-decoration-client-header.h + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} + client-header + ${XDG_DECORATION_PROTOCOL} + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-client-header.h + MAIN_DEPENDENCY ${XDG_DECORATION_PROTOCOL} + DEPENDS ${XDG_DECORATION_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) endif() if(BUILD_WSI_DIRECTFB_SUPPORT) @@ -101,57 +136,22 @@ elseif(UNIX AND NOT APPLE) # i.e. Linux endif() set(CUBE_INCLUDE_DIRS ${XCB_INCLUDE_DIRS} ${CUBE_INCLUDE_DIRS}) link_libraries(${XCB_LIBRARIES}) - add_definitions(-DVK_USE_PLATFORM_XCB_KHR) + set(CUBE_PLATFORM VK_USE_PLATFORM_XCB_KHR) elseif(CUBE_WSI_SELECTION STREQUAL "XLIB") if(NOT BUILD_WSI_XLIB_SUPPORT) message(FATAL_ERROR "Selected XLIB for vkcube build but not building Xlib support") endif() set(CUBE_INCLUDE_DIRS ${X11_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) link_libraries(${X11_LIBRARIES}) - add_definitions(-DVK_USE_PLATFORM_XLIB_KHR) + set(CUBE_PLATFORM VK_USE_PLATFORM_XLIB_KHR) elseif(CUBE_WSI_SELECTION STREQUAL "WAYLAND") if(NOT BUILD_WSI_WAYLAND_SUPPORT) message(FATAL_ERROR "Selected Wayland for vkcube build but not building Wayland support") endif() set(CUBE_INCLUDE_DIRS ${WAYLAND_CLIENT_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) link_libraries(${WAYLAND_CLIENT_LIBRARIES}) - add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR) + set(CUBE_PLATFORM VK_USE_PLATFORM_WAYLAND_KHR) set(XDG_SHELL_PROTOCOL ${WAYLAND_PROTOCOLS_PATH}/stable/xdg-shell/xdg-shell.xml) - add_custom_command(COMMENT "Generating xdg-shell protocol dispatch data" - OUTPUT xdg-shell-code.c - COMMAND ${WAYLAND_SCANNER_EXECUTABLE} - private-code - ${XDG_SHELL_PROTOCOL} - ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-code.c - MAIN_DEPENDENCY ${XDG_SHELL_PROTOCOL} - DEPENDS ${XDG_SHELL_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) - add_custom_command(COMMENT "Generating xdg-shell protocol header" - OUTPUT xdg-shell-client-header.h - COMMAND ${WAYLAND_SCANNER_EXECUTABLE} - client-header - ${XDG_SHELL_PROTOCOL} - ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-client-header.h - MAIN_DEPENDENCY ${XDG_SHELL_PROTOCOL} - DEPENDS ${XDG_SHELL_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) - - set(XDG_DECORATION_PROTOCOL ${WAYLAND_PROTOCOLS_PATH}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml) - add_custom_command(COMMENT "Generating xdg-decoration protocol dispatch data" - OUTPUT xdg-decoration-code.c - COMMAND ${WAYLAND_SCANNER_EXECUTABLE} - private-code - ${XDG_DECORATION_PROTOCOL} - ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-code.c - MAIN_DEPENDENCY ${XDG_DECORATION_PROTOCOL} - DEPENDS ${XDG_DECORATION_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) - add_custom_command(COMMENT "Generating xdg-decoration protocol header" - OUTPUT xdg-decoration-client-header.h - COMMAND ${WAYLAND_SCANNER_EXECUTABLE} - client-header - ${XDG_DECORATION_PROTOCOL} - ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-client-header.h - MAIN_DEPENDENCY ${XDG_DECORATION_PROTOCOL} - DEPENDS ${XDG_DECORATION_PROTOCOL} ${WAYLAND_SCANNER_EXECUTABLE}) - set(OPTIONAL_WAYLAND_DATA_FILES ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-code.c ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-client-header.h @@ -164,9 +164,9 @@ elseif(UNIX AND NOT APPLE) # i.e. Linux endif() set(CUBE_INCLUDE_DIRS ${DIRECTFB_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) link_libraries(${DIRECTFB_LIBRARIES}) - add_definitions(-DVK_USE_PLATFORM_DIRECTFB_EXT) + set(CUBE_PLATFORM VK_USE_PLATFORM_DIRECTFB_EXT) elseif(CUBE_WSI_SELECTION STREQUAL "DISPLAY") - add_definitions(-DVK_USE_PLATFORM_DISPLAY_KHR) + set(CUBE_PLATFORM VK_USE_PLATFORM_DISPLAY_KHR) else() message(FATAL_ERROR "Unrecognized value for CUBE_WSI_SELECTION: ${CUBE_WSI_SELECTION}") endif() @@ -237,6 +237,7 @@ elseif(NOT WIN32) cube.frag.inc ${OPTIONAL_WAYLAND_DATA_FILES}) target_link_libraries(vkcube Vulkan::Vulkan) + target_compile_definitions(vkcube PUBLIC ${CUBE_PLATFORM}) include(CheckLibraryExists) CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT) if (NEED_RT) @@ -288,6 +289,7 @@ elseif(NOT WIN32) cube.frag.inc ${OPTIONAL_WAYLAND_DATA_FILES}) target_link_libraries(vkcubepp Vulkan::Vulkan) + target_compile_definitions(vkcubepp PUBLIC ${CUBE_PLATFORM}) endif() else() if(CMAKE_CL_64) @@ -318,3 +320,35 @@ if(APPLE) else() install(TARGETS vkcubepp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() + +# ---------------------------------------------------------------------------- +# vkcube-wayland + +if(UNIX AND NOT APPLE) # i.e. Linux + if(BUILD_WSI_WAYLAND_SUPPORT AND EXISTS ${WAYLAND_PROTOCOLS_PATH}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml) + set(CUBE_INCLUDE_DIRS ${WAYLAND_CLIENT_INCLUDE_DIR} ${CUBE_INCLUDE_DIRS}) + link_libraries(${WAYLAND_CLIENT_LIBRARIES}) + set(OPTIONAL_WAYLAND_DATA_FILES + ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-code.c + ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-client-header.h + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-code.c + ${CMAKE_CURRENT_BINARY_DIR}/xdg-decoration-client-header.h) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + add_executable(vkcube-wayland + cube.c + ${PROJECT_SOURCE_DIR}/cube/cube.vert + ${PROJECT_SOURCE_DIR}/cube/cube.frag + cube.vert.inc + cube.frag.inc + ${OPTIONAL_WAYLAND_DATA_FILES}) + target_link_libraries(vkcube-wayland Vulkan::Vulkan) + target_compile_definitions(vkcube-wayland PUBLIC VK_USE_PLATFORM_WAYLAND_KHR) + include(CheckLibraryExists) + CHECK_LIBRARY_EXISTS("rt" clock_gettime "" NEED_RT) + if (NEED_RT) + target_link_libraries(vkcube-wayland rt) + endif() + endif() + endif() +endif() |
