blob: dfe2a482af632b8abd06f51fcdacdd2df0ad92ca [file] [log] [blame]
project(vktraceviewer)
cmake_minimum_required(VERSION 3.0)
include("${SRC_DIR}/build_options.cmake")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${SRC_DIR}/cmake/Modules/")
# we want cmake to link the Qt libs into the binary
# This policy was introduced in 2.8.11, so on newer versions, use the OLD policy to maintain consistent behavior
if (POLICY CMP0020)
cmake_policy(SET CMP0020 OLD)
endif()
find_package(Qt5 COMPONENTS Widgets Gui Core Svg QUIET)
if(NOT Qt5_FOUND)
# After Qt5.6 is installed, you may need to add the following to the cmake command line:
# -DCMAKE_PREFIX_PATH=C:\\Qt\\5.6\\msvc2015_64\\
message(WARNING "WARNING: vktraceviewer will be excluded because Qt5 was not found.")
else()
find_package(Threads REQUIRED)
find_package(X11 REQUIRED)
require_pthreads()
include_directories(
${SRC_DIR}
${SRC_DIR}/vktrace_common
${SRC_DIR}/vktrace_replay
${SRC_DIR}/vktrace_extensions/vktracevulkan/vkreplay
${SRC_DIR}/vktrace_extensions/vktracevulkan/vktraceviewer
${SRC_DIR}/vktrace_viewer
${CMAKE_CURRENT_BINARY_DIR}
${Qt5Widgets_INCLUDE_DIRS}
)
set(SRC_LIST
main.cpp
vktraceviewer.cpp
vktraceviewer_settings.cpp
vktraceviewer_output.cpp
vktraceviewer_trace_file_utils.cpp
vktraceviewer_qgeneratetracedialog.cpp
vktraceviewer_qsettingsdialog.cpp
vktraceviewer_qtimelineview.cpp
vktraceviewer_qtracefileloader.cpp
vktraceviewer_QReplayWorker.cpp
vktraceviewer_controller_factory.cpp
${SRC_DIR}/vktrace_replay/vkreplay_seq.cpp
${SRC_DIR}/vktrace_replay/vkreplay_factory.cpp
)
# This should only contain headers that define a QOBJECT
# Typically that means just headers for UI objects
set(UI_HEADER_LIST
vktraceviewer.h
vktraceviewer_qgeneratetracedialog.h
vktraceviewer_qsettingsdialog.h
vktraceviewer_qtimelineview.h
vktraceviewer_qimageviewer.h
vktraceviewer_qsvgviewer.h
vktraceviewer_QReplayWidget.h
vktraceviewer_QReplayWorker.h
vktraceviewer_QTraceFileModel.h
vktraceviewer_qtracefileloader.h
)
# These is for all headers
set(HEADER_LIST
vktraceviewer.h
vktraceviewer_settings.h
vktraceviewer_output.h
vktraceviewer_controller.h
vktraceviewer_controller_factory.h
vktraceviewer_qgeneratetracedialog.h
vktraceviewer_qsettingsdialog.h
vktraceviewer_qtimelineview.h
vktraceviewer_qimageviewer.h
vktraceviewer_qsvgviewer.h
vktraceviewer_QReplayWidget.h
vktraceviewer_QReplayWorker.h
vktraceviewer_qtracefileloader.h
vktraceviewer_QTraceFileModel.h
vktraceviewer_trace_file_utils.h
vktraceviewer_view.h
)
set(FORM_LIST
vktraceviewer.ui
)
set(RESOURCE_LIST
)
QT5_WRAP_CPP(QT_GEN_HEADER_MOC_LIST ${UI_HEADER_LIST})
QT5_WRAP_UI(QT_GEN_FORM_HEADER_LIST ${FORM_LIST})
QT5_ADD_RESOURCES(QT_GEN_RESOURCE_RCC_LIST ${RESOURCE_LIST})
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
add_compiler_flag("-Wno-global-constructors -Wno-used-but-marked-unused")
endif()
# Platform specific compile flags.
if (NOT MSVC)
add_compiler_flag("-fPIC")
endif()
add_executable(${PROJECT_NAME} ${SRC_LIST} ${HEADER_LIST}
${QT_GEN_HEADER_MOC_LIST}
${QT_GEN_FORM_HEADER_LIST}
${QT_GEN_RESOURCE_RCC_LIST}
)
if (TARGET SDL)
add_dependencies(${PROJECT_NAME} SDL)
endif ()
add_dependencies(${PROJECT_NAME} vktraceviewer_vk)
target_link_libraries(${PROJECT_NAME}
Qt5::Widgets
Qt5::Core
Qt5::Svg
vktrace_common
vulkan_replay
vktraceviewer_vk
${CMAKE_DL_LIBS}
${X11_X11_LIB}
)
if (MSVC)
# copy the debug and release dlls for Qt5Widgets, Qt5Core, and Qt5Gui
set (COPY_DEST ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR})
get_property(qt5_qmake_executable TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORT_LOCATION)
execute_process(COMMAND ${qt5_qmake_executable} -query QT_INSTALL_PLUGINS OUTPUT_VARIABLE QT_INSTALL_PLUGINS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${qt5_qmake_executable} -query QT_INSTALL_BINS OUTPUT_VARIABLE QT_INSTALL_BINS OUTPUT_STRIP_TRAILING_WHITESPACE)
# There are also several other files that need to be copied or created
FILE(WRITE ${CMAKE_CURRENT_LIST_DIR}/qt.conf "[Paths]\nPlugins=.")
if(EXISTS "${QT_INSTALL_BINS}/icudt54.dll")
add_custom_target(copy_deps_qt5 ALL
${CMAKE_COMMAND} -E make_directory "${COPY_DEST}/platforms"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/qt.conf" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Widgets.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Widgetsd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Core.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Cored.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Gui.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Guid.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Svgd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Svg.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libGLESv2d.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libGLESv2.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libEGLd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libEGL.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_PLUGINS}/platforms/qwindows.dll" "${COPY_DEST}/platforms"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_PLUGINS}/platforms/qwindowsd.dll" "${COPY_DEST}/platforms"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/icudt54.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/icuin54.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/icuuc54.dll" "${COPY_DEST}"
COMMENT "Copying vktraceviewer Qt5 dependencies to ${COPY_DEST}"
VERBATIM)
else()
add_custom_target(copy_deps_qt5 ALL
${CMAKE_COMMAND} -E make_directory "${COPY_DEST}/platforms"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/qt.conf" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Widgets.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Widgetsd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Core.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Cored.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Gui.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Guid.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Svgd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/Qt5Svg.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libGLESv2d.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libGLESv2.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libEGLd.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_BINS}/libEGL.dll" "${COPY_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_PLUGINS}/platforms/qwindows.dll" "${COPY_DEST}/platforms"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_INSTALL_PLUGINS}/platforms/qwindowsd.dll" "${COPY_DEST}/platforms"
COMMENT "Copying vktraceviewer Qt5 dependencies to ${COPY_DEST}"
VERBATIM)
endif()
endif()
build_options_finalize()
endif(NOT Qt5_FOUND)