From d2047fb5570429266b540fcef697b01b57b9838b Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 30 Jun 2020 16:30:14 +0100 Subject: [PATCH] libsysprof-capture: Move autocleanup definitions to libsysprof In preparation for dropping the GLib dependency from libsysprof-capture, move the autocleanup definitions up to libsysprof. Add a new header for them. This is slightly awkward in the tools, which depend on libsysprof-capture but not libsysprof. Rather than make them depend on libsysprof (which might be disabled at configure time), include the `sysprof-capture-autocleanups.h` file between source directories. `SYSPROF_COMPILATION` needs to be defined for this to work. Signed-off-by: Philip Withnall Helps: #40 --- .../sysprof-capture-condition.h | 2 - .../sysprof-capture-cursor.h | 2 - .../sysprof-capture-reader.h | 1 - .../sysprof-capture-writer.h | 2 - src/libsysprof/meson.build | 1 + src/libsysprof/sysprof-capture-autocleanups.h | 41 +++++++++++++++++++ src/libsysprof/sysprof-local-profiler.c | 1 + src/libsysprof/sysprof-memprof-profile.c | 1 + src/libsysprof/sysprof-tracefd-source.c | 1 + src/libsysprof/sysprof.h | 1 + src/tools/list-threads.c | 2 + src/tools/meson.build | 7 ++++ src/tools/sysprof-cat.c | 1 + 13 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 src/libsysprof/sysprof-capture-autocleanups.h diff --git a/src/libsysprof-capture/sysprof-capture-condition.h b/src/libsysprof-capture/sysprof-capture-condition.h index 077b8ce3..33c356c7 100644 --- a/src/libsysprof-capture/sysprof-capture-condition.h +++ b/src/libsysprof-capture/sysprof-capture-condition.h @@ -91,6 +91,4 @@ SYSPROF_AVAILABLE_IN_ALL gboolean sysprof_capture_condition_match (const SysprofCaptureCondition *self, const SysprofCaptureFrame *frame); -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCondition, sysprof_capture_condition_unref) - G_END_DECLS diff --git a/src/libsysprof-capture/sysprof-capture-cursor.h b/src/libsysprof-capture/sysprof-capture-cursor.h index 19d4fb49..13ef791a 100644 --- a/src/libsysprof-capture/sysprof-capture-cursor.h +++ b/src/libsysprof-capture/sysprof-capture-cursor.h @@ -97,6 +97,4 @@ SYSPROF_AVAILABLE_IN_ALL void sysprof_capture_cursor_add_condition (SysprofCaptureCursor *self, SysprofCaptureCondition *condition); -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCursor, sysprof_capture_cursor_unref) - G_END_DECLS diff --git a/src/libsysprof-capture/sysprof-capture-reader.h b/src/libsysprof-capture/sysprof-capture-reader.h index 3c58524c..9c732b0a 100644 --- a/src/libsysprof-capture/sysprof-capture-reader.h +++ b/src/libsysprof-capture/sysprof-capture-reader.h @@ -147,6 +147,5 @@ gboolean sysprof_capture_reader_read_file_fd ( const gchar *path, gint fd); -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureReader, sysprof_capture_reader_unref) G_END_DECLS diff --git a/src/libsysprof-capture/sysprof-capture-writer.h b/src/libsysprof-capture/sysprof-capture-writer.h index 6e490253..409e88b4 100644 --- a/src/libsysprof-capture/sysprof-capture-writer.h +++ b/src/libsysprof-capture/sysprof-capture-writer.h @@ -249,6 +249,4 @@ gboolean _sysprof_capture_writer_set_time_range (Sy gint64 end_time) G_GNUC_INTERNAL; -G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureWriter, sysprof_capture_writer_unref) - G_END_DECLS diff --git a/src/libsysprof/meson.build b/src/libsysprof/meson.build index 6611a0dc..e2df0b8c 100644 --- a/src/libsysprof/meson.build +++ b/src/libsysprof/meson.build @@ -37,6 +37,7 @@ libsysprof_public_sources = [ libsysprof_public_headers = [ 'sysprof-battery-source.h', 'sysprof-callgraph-profile.h', + 'sysprof-capture-autocleanups.h', 'sysprof-capture-gobject.h', 'sysprof-capture-symbol-resolver.h', 'sysprof-control-source.h', diff --git a/src/libsysprof/sysprof-capture-autocleanups.h b/src/libsysprof/sysprof-capture-autocleanups.h new file mode 100644 index 00000000..d640b7ee --- /dev/null +++ b/src/libsysprof/sysprof-capture-autocleanups.h @@ -0,0 +1,41 @@ +/* sysprof-capture-gobject.h + * + * Copyright 2020 Endless Mobile, Inc. + * + * Author: + * - Philip Withnall + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#pragma once + +#if !defined (SYSPROF_INSIDE) && !defined (SYSPROF_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +#include "sysprof-capture.h" + +G_BEGIN_DECLS + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCondition, sysprof_capture_condition_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCursor, sysprof_capture_cursor_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureReader, sysprof_capture_reader_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureWriter, sysprof_capture_writer_unref) + +G_END_DECLS diff --git a/src/libsysprof/sysprof-local-profiler.c b/src/libsysprof/sysprof-local-profiler.c index 37f7e9e5..f993a8e1 100644 --- a/src/libsysprof/sysprof-local-profiler.c +++ b/src/libsysprof/sysprof-local-profiler.c @@ -34,6 +34,7 @@ #include "sysprof-local-profiler.h" #include "sysprof-platform.h" +#include "sysprof-capture-autocleanups.h" #include "sysprof-control-source.h" #include "sysprof-gjs-source.h" #include "sysprof-hostinfo-source.h" diff --git a/src/libsysprof/sysprof-memprof-profile.c b/src/libsysprof/sysprof-memprof-profile.c index a8f5c487..dca1cca1 100644 --- a/src/libsysprof/sysprof-memprof-profile.c +++ b/src/libsysprof/sysprof-memprof-profile.c @@ -24,6 +24,7 @@ #include +#include "sysprof-capture-autocleanups.h" #include "sysprof-capture-symbol-resolver.h" #include "sysprof-elf-symbol-resolver.h" #include "sysprof-kernel-symbol-resolver.h" diff --git a/src/libsysprof/sysprof-tracefd-source.c b/src/libsysprof/sysprof-tracefd-source.c index af5e90e2..a59cd1d0 100644 --- a/src/libsysprof/sysprof-tracefd-source.c +++ b/src/libsysprof/sysprof-tracefd-source.c @@ -25,6 +25,7 @@ #include #include +#include "sysprof-capture-autocleanups.h" #include "sysprof-platform.h" #include "sysprof-tracefd-source.h" diff --git a/src/libsysprof/sysprof.h b/src/libsysprof/sysprof.h index c682f2f9..c9164f72 100644 --- a/src/libsysprof/sysprof.h +++ b/src/libsysprof/sysprof.h @@ -26,6 +26,7 @@ G_BEGIN_DECLS # include "sysprof-battery-source.h" # include "sysprof-callgraph-profile.h" +# include "sysprof-capture-autocleanups.h" # include "sysprof-capture-gobject.h" # include "sysprof-capture-symbol-resolver.h" # include "sysprof-control-source.h" diff --git a/src/tools/list-threads.c b/src/tools/list-threads.c index 42bfc1db..5016c7bd 100644 --- a/src/tools/list-threads.c +++ b/src/tools/list-threads.c @@ -24,6 +24,8 @@ #include #include +#include "../libsysprof/sysprof-capture-autocleanups.h" + static gboolean foreach_cb (const SysprofCaptureFrame *frame, gpointer user_data) diff --git a/src/tools/meson.build b/src/tools/meson.build index bb6603d1..7cd69279 100644 --- a/src/tools/meson.build +++ b/src/tools/meson.build @@ -3,10 +3,13 @@ tools_deps = [ libsysprof_capture_dep, ] +tools_cflags = [ '-DSYSPROF_COMPILATION '] + if get_option('libsysprof') and host_machine.system() == 'linux' polkit_agent_dep = dependency('polkit-agent-1') sysprof_cli = executable('sysprof-cli', 'sysprof-cli.c', dependencies: tools_deps + [libsysprof_dep, polkit_dep, polkit_agent_dep], + c_args: tools_cflags, install_dir: get_option('bindir'), install: true, ) @@ -14,21 +17,25 @@ endif sysprof_cat = executable('sysprof-cat', 'sysprof-cat.c', dependencies: tools_deps, + c_args: tools_cflags, install: false, ) sysprof_dump = executable('sysprof-dump', 'sysprof-dump.c', dependencies: tools_deps, + c_args: tools_cflags, install: false, ) sysprof_profiler_ctl = executable('sysprof-profiler-ctl', [ 'sysprof-profiler-ctl.c', ipc_profiler_src ], dependencies: [ tools_deps, gio_unix_dep ], + c_args: tools_cflags, install: false, ) list_threads = executable('list-threads', ['list-threads.c'], dependencies: [ tools_deps ], + c_args: tools_cflags, install: false, ) diff --git a/src/tools/sysprof-cat.c b/src/tools/sysprof-cat.c index 5d53435a..eeca1399 100644 --- a/src/tools/sysprof-cat.c +++ b/src/tools/sysprof-cat.c @@ -29,6 +29,7 @@ #include #include +#include "../libsysprof/sysprof-capture-autocleanups.h" #include "sysprof-capture-util-private.h" gint