Remove REQUIRED flag for the Vulkan library search that are used if CMake version > 3.7. This will allow the configuration and build fall back of searching the internal vulkan library versions that are bundled within this repo. (In case that the user has not installed vulkan libraries under /usr) Signed-off-by: Mika Laitio <lamikr@pilppa.org>
149 lines
3.6 KiB
CMake
149 lines
3.6 KiB
CMake
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
|
|
cmake_policy(VERSION 2.8)
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
set(NAME vulkanExamples)
|
|
|
|
project(${NAME})
|
|
|
|
include_directories(external)
|
|
include_directories(external/glm)
|
|
include_directories(external/gli)
|
|
include_directories(external/assimp)
|
|
include_directories(base)
|
|
|
|
OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF)
|
|
|
|
# Use FindVulkan module added with CMAKE 3.7
|
|
if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
|
|
message(STATUS "Using module to find Vulkan")
|
|
find_package(Vulkan)
|
|
endif()
|
|
|
|
IF(WIN32)
|
|
IF (NOT Vulkan_FOUND)
|
|
find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan)
|
|
IF (Vulkan_LIBRARY)
|
|
set(Vulkan_FOUND ON)
|
|
MESSAGE("Using bundled Vulkan library version")
|
|
ENDIF()
|
|
ENDIF()
|
|
find_library(ASSIMP_LIBRARIES NAMES assimp libassimp.dll.a PATHS ${CMAKE_SOURCE_DIR}/libs/assimp)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR")
|
|
ELSE(WIN32)
|
|
IF (NOT Vulkan_FOUND)
|
|
find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib" "${CMAKE_SOURCE_DIR}/libs/vulkan" REQUIRED)
|
|
IF (Vulkan_LIBRARY)
|
|
set(Vulkan_FOUND ON)
|
|
MESSAGE("Using bundled Vulkan library version")
|
|
ENDIF()
|
|
ENDIF()
|
|
find_package(ASSIMP REQUIRED)
|
|
find_package(Threads REQUIRED)
|
|
IF(USE_D2D_WSI)
|
|
MESSAGE("Using direct to display extension...")
|
|
add_definitions(-D_DIRECT2DISPLAY)
|
|
ELSE(USE_D2D_WSI)
|
|
find_package(XCB REQUIRED)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
|
|
ENDIF(USE_D2D_WSI)
|
|
# Todo : android?
|
|
ENDIF(WIN32)
|
|
|
|
IF (NOT Vulkan_FOUND)
|
|
message(FATAL_ERROR "Could not find Vulkan library!")
|
|
ELSE()
|
|
message(STATUS ${Vulkan_LIBRARY})
|
|
ENDIF()
|
|
|
|
# Set preprocessor defines
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX -D_USE_MATH_DEFINES")
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
add_definitions(-std=c++11)
|
|
|
|
file(GLOB SOURCE *.cpp base/*.cpp)
|
|
|
|
# Function for building single example
|
|
function(buildExample EXAMPLE_NAME)
|
|
file(GLOB SOURCE *.cpp base/*.cpp ${EXAMPLE_NAME}/*.cpp)
|
|
if(WIN32)
|
|
add_executable(${EXAMPLE_NAME} WIN32 ${EXAMPLE_NAME}/${EXAMPLE_NAME}.cpp ${SOURCE})
|
|
target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WINLIBS})
|
|
else(WIN32)
|
|
add_executable(${EXAMPLE_NAME} ${EXAMPLE_NAME}/${EXAMPLE_NAME}.cpp ${SOURCE})
|
|
target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
|
endif(WIN32)
|
|
endfunction(buildExample)
|
|
|
|
# Build all examples
|
|
function(buildExamples)
|
|
foreach(EXAMPLE ${EXAMPLES})
|
|
buildExample(${EXAMPLE})
|
|
endforeach(EXAMPLE)
|
|
endfunction(buildExamples)
|
|
|
|
# Compiler specific stuff
|
|
IF(MSVC)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
|
ENDIF(MSVC)
|
|
|
|
IF(WIN32)
|
|
# Nothing here (yet)
|
|
ELSE(WIN32)
|
|
link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY})
|
|
ENDIF(WIN32)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")
|
|
|
|
set(EXAMPLES
|
|
bloom
|
|
computecullandlod
|
|
computenbody
|
|
computeparticles
|
|
computeshader
|
|
debugmarker
|
|
deferred
|
|
deferredmultisampling
|
|
deferredshadows
|
|
displacement
|
|
distancefieldfonts
|
|
dynamicuniformbuffer
|
|
gears
|
|
geometryshader
|
|
indirectdraw
|
|
instancing
|
|
mesh
|
|
multisampling
|
|
multithreading
|
|
occlusionquery
|
|
offscreen
|
|
parallaxmapping
|
|
particlefire
|
|
pipelines
|
|
pushconstants
|
|
radialblur
|
|
raytracing
|
|
scenerendering
|
|
screenshot
|
|
shadowmapping
|
|
shadowmappingomni
|
|
skeletalanimation
|
|
specializationconstants
|
|
sphericalenvmapping
|
|
ssao
|
|
subpasses
|
|
terraintessellation
|
|
tessellation
|
|
textoverlay
|
|
texture
|
|
texture3d
|
|
texturearray
|
|
texturecubemap
|
|
texturemipmapgen
|
|
texturesparseresidency
|
|
triangle
|
|
vulkanscene
|
|
)
|
|
|
|
buildExamples()
|