diff --git a/meson.build b/meson.build
index 79b32ad8d4eefd1794e0aa1760913f40cd285643..db4e6ed98636c184612a58b206ee65241c17ab70 100644
--- a/meson.build
+++ b/meson.build
@@ -155,6 +155,14 @@ else
     conf.set('ENABLE_PLUGIN', false)
 endif
 
+if get_option('tracepoints')
+    conf.set('ENABLE_TRACEPOINTS', true)
+    deplttngust = dependency('lttng-ust', version: '>= 2.13')
+    #depliburcu = dependency('liburcu', version: '>= 0.13.1')
+else
+    conf.set('ENABLE_TRACEPOINTS', false)
+endif
+
 conf.set10('HAVE_COREAUDIO', host_machine.system() == 'darwin')
 conf.set('ENABLE_SHM', get_option('interfaces').contains('dbus'))
 configure_file(
diff --git a/meson_options.txt b/meson_options.txt
index bf14e29e494ef88c442fa885dca922ad0be3eaac..e50af897038a06d33c9c8e85603c8f8a4daafdf2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -15,3 +15,4 @@ option('aec', type: 'feature', value: 'auto', description: 'Enable Acoustic Echo
 
 option('natpmp_prefix', type: 'string', value: '', description: 'Override a system directory to search for the library "natpmp"')
 option('tests', type: 'boolean', value: false, description: 'Build tests')
+option('tracepoints', type: 'boolean', value: false, description: 'Enable tracepoints')
diff --git a/src/meson.build b/src/meson.build
index cf242a9ac75d2dc78d333c30c2f14f486bcf048d..a9c22749772733524ac91393426356498dfafbfa 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -47,14 +47,14 @@ libjami_sources = files(
     'media/audio/sound/dtmfgenerator.cpp',
     'media/audio/sound/tone.cpp',
     'media/audio/sound/tonelist.cpp',
-    'media/audio/audiobuffer.cpp',
     'media/audio/audio_frame_resizer.cpp',
     'media/audio/audio_input.cpp',
-    'media/audio/audiolayer.cpp',
-    'media/audio/audioloop.cpp',
     'media/audio/audio_receive_thread.cpp',
     'media/audio/audio_rtp_session.cpp',
     'media/audio/audio_sender.cpp',
+    'media/audio/audiobuffer.cpp',
+    'media/audio/audiolayer.cpp',
+    'media/audio/audioloop.cpp',
     'media/audio/dcblocker.cpp',
     'media/audio/dsp.cpp',
     'media/audio/resampler.cpp',
@@ -293,15 +293,15 @@ endif
 if conf.get('ENABLE_PLUGIN')
     libjami_sources += files(
         'client/plugin_manager_interface.cpp',
-        'plugin/preferenceservicesmanager.cpp',
         'plugin/callservicesmanager.cpp',
         'plugin/chatservicesmanager.cpp',
-        'plugin/webviewservicesmanager.cpp',
         'plugin/jamipluginmanager.cpp',
         'plugin/pluginloader.cpp',
         'plugin/pluginmanager.cpp',
         'plugin/pluginpreferencesutils.cpp',
-        'plugin/pluginsutils.cpp'
+        'plugin/pluginsutils.cpp',
+        'plugin/preferenceservicesmanager.cpp',
+        'plugin/webviewservicesmanager.cpp'
     )
     if host_machine.system() == 'darwin'
         libjami_dependencies += depminizip
@@ -311,6 +311,13 @@ if conf.get('ENABLE_PLUGIN')
     libjami_dependencies += depdl
 endif
 
+if conf.get('ENABLE_TRACEPOINTS')
+    libjami_sources += files(
+        'jami/tracepoint.c'
+    )
+    libjami_dependencies += deplttngust
+endif
+
 # https://ffmpeg.org/platform.html#Advanced-linking-configuration
 libjami_linkargs = meson.get_compiler('cpp').get_supported_link_arguments(
     '-Wl,-Bsymbolic'
@@ -348,6 +355,7 @@ if get_option('interfaces').contains('library')
         'jami/presence_const.h',
         'jami/presencemanager_interface.h',
         'jami/security_const.h',
+        'jami/trace-tools.h',
         subdir: 'jami'
     )
     if conf.get('ENABLE_VIDEO')