blob: ddd6a22c298b61640324eb4cc9db9462d2e302f2 [file] [log] [blame]
PROJECT(vktrace_project)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN)
set(DisplayServer Win32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (BUILD_WSI_XCB_SUPPORT)
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
endif()
if (BUILD_WSI_XLIB_SUPPORT)
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
endif()
if (BUILD_WSI_WAYLAND_SUPPORT)
# TODO Add Wayland Support
# add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
endif()
if (BUILD_WSI_MIR_SUPPORT)
# TODO Add Mir Support
# add_definitions(-DVK_USE_PLATFORM_MIR_KHR)
# include_directories(${MIR_INCLUDE_DIR})
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# Only vktrace is supported on macOS
else()
message(FATAL_ERROR "Unsupported Platform!")
endif()
option(BUILD_VKTRACEVIEWER "Build VkTraceViewer" ON)
if (BUILD_VKTRACEVIEWER)
# We need CMake version 3.0+ in order to "find_package(Qt5)":
cmake_minimum_required(VERSION 3.0)
else ()
cmake_minimum_required(VERSION 2.8.11)
endif()
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
#set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${SRC_DIR}/cmake/Modules/")
#set(CMAKE_EXTERNAL_PATH "${SRC_DIR}/../../external")
if (WIN32)
# TODO: s/CMAKE_PREFIX_PATH/CMAKE_EXTERNAL_WINDOWS_PATH/g
# set(CMAKE_PREFIX_PATH "${CMAKE_EXTERNAL_PATH}/windows")
set(WIN32_PTHREADS_PATH "${SRC_DIR}/thirdparty/pthreads.2")
set(WIN32_PTHREADS_INCLUDE_PATH "${WIN32_PTHREADS_PATH}/include")
endif()
set(PYTHON_EXECUTABLE ${PYTHON_CMD})
find_package(PythonInterp)
if (NOT PYTHONINTERP_FOUND)
message(FATAL_ERROR "Missing PythonInterp. Install python interpreter 2.7 (on linux use cmd: sudo apt-get install python2.7)")
endif()
#search for QT only if BUILD_VKTRACEVIEWER is ON
if(BUILD_VKTRACEVIEWER)
find_package(Qt5 COMPONENTS Widgets Gui Core Svg)
if (NOT Qt5_FOUND)
if (WIN32)
message(WARNING "Qt5 dev libraries not found, vktraceviewer will not be built.\nTo enable build of vktraceviewer, set env var Qt5_Dir to\nC:\\Qt\\5.3\\msvc2013_64\\lib\\cmake\\Qt5 or C:\\Qt\\5.3\\msvc2013\\lib\\cmake\\Qt5")
else()
message(WARNING "Qt5 dev libraries not found, vktraceviewer will not be built.\nTo enable build of vktraceviewer, install package qt5-default.")
endif()
endif()
endif()
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../include/vulkan
)
message("")
message("cmake options:")
message(" -DCMAKE_BUILD_TYPE='${CMAKE_BUILD_TYPE}': Build debug or release. (Debug|Release)")
message(" -DCMAKE_VERBOSE='${CMAKE_VERBOSE}': Spew cmake project options. (On|Off)")
message(" -DBUILD_X64='${BUILD_X64}': Build 32 or 64-bit. (On|Off)")
message("")
#
# Components to build
#
set(VKTRACE_VULKAN_DIR ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(src/vktrace_common)
add_subdirectory(src/vktrace_trace)
option(BUILD_VKTRACE_LAYER "Build vktrace_layer" ON)
if(BUILD_VKTRACE_LAYER)
add_subdirectory(src/vktrace_layer)
endif()
option(BUILD_VKTRACE_REPLAY "Build vktrace_replay" ON)
if(BUILD_VKTRACE_REPLAY)
add_subdirectory(src/vktrace_replay)
endif()
# Only build vktraceviewer if Qt5 is available
if (Qt5_FOUND AND BUILD_VKTRACEVIEWER)
add_subdirectory(src/vktrace_viewer)
endif()
# use macro from stackoverflow (link below) to get all the extensions that are on the current system
# http://stackoverflow.com/questions/7787823/cmake-how-to-get-the-name-of-all-subdirectories-of-a-directory
MACRO(SUBDIRLIST result curdir)
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
SET(dirlist "")
FOREACH(child ${children})
IF(IS_DIRECTORY ${curdir}/${child})
LIST(APPEND dirlist ${child})
ENDIF()
ENDFOREACH()
SET(${result} ${dirlist})
ENDMACRO()
# now generate the list and add each of the subdirectories
SUBDIRLIST(SUBDIRS ${SRC_DIR}/vktrace_extensions)
message("Adding extensions: '${SUBDIRS}'")
FOREACH(subdir ${SUBDIRS})
add_subdirectory(${SRC_DIR}/vktrace_extensions/${subdir})
ENDFOREACH()