parent
dcdabb9b12
commit
ad6e36023f
5 changed files with 338 additions and 32 deletions
|
|
@ -26,6 +26,10 @@ if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
|
|||
find_package(Vulkan)
|
||||
endif()
|
||||
|
||||
IF(UNIX AND NOT APPLE)
|
||||
set(LINUX TRUE)
|
||||
ENDIF()
|
||||
|
||||
IF(WIN32)
|
||||
IF (NOT Vulkan_FOUND)
|
||||
find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan)
|
||||
|
|
@ -35,7 +39,7 @@ IF(WIN32)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR")
|
||||
ELSE(WIN32)
|
||||
ELSEIF(LINUX)
|
||||
IF (NOT Vulkan_FOUND)
|
||||
find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib" "${CMAKE_SOURCE_DIR}/libs/vulkan" REQUIRED)
|
||||
IF (Vulkan_LIBRARY)
|
||||
|
|
@ -44,36 +48,38 @@ ELSE(WIN32)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
find_package(Threads REQUIRED)
|
||||
IF(USE_D2D_WSI)
|
||||
MESSAGE("Using direct to display extension...")
|
||||
add_definitions(-D_DIRECT2DISPLAY)
|
||||
ELSEIF(USE_WAYLAND_WSI)
|
||||
find_program(PKG_CONFIG pkg-config)
|
||||
if (NOT PKG_CONFIG)
|
||||
message(FATAL_ERROR "pkg-config binary not found")
|
||||
endif ()
|
||||
find_package(Wayland REQUIRED)
|
||||
if (NOT WAYLAND_FOUND)
|
||||
message(FATAL_ERROR "Wayland development package not found")
|
||||
endif ()
|
||||
pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols)
|
||||
if (NOT WAYLAND_PROTOCOLS_FOUND)
|
||||
message(FATAL_ERROR "Wayland protocols package not found")
|
||||
endif ()
|
||||
find_program(WAYLAND_SCANNER wayland-scanner)
|
||||
if (NOT WAYLAND_SCANNER)
|
||||
message(FATAL_ERROR "wayland-scanner binary not found")
|
||||
endif ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WAYLAND_KHR")
|
||||
include_directories(${WAYLAND_INCLUDE_DIR})
|
||||
execute_process(COMMAND ${PKG_CONFIG} --variable=pkgdatadir wayland-protocols OUTPUT_VARIABLE protocol_dir OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${WAYLAND_SCANNER} client-header ${protocol_dir}/stable/xdg-shell/xdg-shell.xml ${CMAKE_BINARY_DIR}/xdg-shell-client-protocol.h
|
||||
COMMAND ${WAYLAND_SCANNER} private-code ${protocol_dir}/stable/xdg-shell/xdg-shell.xml ${CMAKE_BINARY_DIR}/xdg-shell-protocol.c)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
ELSE(USE_D2D_WSI)
|
||||
find_package(XCB REQUIRED)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
|
||||
ENDIF(USE_D2D_WSI)
|
||||
IF(USE_D2D_WSI)
|
||||
MESSAGE("Using direct to display extension...")
|
||||
add_definitions(-D_DIRECT2DISPLAY)
|
||||
ELSEIF(USE_WAYLAND_WSI)
|
||||
find_program(PKG_CONFIG pkg-config)
|
||||
if (NOT PKG_CONFIG)
|
||||
message(FATAL_ERROR "pkg-config binary not found")
|
||||
endif ()
|
||||
find_package(Wayland REQUIRED)
|
||||
if (NOT WAYLAND_FOUND)
|
||||
message(FATAL_ERROR "Wayland development package not found")
|
||||
endif ()
|
||||
pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols)
|
||||
if (NOT WAYLAND_PROTOCOLS_FOUND)
|
||||
message(FATAL_ERROR "Wayland protocols package not found")
|
||||
endif ()
|
||||
find_program(WAYLAND_SCANNER wayland-scanner)
|
||||
if (NOT WAYLAND_SCANNER)
|
||||
message(FATAL_ERROR "wayland-scanner binary not found")
|
||||
endif ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WAYLAND_KHR")
|
||||
include_directories(${WAYLAND_INCLUDE_DIR})
|
||||
execute_process(COMMAND ${PKG_CONFIG} --variable=pkgdatadir wayland-protocols OUTPUT_VARIABLE protocol_dir OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${WAYLAND_SCANNER} client-header ${protocol_dir}/stable/xdg-shell/xdg-shell.xml ${CMAKE_BINARY_DIR}/xdg-shell-client-protocol.h
|
||||
COMMAND ${WAYLAND_SCANNER} private-code ${protocol_dir}/stable/xdg-shell/xdg-shell.xml ${CMAKE_BINARY_DIR}/xdg-shell-protocol.c)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
ELSE(USE_D2D_WSI)
|
||||
find_package(XCB REQUIRED)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
|
||||
ENDIF(USE_D2D_WSI)
|
||||
ELSEIF(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_MACOS_MVK -DVK_EXAMPLE_XCODE_GENERATED")
|
||||
# Todo : android?
|
||||
ENDIF(WIN32)
|
||||
|
||||
|
|
@ -115,10 +121,14 @@ endif()
|
|||
# Compiler specific stuff
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
||||
ELSEIF(APPLE)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc -xobjective-c++")
|
||||
ENDIF(MSVC)
|
||||
|
||||
IF(WIN32)
|
||||
# Nothing here (yet)
|
||||
ELSEIF(APPLE)
|
||||
link_libraries(${Vulkan_LIBRARY} "-framework AppKit" "-framework QuartzCore")
|
||||
ELSE(WIN32)
|
||||
link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY} ${Vulkan_LIBRARY} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
ENDIF(WIN32)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue