aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony-LunarG <tony@lunarg.com>2022-01-13 16:33:24 -0700
committerTony Barbour <tony@lunarg.com>2022-02-02 13:23:52 -0700
commit2d9f59a357c372951120faa792209afd8a0da9b0 (patch)
treeb89b1c2f34d93bde2b3eb27d741c8c5947307db0
parentb69bea34466e746f919388ff88a783fae64ca43a (diff)
downloadusermoji-2d9f59a357c372951120faa792209afd8a0da9b0.tar.xz
build: Add build target for vkcube-wayland
-rw-r--r--cube/CMakeLists.txt114
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()