-
Notifications
You must be signed in to change notification settings - Fork 663
/
Copy pathCMakeLists.txt
160 lines (140 loc) · 5.18 KB
/
CMakeLists.txt
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
# Copyright 2021 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
cmake_minimum_required(VERSION 3.16.3)
project(IREETracyServer C CXX)
set(TRACY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/tracy")
find_package(Threads REQUIRED)
#-------------------------------------------------------------------------------
# Detect package manager
#-------------------------------------------------------------------------------
message(STATUS "Checking for Tracy dependencies...")
find_program(PKGCONFIG pkg-config)
if(NOT PKGCONFIG)
message(STATUS "Could not find pkg-config to get dependencies; you need to specify them manually or use pkg-config")
message(STATUS " Ubuntu/Debian: `apt install pkg-config`")
message(STATUS " MacOS: `brew install pkg-config`")
else()
include(FindPkgConfig)
# Deps slightly differ by platform but some are common.
pkg_check_modules(TRACY_DEPS
libzstd
)
if(NOT TRACY_DEPS_FOUND)
message(STATUS "Could not find Tracy dependencies (Tracy server will not be built).")
message(STATUS "To build Tracy, install libzstd:")
message(STATUS " Ubuntu/Debian: `apt install libzstd-dev`")
message(STATUS " MacOS: `brew install zstd`")
return()
endif()
endif()
#-------------------------------------------------------------------------------
# Source dependencies
# See https://github.com/wolfpld/tracy/blob/master/cmake/vendor.cmake
#-------------------------------------------------------------------------------
include(FetchContent)
FetchContent_Declare(
capstone
GIT_REPOSITORY https://github.com/capstone-engine/capstone.git
GIT_TAG 97db712c91e964718f9cc300e81b9cf76b31a22e # 6.0.0-Alpha1
EXCLUDE_FROM_ALL
)
set(CAPSTONE_X86_ATT_DISABLE ON CACHE BOOL "" FORCE)
set(CAPSTONE_ALPHA_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_HPPA_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_LOONGARCH_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_M680X_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_M68K_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_MIPS_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_MOS65XX_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_PPC_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_SPARC_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_SYSTEMZ_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_XCORE_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_TRICORE_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_TMS320C64X_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_M680X_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_EVM_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_WASM_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_BPF_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_RISCV_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_SH_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_XTENSA_SUPPORT OFF CACHE BOOL "" FORCE)
set(CAPSTONE_BUILD_MACOS_THIN ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(capstone)
FetchContent_Declare(
PPQSort
GIT_REPOSITORY https://github.com/GabTux/PPQSort.git
GIT_TAG 4b964020d67b435dae7ebac7b8f5ecea1f421c58 # v1.0.3
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable(PPQSort)
#-------------------------------------------------------------------------------
# Configuration
#-------------------------------------------------------------------------------
function(setup_cxx_options name)
set_target_properties(${name}
PROPERTIES
CXX_STANDARD 20
)
target_compile_options(${name}
PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wno-unused-result>
)
target_include_directories(${name}
PUBLIC
${TRACY_SOURCE_DIR}/imgui
${TRACY_DEPS_INCLUDE_DIRS}
${capstone_SOURCE_DIR}/include/capstone
)
target_link_libraries(${name}
PRIVATE
${TRACY_DEPS_LIBRARIES}
${CMAKE_DL_LIBS}
${CMAKE_THREAD_LIBS_INIT}
capstone
PPQSort
)
target_link_directories(${name}
PRIVATE
${TRACY_DEPS_LIBRARY_DIRS}
)
endfunction()
#-------------------------------------------------------------------------------
# Common library
#-------------------------------------------------------------------------------
file(GLOB COMMON_SRCS ${TRACY_SOURCE_DIR}/public/common/*.cpp)
add_library(IREETracyCommon
${COMMON_SRCS}
)
setup_cxx_options(IREETracyCommon)
#-------------------------------------------------------------------------------
# Server library
#-------------------------------------------------------------------------------
file(GLOB SERVER_SRCS ${TRACY_SOURCE_DIR}/server/*.cpp)
add_library(IREETracyServer
${SERVER_SRCS}
)
setup_cxx_options(IREETracyServer)
target_link_libraries(IREETracyServer
PRIVATE
IREETracyCommon
)
#-------------------------------------------------------------------------------
# Standalone capture server
#-------------------------------------------------------------------------------
add_executable(IREETracyCaptureServer
${TRACY_SOURCE_DIR}/capture/src/capture.cpp
)
set_target_properties(IREETracyCaptureServer
PROPERTIES
OUTPUT_NAME "iree-tracy-capture"
)
setup_cxx_options(IREETracyCaptureServer)
target_link_libraries(IREETracyCaptureServer
PRIVATE
IREETracyCommon
IREETracyServer
)