1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
# CMake will throw a cryptic message if an user unwittingly invokes it from
# this directory.
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
message (FATAL_ERROR
"qapitrace must be built from the top source directory.\n"
"Read docs/INSTALL.markdown for detailed build instructions."
)
endif ()
add_definitions (-DQT_FORCE_ASSERTS)
add_library (qubjson STATIC
qubjson.cpp
)
add_gtest (qubjson_test qubjson_test.cpp)
target_link_libraries (qubjson_test qubjson)
set(qapitrace_SRCS
androiddevicedialog.cpp
androidfiledialog.cpp
androidretracer.cpp
androidutils.cpp
apisurface.cpp
apitrace.cpp
apicalldelegate.cpp
apitracecall.cpp
apitracefilter.cpp
apitracemodel.cpp
argumentseditor.cpp
glsledit.cpp
imageviewer.cpp
jumpwidget.cpp
mainwindow.cpp
main.cpp
pixelwidget.cpp
profiledialog.cpp
profiletablemodel.cpp
retracer.cpp
saverthread.cpp
searchwidget.cpp
settingsdialog.cpp
shaderssourcewidget.cpp
tracedialog.cpp
traceloader.cpp
traceprocess.cpp
trimprocess.cpp
vertexdatainterpreter.cpp
leaktracethread.cpp
graphing/frameaxiswidget.cpp
graphing/graphwidget.cpp
graphing/graphaxiswidget.cpp
graphing/graphview.cpp
graphing/heatmapview.cpp
graphing/heatmapverticalaxiswidget.cpp
graphing/histogramview.cpp
graphing/timeaxiswidget.cpp
)
qt5_add_resources(qapitrace_SRCS qapitrace.qrc)
set(qapitrace_UIS
ui/androidfiledialog.ui
ui/androiddevicedialog.ui
ui/argumentseditor.ui
ui/imageviewer.ui
ui/jumpwidget.ui
ui/mainwindow.ui
ui/profiledialog.ui
ui/profilereplaydialog.ui
ui/retracerdialog.ui
ui/settings.ui
ui/tracedialog.ui
ui/searchwidget.ui
ui/shaderssourcewidget.ui
)
set (CMAKE_AUTOMOC ON)
# Silence `Note: No relevant classes found. No output generated.`
#set (CMAKE_AUTOMOC_MOC_OPTIONS "-mn")
QT5_WRAP_UI(qapitrace_UIS_H ${qapitrace_UIS})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#add_app_icon(qapitrace_SRCS ../icons/hi*-qapitrace.png)
include_directories (
${CMAKE_SOURCE_DIR}/lib/image
${CMAKE_SOURCE_DIR}/lib/ubjson
)
add_executable (qapitrace ${qapitrace_SRCS} ${qapitrace_UIS_H})
# Avoid qt5_use_modules. See also:
# - https://bugreports.qt.io/browse/QTBUG-39457
# - http://doc.qt.io/qt-5/cmake-manual.html
# - http://www.kdab.com/using-cmake-with-qt-5/
if (Qt5Core_VERSION_STRING VERSION_LESS 5.2.0)
qt5_use_modules (qubjson Widgets)
qt5_use_modules (qubjson_test Widgets)
qt5_use_modules (qapitrace Widgets Network)
else ()
target_link_libraries (qubjson Qt5::Widgets)
target_link_libraries (qubjson_test Qt5::Widgets)
target_link_libraries (qapitrace Qt5::Widgets Qt5::Network)
endif ()
target_link_libraries (qapitrace
qubjson
image
common
${ZLIB_LIBRARIES}
${SNAPPY_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
)
if (WIN32 AND NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))
# Use Windows subsystem (i.e., no console).
set_target_properties (qapitrace PROPERTIES CMAKE_WIN32_EXECUTABLE TRUE)
if (MSVC)
# When the Windows subsystem is chosen by default MSVC expects WinMain()
# entry point, but we rather use plain old main() everywhere.
set_target_properties (qapitrace PROPERTIES LINK_FLAGS "/ENTRY:mainCRTStartup")
endif ()
endif ()
########### install files ###############
install (TARGETS qapitrace RUNTIME DESTINATION bin)
install_pdb (qapitrace RUNTIME DESTINATION bin)
#install (FILES qapitrace.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
# Deployt Qt dependencies
#
# See:
# - http://doc.qt.io/qt-5/windows-deployment.html
#
# XXX: windeployqt can fail if there's weird stuff in the Path env var, so we
# invoke it with a sanitized Path, via `cmake -E env` that was introduced in
# CMake 3.1.
if (WIN32 AND NOT CMAKE_CROSSCOMPILING AND NOT CMAKE_VERSION VERSION_LESS 3.1)
# http://stackoverflow.com/a/24676432
get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
get_filename_component (QT_BIN_DIR "${QT_QMAKE_EXECUTABLE}" DIRECTORY)
find_program (QT_WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${QT_BIN_DIR}")
if (QT_WINDEPLOYQT_EXECUTABLE)
file (TO_NATIVE_PATH "${QT_BIN_DIR}" QT_BIN_DIR_NATIVE)
# It's safer to use `\` separateors in the Path, but we need to escape them
string (REPLACE "\\" "\\\\" QT_BIN_DIR_NATIVE "${QT_BIN_DIR_NATIVE}")
# windeployqt needs VCINSTALLDIR to copy MSVC Runtime files, but it's
# usually not define with MSBuild builds.
if ($ENV{VCINSTALLDIR})
set (VCINSTALLDIR "$ENV{VCINSTALLDIR}")
elseif (MSVC12)
set (VCINSTALLDIR "\$ENV{VS120COMNTOOLS}/../../VC")
elseif (MSVC14)
set (VCINSTALLDIR "\$ENV{VS140COMNTOOLS}/../../VC")
else ()
message (FATAL_ERROR "Unsupported MSVC version ${MSVC_VERSION}")
endif ()
install (CODE "
message (STATUS \"Running Qt Deploy Tool...\")
if (CMAKE_INSTALL_CONFIG_NAME STREQUAL \"Debug\")
list (APPEND QT_WINDEPLOYQT_FLAGS --debug)
else ()
list (APPEND QT_WINDEPLOYQT_FLAGS --release)
endif ()
execute_process (COMMAND
\"${CMAKE_COMMAND}\" -E env
\"Path=${QT_BIN_DIR_NATIVE};\$ENV{SystemRoot}\\\\System32;\$ENV{SystemRoot}\"
\"VCINSTALLDIR=${VCINSTALLDIR}\"
\"${QT_WINDEPLOYQT_EXECUTABLE}\"
\${QT_WINDEPLOYQT_FLAGS}
\"\${CMAKE_INSTALL_PREFIX}/bin/qapitrace.exe\"
)
")
endif ()
endif ()
|