Skip to content

Commit 49487f2

Browse files
committed
Quicktrace: initial commit of the tiles
Commit the initial set of quicktrace files. The license needs to be updated to be open source.
1 parent 9773dad commit 49487f2

File tree

79 files changed

+10942
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+10942
-0
lines changed

CMakeLists.txt

+264
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
# Copyright (c) 2023 Arista Networks, Inc. All rights reserved.
2+
# Arista Networks, Inc. Confidential and Proprietary.
3+
4+
cmake_minimum_required(VERSION 3.20.2)
5+
project(QuickTrace)
6+
7+
include(GNUInstallDirs)
8+
9+
set(BUILD_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/bld/include)
10+
if(NOT EXISTS ${BUILD_INCLUDE_DIR}/${CMAKE_PROJECT_NAME})
11+
file(MAKE_DIRECTORY ${BUILD_INCLUDE_DIR}/${CMAKE_PROJECT_NAME})
12+
endif()
13+
14+
set(
15+
INCLUDE_DIRS
16+
${PROJECT_SOURCE_DIR}
17+
${PROJECT_SOURCE_DIR}/test
18+
${BUILD_INCLUDE_DIR}
19+
)
20+
include_directories(${INCLUDE_DIRS})
21+
22+
find_package(PythonInterp 3.9 REQUIRED)
23+
find_package(PythonLibs 3.9 REQUIRED)
24+
25+
#------------------------------------------------------------------------------------
26+
# LIBRARIES
27+
#------------------------------------------------------------------------------------
28+
29+
# NOTE: Prior to building QuickTrace, we copy all relevant headers to
30+
# ./bld/include/QuickTrace so that all source files can easily find any included
31+
# headers which may be in the form of #include <QuickTrace/...>
32+
33+
#------------------------------------------------------------------------------------
34+
# QuickTrace
35+
36+
set(
37+
QUICKTRACE_HEADERS
38+
${CMAKE_SOURCE_DIR}/Qtc.h
39+
${CMAKE_SOURCE_DIR}/QtcDecl.h
40+
${CMAKE_SOURCE_DIR}/QuickTrace.h
41+
${CMAKE_SOURCE_DIR}/QuickTraceCommon.h
42+
${CMAKE_SOURCE_DIR}/QuickTraceFormatString.h
43+
${CMAKE_SOURCE_DIR}/QuickTraceOptFormatter.h
44+
${CMAKE_SOURCE_DIR}/Registration.h
45+
${CMAKE_SOURCE_DIR}/QtFmtGeneric.h
46+
${CMAKE_SOURCE_DIR}/WallClockQt.h
47+
${CMAKE_SOURCE_DIR}/QuickTraceRingBuf.h
48+
)
49+
set(
50+
QUICKTRACE_SOURCES
51+
${CMAKE_SOURCE_DIR}/QuickTrace.cpp
52+
${CMAKE_SOURCE_DIR}/Qtc.cpp
53+
${CMAKE_SOURCE_DIR}/Registration.cpp
54+
${CMAKE_SOURCE_DIR}/QtFmtGeneric.cpp
55+
)
56+
file(
57+
COPY
58+
${QUICKTRACE_HEADERS}
59+
DESTINATION
60+
${BUILD_INCLUDE_DIR}/${CMAKE_PROJECT_NAME}
61+
)
62+
63+
add_library(QuickTrace SHARED)
64+
target_sources(
65+
QuickTrace
66+
PRIVATE
67+
${QUICKTRACE_SOURCES}
68+
${QUICKTRACE_HEADERS}
69+
)
70+
set_property(
71+
TARGET
72+
QuickTrace
73+
PROPERTY
74+
PUBLIC_HEADER ${QUICKTRACE_HEADERS}
75+
)
76+
target_link_libraries(
77+
QuickTrace
78+
PRIVATE
79+
rt
80+
dl
81+
pthread
82+
)
83+
install(
84+
TARGETS
85+
QuickTrace
86+
LIBRARY
87+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
88+
PUBLIC_HEADER
89+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
90+
)
91+
92+
#------------------------------------------------------------------------------------
93+
# MessageFormatter
94+
95+
set(
96+
MESSAGE_FORMATTER_HEADERS
97+
${CMAKE_SOURCE_DIR}/MessageFormatter.h
98+
${CMAKE_SOURCE_DIR}/MessageFormatterCommon.h
99+
)
100+
set(
101+
MESSAGE_FORMATTER_SOURCES
102+
${CMAKE_SOURCE_DIR}/MessageFormatter.cpp
103+
)
104+
file(
105+
COPY
106+
${MESSAGE_FORMATTER_HEADERS}
107+
DESTINATION
108+
${BUILD_INCLUDE_DIR}/${CMAKE_PROJECT_NAME}
109+
)
110+
111+
add_library(MessageFormatter SHARED)
112+
target_sources(
113+
MessageFormatter
114+
PRIVATE
115+
${MESSAGE_FORMATTER_SOURCES}
116+
${MESSAGE_FORMATTER_HEADERS}
117+
)
118+
set_property(
119+
TARGET
120+
MessageFormatter
121+
PROPERTY
122+
PUBLIC_HEADER ${MESSAGE_FORMATTER_HEADERS}
123+
)
124+
target_link_libraries(
125+
MessageFormatter
126+
PRIVATE
127+
rt
128+
dl
129+
pthread
130+
)
131+
install(
132+
TARGETS
133+
MessageFormatter
134+
LIBRARY
135+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
136+
PUBLIC_HEADER
137+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
138+
)
139+
140+
#------------------------------------------------------------------------------------
141+
# PYTHON EXTENSION MODULES
142+
#------------------------------------------------------------------------------------
143+
144+
add_library(QuickTracePy SHARED)
145+
target_sources(
146+
QuickTracePy
147+
PRIVATE
148+
${CMAKE_SOURCE_DIR}/_QuickTrace.cpp
149+
)
150+
target_include_directories(
151+
QuickTracePy
152+
PRIVATE
153+
${PYTHON_INCLUDE_DIRS}
154+
)
155+
target_link_libraries(
156+
QuickTracePy
157+
PRIVATE
158+
${PYTHON_LIBRARIES}
159+
pthread
160+
QuickTrace
161+
)
162+
163+
#------------------------------------------------------------------------------------
164+
# BINARIES
165+
#------------------------------------------------------------------------------------
166+
167+
set(
168+
MESSAGE_PARSER_SOURCES
169+
${CMAKE_SOURCE_DIR}/MessageParser.cpp
170+
)
171+
set(
172+
MESSAGE_PARSER_HEADERS
173+
${CMAKE_SOURCE_DIR}/MessageParser.h
174+
)
175+
file(
176+
COPY
177+
${MESSAGE_PARSER_HEADERS}
178+
DESTINATION
179+
${BUILD_INCLUDE_DIR}/${CMAKE_PROJECT_NAME}
180+
)
181+
182+
#------------------------------------------------------------------------------------
183+
# qtclear
184+
185+
add_executable(
186+
qtclear
187+
qtclear.cpp
188+
)
189+
install(
190+
TARGETS
191+
qtclear
192+
RUNTIME
193+
DESTINATION ${CMAKE_INSTALL_BINDIR}
194+
)
195+
196+
#------------------------------------------------------------------------------------
197+
# qtctl
198+
199+
add_executable(
200+
qtctl
201+
qtctl.cpp
202+
${MESSAGE_PARSER_SOURCES}
203+
${MESSAGE_PARSER_HEADERS}
204+
)
205+
target_link_libraries(
206+
qtctl
207+
PRIVATE
208+
pcrecpp
209+
)
210+
install(
211+
TARGETS
212+
qtctl
213+
RUNTIME
214+
DESTINATION ${CMAKE_INSTALL_BINDIR}
215+
)
216+
217+
#------------------------------------------------------------------------------------
218+
# qttail
219+
220+
add_executable(
221+
qttail
222+
qttail.cpp
223+
${MESSAGE_PARSER_SOURCES}
224+
${MESSAGE_PARSER_HEADERS}
225+
)
226+
set_target_properties(
227+
qttail
228+
PROPERTIES
229+
PUBLIC_HEADER ${MESSAGE_PARSER_HEADERS}
230+
COMPILE_FLAGS "-fomit-frame-pointer"
231+
)
232+
target_link_libraries(
233+
qttail
234+
PRIVATE
235+
dl
236+
MessageFormatter
237+
)
238+
install(
239+
TARGETS
240+
qttail
241+
RUNTIME
242+
DESTINATION ${CMAKE_INSTALL_BINDIR}
243+
PUBLIC_HEADER
244+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
245+
)
246+
247+
#------------------------------------------------------------------------------------
248+
# SCRIPTS
249+
#------------------------------------------------------------------------------------
250+
251+
#------------------------------------------------------------------------------------
252+
# qtpkt
253+
254+
install(
255+
PROGRAMS
256+
qtpkt
257+
DESTINATION
258+
${CMAKE_INSTALL_BINDIR}
259+
)
260+
261+
if(DEFINED BUILD_TEST)
262+
enable_testing()
263+
add_subdirectory(test)
264+
endif()

