blob: b7ccaba1234992e23668d9430aa3d423cad85cf2 [file] [log] [blame]
cmake_minimum_required(VERSION 2.8)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (BUILD_WSI_XCB_SUPPORT)
set(ENV{VULKAN_WSI} "Xcb")
elseif (BUILD_WSI_XLIB_SUPPORT)
set(ENV{VULKAN_WSI} "Xlib")
elseif (BUILD_WSI_WAYLAND_SUPPORT)
set(ENV{VULKAN_WSI} "Wayland")
else()
# Mir WSI Case
set(ENV{VULKAN_WSI} "Mir")
endif()
endif()
project(VkLayer_vktrace_layer)
include("${SRC_DIR}/build_options.cmake")
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/codegen)
execute_process(COMMAND ${PYTHON_EXECUTABLE} ${VKTRACE_VULKAN_DIR}/vktrace_generate.py AllPlatforms vktrace-trace-h vk_version_1_0 OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/codegen/vktrace_vk_vk.h)
execute_process(COMMAND ${PYTHON_EXECUTABLE} ${VKTRACE_VULKAN_DIR}/vktrace_generate.py AllPlatforms vktrace-trace-c vk_version_1_0 OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/codegen/vktrace_vk_vk.cpp)
#execute_process(COMMAND ${PYTHON_EXECUTABLE} ${VKTRACE_VULKAN_DIR}/vktrace_generate.py AllPlatforms vktrace-ext-trace-h vk_lunarg_debug_marker OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/codegen/vktrace_vk_vk_lunarg_debug_marker.h)
#execute_process(COMMAND ${PYTHON_EXECUTABLE} ${VKTRACE_VULKAN_DIR}/vktrace_generate.py AllPlatforms vktrace-ext-trace-c vk_lunarg_debug_marker OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/codegen/vktrace_vk_vk_lunarg_debug_marker.cpp)
if (WIN32)
# Put VkLayer_vktrace_layer.dll in the same directory as vktrace.exe
# so that vktrace.exe can find VkLayer_vktrace_layer.dll.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../../layersvt/)
endif()
set (CODEGEN_UTILS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../vktrace_extensions/vktracevulkan/vulkan/codegen_utils)
set(CODEGEN_VKTRACE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../vktrace_extensions/vktracevulkan/codegen_vktrace_utils")
set(SRC_LIST
${SRC_LIST}
vktrace_lib.c
vktrace_lib_pagestatusarray.cpp
vktrace_lib_pageguardmappedmemory.cpp
vktrace_lib_pageguardcapture.cpp
vktrace_lib_pageguard.cpp
vktrace_lib_trace.cpp
vktrace_vk_exts.cpp
codegen/vktrace_vk_vk.cpp
${CODEGEN_UTILS_DIR}/vk_struct_size_helper.c
)
# codegen/vktrace_vk_vk_lunarg_debug_marker.cpp
# ${CODEGEN_UTILS_DIR}/vk_lunarg_debug_marker_struct_size_helper.c
set_source_files_properties( ${SRC_LIST} PROPERTIES LANGUAGE CXX)
set (HDR_LIST
vktrace_lib_helpers.h
vktrace_lib_pagestatusarray.h
vktrace_lib_pageguardmappedmemory.h
vktrace_lib_pageguardcapture.h
vktrace_lib_pageguard.h
vktrace_vk_exts.h
vk_dispatch_table_helper.h
codegen/vktrace_vk_vk.h
${CODEGEN_VKTRACE_DIR}/vktrace_vk_packet_id.h
${CODEGEN_VKTRACE_DIR}/vktrace_vk_vk_packets.h
${CODEGEN_UTILS_DIR}/vk_struct_size_helper.h
)
# def file - needed for Windows 32-bit so that vk functions names aren't mangled
if (WIN32)
if (NOT(CMAKE_GENERATOR MATCHES "Win64"))
set (HDR_LIST ${HDR_LIST} VkLayer_vktrace_layer.def)
endif()
endif()
# codegen/vktrace_vk_vk_lunarg_debug_marker.h
# ${CODEGEN_VKTRACE_DIR}/vktrace_vk_vk_lunarg_debug_marker_packets.h
# ${CODEGEN_UTILS_DIR}/vk_lunarg_debug_marker_struct_size_helper.h
macro(run_vk_xml_generate dependency output)
add_custom_command(OUTPUT ${output}
COMMAND ${PYTHON_CMD} ${SCRIPTS_DIR}/lvl_genvk.py -registry ${SCRIPTS_DIR}/vk.xml ${output}
DEPENDS ${SCRIPTS_DIR}/vk.xml ${SCRIPTS_DIR}/generator.py ${SCRIPTS_DIR}/${dependency} ${SCRIPTS_DIR}/lvl_genvk.py ${SCRIPTS_DIR}/reg.py
)
endmacro()
run_vk_xml_generate(dispatch_table_generator.py vk_dispatch_table_helper.h)
add_custom_target(generate_vktrace_layer_helpers DEPENDS
vk_dispatch_table_helper.h)
include_directories(
codegen
${SRC_DIR}/vktrace_common
${SRC_DIR}/vktrace_trace
${CMAKE_CURRENT_SOURCE_DIR}
${CODEGEN_VKTRACE_DIR}
${VKTRACE_VULKAN_INCLUDE_DIR}
${CODEGEN_UTILS_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../../../layersvt
)
# copy/link layer json file into build/layersvt directory
if (NOT WIN32)
# extra setup for out-of-tree builds
if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
add_custom_target(vktrace_layer-json ALL
COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/linux/VkLayer_vktrace_layer.json ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}../layersvt/
VERBATIM
)
endif()
else()
if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR))
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/windows/VkLayer_vktrace_layer.json src_json)
if (CMAKE_GENERATOR MATCHES "^Visual Studio.*")
FILE(TO_NATIVE_PATH ${PROJECT_BINARY_DIR}/../../../layersvt/$<CONFIGURATION>/VkLayer_vktrace_layer.json dst_json)
else()
FILE(TO_NATIVE_PATH ${PROJECT_BINARY_DIR}/../../../layersvt/VkLayer_vktrace_layer.json dst_json)
endif()
add_custom_target(vktrace_layer-json ALL
COMMAND copy ${src_json} ${dst_json}
VERBATIM
)
add_dependencies(vktrace_layer-json VkLayer_vktrace_layer)
endif()
endif()
add_library(${PROJECT_NAME} SHARED ${SRC_LIST} ${HDR_LIST})
add_dependencies(${PROJECT_NAME} generate_vktrace_layer_helpers)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(OS_TRACER_LIBS
-shared
-ldl
)
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set(OS_TRACER_LIBS)
endif()
target_link_libraries(${PROJECT_NAME}
vktrace_common
${VKTRACE_VULKAN_LIB}
${OS_TRACER_LIBS}
)
build_options_finalize()
set_target_properties(VkLayer_vktrace_layer PROPERTIES LINKER_LANGUAGE C)