The tracy directory now has an experiment in getting Tracy to work. It's _not_ as easy as it is touted to be.

This commit is contained in:
Zed A. Shaw 2025-01-19 12:58:05 -05:00
parent 308fe4bed2
commit c98aa936ad
9 changed files with 400 additions and 7 deletions

61
tracy/TracyClient.cpp Normal file
View file

@ -0,0 +1,61 @@
//
// Tracy profiler
// ----------------
//
// For fast integration, compile and
// link with this source file (and none
// other) in your executable (or in the
// main DLL / shared object on multi-DLL
// projects).
//
// Define TRACY_ENABLE to enable profiler.
#include "common/TracySystem.cpp"
#ifdef TRACY_ENABLE
#ifdef _MSC_VER
# pragma warning(push, 0)
#endif
#include "common/tracy_lz4.cpp"
#include "client/TracyProfiler.cpp"
#include "client/TracyCallstack.cpp"
#include "client/TracySysPower.cpp"
#include "client/TracySysTime.cpp"
#include "client/TracySysTrace.cpp"
#include "common/TracySocket.cpp"
#include "client/tracy_rpmalloc.cpp"
#include "client/TracyDxt1.cpp"
#include "client/TracyAlloc.cpp"
#include "client/TracyOverride.cpp"
#include "client/TracyKCore.cpp"
#if defined(TRACY_HAS_CALLSTACK)
# if TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6
# include "libbacktrace/alloc.cpp"
# include "libbacktrace/dwarf.cpp"
# include "libbacktrace/fileline.cpp"
# include "libbacktrace/mmapio.cpp"
# include "libbacktrace/posix.cpp"
# include "libbacktrace/sort.cpp"
# include "libbacktrace/state.cpp"
# if TRACY_HAS_CALLSTACK == 4
# include "libbacktrace/macho.cpp"
# else
# include "libbacktrace/elf.cpp"
# endif
# include "common/TracyStackFrames.cpp"
# endif
#endif
#ifdef _MSC_VER
# pragma comment(lib, "ws2_32.lib")
# pragma comment(lib, "dbghelp.lib")
# pragma comment(lib, "advapi32.lib")
# pragma comment(lib, "user32.lib")
# pragma warning(pop)
#endif
#endif

77
tracy/meson.build Normal file
View file

@ -0,0 +1,77 @@
project('raycaster', 'cpp',
version: '0.1.0',
default_options: [
'cpp_std=c++20',
#'cpp_args=-DTRACY_ENABLE=1 -D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1',
'cpp_args=-DTRACY_ENABLE=1',
])
#exe_defaults = ['warning_level=2', 'werror=true']
exe_defaults = []
cc = meson.get_compiler('cpp')
tracy = dependency('tracy', static: true)
catch2 = dependency('catch2-with-main')
fmt = dependency('fmt', allow_fallback: true)
freetype2 = dependency('freetype2')
json = dependency('nlohmann_json')
opengl32 = cc.find_library('opengl32', required: true)
winmm = cc.find_library('winmm', required: true)
gdi32 = cc.find_library('gdi32', required: true)
ws2_32 = cc.find_library('ws2_32', required: true)
dbghelp = cc.find_library('dbghelp', required: true)
sfml_audio = dependency('sfml_audio')
sfml_graphics = dependency('sfml_graphics')
sfml_main = dependency('sfml_main')
sfml_network = dependency('sfml_network')
sfml_system = dependency('sfml_system')
sfml_window = dependency('sfml_window')
if get_option('tracy_enable') and get_option('buildtype') != 'debugoptimized'
warning('Profiling builds should set --buildtype=debugoptimized')
endif
dependencies = [
fmt, json, opengl32, freetype2,
winmm, gdi32, sfml_audio, sfml_graphics,
sfml_main, sfml_network, sfml_system,
sfml_window, ws2_32, dbghelp, tracy
]
# use this for common options only for our executables
cpp_args=[ ]
executable('runtests', [
'dbc.cpp',
'matrix.cpp',
'TracyClient.cpp',
'tests/base.cpp',
], override_options: exe_defaults,
dependencies: dependencies + [catch2])
executable('zedcaster', [
'dbc.cpp',
'matrix.cpp',
'config.cpp',
'texture.cpp',
'raycaster.cpp',
'TracyClient.cpp',
'stats.cpp',
'main.cpp'
],
cpp_args: cpp_args,
override_options: exe_defaults,
dependencies: dependencies)
executable('amtcaster', [
'dbc.cpp',
'config.cpp',
'amt/texture.cpp',
'TracyClient.cpp',
'amt/raycaster.cpp',
'amt/main.cpp'
],
cpp_args: ['-std=c++23'],
override_options: exe_defaults,
dependencies: dependencies)

1
tracy/meson.options Normal file
View file

@ -0,0 +1 @@
option('tracy_enable', type: 'boolean', value: false, description: 'Enable profiling')