CMakePresets.json

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
{
2+
"version": 2,
3+
"cmakeMinimumRequired": {
4+
"major": 3,
5+
"minor": 20,
6+
"patch": 2
7+
},
8+
"configurePresets": [
9+
{
10+
"name": "c-cpp-std",
11+
"description": "Default C/C++ standard and compiler used to build QuickTrace",
12+
"hidden": true,
13+
"cacheVariables": {
14+
"CMAKE_C_COMPILER": "gcc",
15+
"CMAKE_CXX_EXTENSIONS": "OFF",
16+
"CMAKE_CXX_STANDARD": "17",
17+
"CMAKE_CXX_STANDARD_REQUIRED": "ON"
18+
}
19+
},
20+
{
21+
"name": "flags",
22+
"description": "Default flags used to build QuickTrace",
23+
"hidden": true,
24+
"cacheVariables": {
25+
"CMAKE_C_FLAGS": "-Wextra -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-but-set-variable",
26+
"CMAKE_CXX_FLAGS": "-Wextra -Wall -Werror -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-but-set-variable",
27+
"CMAKE_EXE_LINKER_FLAGS": "-Wl,--no-undefined"
28+
}
29+
},
30+
{
31+
"name": "base",
32+
"description": "Base build config for QuickTrace",
33+
"hidden": true,
34+
"inherits": ["c-cpp-std", "flags"],
35+
"generator": "Ninja",
36+
"binaryDir": "${sourceDir}/bld"
37+
},
38+
{
39+
"name": "default",
40+
"description": "Default build config",
41+
"inherits": "base",
42+
"cacheVariables": {
43+
"CMAKE_BUILD_TYPE": "Debug",
44+
"CMAKE_C_FLAGS_DEBUG": "-O0 -g",
45+
"CMAKE_CXX_FLAGS_DEBUG": "-O0 -g",
46+
"CMAKE_RUNTIME_OUTPUT_DIRECTORY": "${sourceDir}/bld/bin",
47+
"CMAKE_LIBRARY_OUTPUT_DIRECTORY": "${sourceDir}/bld/lib"
48+
}
49+
},
50+
{
51+
"name": "test",
52+
"description": "Test build config to run all unit tests in QuickTrace",
53+
"inherits": "default",
54+
"cacheVariables": {
55+
"BUILD_TEST": true
56+
},
57+
"environment": {
58+
"PATH": ".:${sourceDir}/bld/bin:${sourceDir}/test:$penv{PATH}",
59+
"PYTHONPATH": ".:${sourceDir}/bld/lib:$penv{PYTHONPATH}",
60+
"LD_LIBRARY_PATH": "${sourceDir}/bld/lib:$penv{LD_LIBRARY_PATH}"
61+
}
62+
},
63+
{
64+
"name": "release",
65+
"description": "Release build config",
66+
"inherits": "base",
67+
"cacheVariables": {
68+
"CMAKE_BUILD_TYPE": "Release",
69+
"CMAKE_C_FLAGS_RELEASE": "-O2",
70+
"CMAKE_CXX_FLAGS_RELEASE": "-O2",
71+
"CMAKE_RUNTIME_OUTPUT_DIRECTORY": "${sourceDir}/bld/bin",
72+
"CMAKE_LIBRARY_OUTPUT_DIRECTORY": "${sourceDir}/bld/lib"
73+
}
74+
}
75+
],
76+
"buildPresets": [
77+
{
78+
"name": "default",
79+
"configurePreset": "default",
80+
"jobs": 5
81+
},
82+
{
83+
"name": "test",
84+
"configurePreset": "test",
85+
"jobs": 5
86+
},
87+
{
88+
"name": "release",
89+
"configurePreset": "release",
90+
"jobs": 5
91+
}
92+
],
93+
"testPresets": [
94+
{
95+
"name": "test",
96+
"configurePreset": "test",
97+
"output": {
98+
"outputOnFailure": true
99+
},
100+
"execution": {
101+
"noTestsAction": "error",
102+
"jobs": 5
103+
}
104+
}
105+
]
106+
}

0 commit comments

Comments
 (0)