mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
build: split profiler and gtk widgets into separate libraries
This will make it easier to support installing just sysprof-cli and the sysprofd helper daemon on systems where GTK is not feasible or necessary. This does not, however, do that. It simply gets things broken up into pieces.
This commit is contained in:
16
configure.ac
16
configure.ac
@ -82,12 +82,15 @@ VAPIGEN_CHECK
|
||||
dnl ***********************************************************************
|
||||
dnl Check for required packages
|
||||
dnl ***********************************************************************
|
||||
PKG_CHECK_MODULES(SYSPROF, [gio-2.0 >= 2.44
|
||||
gtk+-3.0 >= 3.16
|
||||
polkit-gobject-1])
|
||||
PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 222],
|
||||
[have_systemd=yes],
|
||||
[have_systemd=no])
|
||||
PKG_CHECK_MODULES(SYSPROF, [gio-2.0 >= 2.44
|
||||
gio-unix-2.0 >= 2.44
|
||||
polkit-gobject-1])
|
||||
PKG_CHECK_MODULES(SYSPROF_UI, [gio-2.0 >= 2.44
|
||||
gtk+-3.0 >= 3.16
|
||||
polkit-gobject-1])
|
||||
PKG_CHECK_MODULES(SYSTEMD, [libsystemd >= 222],
|
||||
[have_systemd=yes],
|
||||
[have_systemd=no])
|
||||
|
||||
|
||||
# we require systemd for sysprofd
|
||||
@ -163,6 +166,7 @@ AC_CONFIG_FILES([
|
||||
data/Makefile
|
||||
data/icons/Makefile
|
||||
data/sysprof-$API_VERSION.pc:data/sysprof.pc.in
|
||||
data/sysprof-ui-$API_VERSION.pc:data/sysprof-ui.pc.in
|
||||
data/org.gnome.Sysprof2.conf
|
||||
data/org.gnome.sysprof2.policy
|
||||
|
||||
|
||||
@ -7,7 +7,9 @@ desktopdir = $(datadir)/applications
|
||||
desktop_DATA = org.gnome.Sysprof2.desktop
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = sysprof-$(API_VERSION).pc
|
||||
pkgconfig_DATA = \
|
||||
sysprof-$(API_VERSION).pc \
|
||||
sysprof-ui-$(API_VERSION).pc
|
||||
|
||||
gsettings_SCHEMAS = org.gnome.sysprof2.gschema.xml
|
||||
|
||||
|
||||
11
data/sysprof-ui.pc.in
Normal file
11
data/sysprof-ui.pc.in
Normal file
@ -0,0 +1,11 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
includedir=${exec_prefix}/include
|
||||
|
||||
Name: libsysprof-ui-@API_VERSION@
|
||||
Description: The sysprof library containing reusable GTK widgets
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lsysprof-ui-@API_VERSION@
|
||||
Cflags: -I${includedir}/sysprof-@API_VERSION@
|
||||
Requires: gio-2.0 gtk+-3.0 sysprof-@API_VERSION@
|
||||
@ -4,8 +4,8 @@ libdir=${exec_prefix}/lib
|
||||
includedir=${exec_prefix}/include
|
||||
|
||||
Name: libsysprof-@API_VERSION@
|
||||
Description: The sysprof library for integrating profiling into IDEs
|
||||
Description: The sysprof profiler library
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lsysprof-@API_VERSION@
|
||||
Cflags: -I${includedir}/sysprof-@API_VERSION@
|
||||
Requires: gio-2.0 gtk+-3.0
|
||||
Requires: gio-2.0
|
||||
|
||||
226
lib/Makefile.am
226
lib/Makefile.am
@ -1,86 +1,17 @@
|
||||
noinst_LTLIBRARIES =
|
||||
lib_LTLIBRARIES =
|
||||
EXTRA_DIST =
|
||||
CLEANFILES =
|
||||
DISTCLEANFILES =
|
||||
BUILT_SOURCES =
|
||||
|
||||
lib_LTLIBRARIES = libsysprof-@API_VERSION@.la
|
||||
|
||||
nodist_libsysprof_@API_VERSION@_la_SOURCES = \
|
||||
sp-resources.c \
|
||||
sp-resources.h
|
||||
|
||||
headersdir = $(includedir)/sysprof-@API_VERSION@
|
||||
headers_DATA = \
|
||||
sysprof.h \
|
||||
sysprof-version.h \
|
||||
sp-address.h \
|
||||
sp-callgraph-profile.h \
|
||||
sp-callgraph-view.h \
|
||||
sp-capture-reader.h \
|
||||
sp-capture-writer.h \
|
||||
sp-capture-types.h \
|
||||
sp-cell-renderer-percent.h \
|
||||
sp-clock.h \
|
||||
sp-elf-symbol-resolver.h \
|
||||
sp-empty-state-view.h \
|
||||
sp-failed-state-view.h \
|
||||
sp-error.h \
|
||||
sp-gjs-source.h \
|
||||
sp-jitmap-symbol-resolver.h \
|
||||
sp-kernel-symbol.h \
|
||||
sp-kernel-symbol-resolver.h \
|
||||
sp-map-lookaside.h \
|
||||
sp-model-filter.h \
|
||||
sp-perf-source.h \
|
||||
sp-proc-source.h \
|
||||
sp-process-model.h \
|
||||
sp-process-model-item.h \
|
||||
sp-process-model-row.h \
|
||||
sp-profile.h \
|
||||
sp-profiler.h \
|
||||
sp-profiler-menu-button.h \
|
||||
sp-recording-state-view.h \
|
||||
sp-source.h \
|
||||
sp-symbol-resolver.h \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_@API_VERSION@_la_SOURCES = \
|
||||
$(headers_DATA) \
|
||||
sp-address.c \
|
||||
sp-callgraph-profile.c \
|
||||
sp-callgraph-profile-private.h \
|
||||
sp-callgraph-view.c \
|
||||
sp-capture-reader.c \
|
||||
sp-capture-writer.c \
|
||||
sp-cell-renderer-percent.c \
|
||||
sp-clock.c \
|
||||
sp-elf-symbol-resolver.c \
|
||||
sp-empty-state-view.c \
|
||||
sp-failed-state-view.c \
|
||||
sp-error.c \
|
||||
sp-gjs-source.c \
|
||||
sp-jitmap-symbol-resolver.c \
|
||||
sp-kernel-symbol.c \
|
||||
sp-kernel-symbol-resolver.c \
|
||||
sp-line-reader.c \
|
||||
sp-line-reader.h \
|
||||
sp-map-lookaside.c \
|
||||
sp-model-filter.c \
|
||||
sp-perf-counter.c \
|
||||
sp-perf-counter.h \
|
||||
sp-perf-source.c \
|
||||
sp-proc-source.c \
|
||||
sp-process-model.c \
|
||||
sp-process-model-item.c \
|
||||
sp-process-model-row.c \
|
||||
sp-profile.c \
|
||||
sp-profiler.c \
|
||||
sp-profiler-menu-button.c \
|
||||
sp-recording-state-view.c \
|
||||
sp-scrolled-window.c \
|
||||
sp-scrolled-window.h \
|
||||
sp-source.c \
|
||||
sp-symbol-resolver.c \
|
||||
# Both the profiler library and the UI library need to share some
|
||||
# data-structures. Notably, the StackStash. So we build a private
|
||||
# static library that can be used from both. It adds a little bit
|
||||
# of overhead in terms of duplicated procedures, but they should
|
||||
# always be installed in sync, and therefore no big deal.
|
||||
noinst_LTLIBRARIES += libutil.la
|
||||
libutil_la_SOURCES = \
|
||||
util/binfile.c \
|
||||
util/binfile.h \
|
||||
util/demangle.cpp \
|
||||
@ -91,25 +22,89 @@ libsysprof_@API_VERSION@_la_SOURCES = \
|
||||
util/stackstash.h \
|
||||
util/util.h \
|
||||
$(NULL)
|
||||
libutil_la_CFLAGS = \
|
||||
-I$(srcdir)/util \
|
||||
$(SYSPROF_CFLAGS) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(NULL)
|
||||
libutil_la_CXXFLAGS = \
|
||||
-I$(srcdir)/util \
|
||||
$(SYSPROF_CFLAGS) \
|
||||
$(WARN_CXXFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
|
||||
# We split up the library code into two libraries. One containing the
|
||||
# minimum necessary to do profiling on a particular host (that might not
|
||||
# have GTK+ installed), and the library containing reusable GTK
|
||||
# components (for IDE integration).
|
||||
#
|
||||
lib_LTLIBRARIES += libsysprof-@API_VERSION@.la
|
||||
headersdir = $(includedir)/sysprof-@API_VERSION@
|
||||
headers_DATA = \
|
||||
sysprof.h \
|
||||
sysprof-version.h \
|
||||
sp-address.h \
|
||||
sp-callgraph-profile.h \
|
||||
sp-capture-reader.h \
|
||||
sp-capture-writer.h \
|
||||
sp-capture-types.h \
|
||||
sp-clock.h \
|
||||
sp-elf-symbol-resolver.h \
|
||||
sp-error.h \
|
||||
sp-gjs-source.h \
|
||||
sp-jitmap-symbol-resolver.h \
|
||||
sp-kernel-symbol.h \
|
||||
sp-kernel-symbol-resolver.h \
|
||||
sp-map-lookaside.h \
|
||||
sp-perf-source.h \
|
||||
sp-proc-source.h \
|
||||
sp-profile.h \
|
||||
sp-profiler.h \
|
||||
sp-source.h \
|
||||
sp-symbol-resolver.h \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_@API_VERSION@_la_SOURCES = \
|
||||
$(headers_DATA) \
|
||||
sp-address.c \
|
||||
sp-callgraph-profile.c \
|
||||
sp-callgraph-profile-private.h \
|
||||
sp-capture-reader.c \
|
||||
sp-capture-writer.c \
|
||||
sp-clock.c \
|
||||
sp-elf-symbol-resolver.c \
|
||||
sp-error.c \
|
||||
sp-gjs-source.c \
|
||||
sp-jitmap-symbol-resolver.c \
|
||||
sp-kernel-symbol.c \
|
||||
sp-kernel-symbol-resolver.c \
|
||||
sp-line-reader.c \
|
||||
sp-line-reader.h \
|
||||
sp-map-lookaside.c \
|
||||
sp-perf-counter.c \
|
||||
sp-perf-counter.h \
|
||||
sp-perf-source.c \
|
||||
sp-proc-source.c \
|
||||
sp-profile.c \
|
||||
sp-profiler.c \
|
||||
sp-source.c \
|
||||
sp-symbol-resolver.c \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_@API_VERSION@_la_CFLAGS = \
|
||||
-I$(srcdir)/util \
|
||||
$(SYSPROF_CFLAGS) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_@API_VERSION@_la_CXXFLAGS = \
|
||||
-I$(srcdir)/util \
|
||||
$(SYSPROF_CFLAGS) \
|
||||
$(WARN_CXXFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
if ENABLE_SYSPROFD
|
||||
libsysprof_@API_VERSION@_la_CFLAGS += -DENABLE_SYSPROFD
|
||||
libsysprof_@API_VERSION@_la_CFLAGS += \
|
||||
-DENABLE_SYSPROFD
|
||||
endif
|
||||
|
||||
libsysprof_@API_VERSION@_la_LIBADD = \
|
||||
libutil.la \
|
||||
-lstdc++ \
|
||||
$(SYSPROF_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
@ -121,6 +116,65 @@ libsysprof_@API_VERSION@_la_LDFLAGS = \
|
||||
$(NULL)
|
||||
|
||||
|
||||
# This is our GTK library containing the widgets suitable for viewing
|
||||
# and manipulating the various profiler API in libsysprof. This is
|
||||
# meant to be used by IDEs and the sysprof gui.
|
||||
lib_LTLIBRARIES += libsysprof-ui-@API_VERSION@.la
|
||||
|
||||
uiheadersdir = $(includedir)/sysprof-@API_VERSION@
|
||||
uiheaders_DATA = \
|
||||
sp-callgraph-view.h \
|
||||
sp-cell-renderer-percent.h \
|
||||
sp-empty-state-view.h \
|
||||
sp-failed-state-view.h \
|
||||
sp-model-filter.h \
|
||||
sp-process-model.h \
|
||||
sp-process-model-item.h \
|
||||
sp-process-model-row.h \
|
||||
sp-profiler-menu-button.h \
|
||||
sp-recording-state-view.h \
|
||||
sp-scrolled-window.h \
|
||||
sysprof-ui.h \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_ui_@API_VERSION@_la_SOURCES = \
|
||||
$(uiheaders_DATA) \
|
||||
sp-callgraph-view.c \
|
||||
sp-cell-renderer-percent.c \
|
||||
sp-empty-state-view.c \
|
||||
sp-failed-state-view.c \
|
||||
sp-model-filter.c \
|
||||
sp-process-model.c \
|
||||
sp-process-model-item.c \
|
||||
sp-process-model-row.c \
|
||||
sp-profiler-menu-button.c \
|
||||
sp-recording-state-view.c \
|
||||
sp-scrolled-window.c \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_ui_@API_VERSION@_la_CFLAGS = \
|
||||
-I$(srcdir)/util \
|
||||
$(SYSPROF_UI_CFLAGS) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_ui_@API_VERSION@_la_LIBADD = \
|
||||
libutil.la \
|
||||
libsysprof-@API_VERSION@.la \
|
||||
$(SYSPROF_UI_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
libsysprof_ui_@API_VERSION@_la_LDFLAGS = \
|
||||
-avoid-version \
|
||||
-no-undefined \
|
||||
-export-symbols-regex '^(sp_).*' \
|
||||
$(WARN_LDFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
nodist_libsysprof_ui_@API_VERSION@_la_SOURCES = \
|
||||
sp-resources.c \
|
||||
sp-resources.h
|
||||
|
||||
glib_resources_xml = resources/libsysprof.gresource.xml
|
||||
glib_resources_c = sp-resources.c
|
||||
glib_resources_h = sp-resources.h
|
||||
|
||||
41
lib/sysprof-ui.h
Normal file
41
lib/sysprof-ui.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* sysprof-ui.h
|
||||
*
|
||||
* Copyright (C) 2016 Christian Hergert <christian@hergert.me>
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef SYSPROF_UI_H
|
||||
#define SYSPROF_UI_H
|
||||
|
||||
#include <sysprof.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define SYSPROF_INSIDE
|
||||
# include "sp-callgraph-view.h"
|
||||
# include "sp-cell-renderer-percent.h"
|
||||
# include "sp-empty-state-view.h"
|
||||
# include "sp-model-filter.h"
|
||||
# include "sp-recording-state-view.h"
|
||||
# include "sp-process-model.h"
|
||||
# include "sp-process-model-item.h"
|
||||
# include "sp-process-model-row.h"
|
||||
# include "sp-profiler-menu-button.h"
|
||||
# include "sp-scrolled-window.h"
|
||||
#undef SYSPROF_INSIDE
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* SYSPROF_UI_H */
|
||||
@ -26,29 +26,20 @@ G_BEGIN_DECLS
|
||||
#define SYSPROF_INSIDE
|
||||
# include "sp-address.h"
|
||||
# include "sp-callgraph-profile.h"
|
||||
# include "sp-callgraph-view.h"
|
||||
# include "sp-capture-reader.h"
|
||||
# include "sp-capture-writer.h"
|
||||
# include "sp-cell-renderer-percent.h"
|
||||
# include "sp-clock.h"
|
||||
# include "sp-elf-symbol-resolver.h"
|
||||
# include "sp-empty-state-view.h"
|
||||
# include "sp-error.h"
|
||||
# include "sp-gjs-source.h"
|
||||
# include "sp-jitmap-symbol-resolver.h"
|
||||
# include "sp-kernel-symbol.h"
|
||||
# include "sp-kernel-symbol-resolver.h"
|
||||
# include "sp-map-lookaside.h"
|
||||
# include "sp-model-filter.h"
|
||||
# include "sp-recording-state-view.h"
|
||||
# include "sp-perf-source.h"
|
||||
# include "sp-proc-source.h"
|
||||
# include "sp-process-model.h"
|
||||
# include "sp-process-model-item.h"
|
||||
# include "sp-process-model-row.h"
|
||||
# include "sp-profile.h"
|
||||
# include "sp-profiler.h"
|
||||
# include "sp-profiler-menu-button.h"
|
||||
# include "sp-source.h"
|
||||
# include "sp-symbol-resolver.h"
|
||||
# include "sysprof-version.h"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
bin_PROGRAMS = sysprof
|
||||
|
||||
sysprof_CFLAGS = \
|
||||
$(SYSPROF_CFLAGS) \
|
||||
$(SYSPROF_UI_CFLAGS) \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_builddir)/lib
|
||||
|
||||
@ -21,8 +21,10 @@ nodist_sysprof_SOURCES = \
|
||||
sp-resources.h
|
||||
|
||||
sysprof_LDADD = \
|
||||
$(SYSPROF_LIBS) \
|
||||
$(top_builddir)/lib/libsysprof-@API_VERSION@.la
|
||||
$(SYSPROF_UI_LIBS) \
|
||||
$(top_builddir)/lib/libsysprof-@API_VERSION@.la \
|
||||
$(top_builddir)/lib/libsysprof-ui-@API_VERSION@.la \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST =
|
||||
CLEANFILES =
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include <errno.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <sysprof.h>
|
||||
#include <sysprof-ui.h>
|
||||
|
||||
#include "sp-application.h"
|
||||
#include "sp-window.h"
|
||||
|
||||
@ -9,11 +9,21 @@ test_libs = \
|
||||
$(SYSPROF_LIBS) \
|
||||
$(top_builddir)/lib/libsysprof-@API_VERSION@.la
|
||||
|
||||
test_ui_cflags = \
|
||||
$(SYSPROF_UI_CFLAGS) \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_builddir)/lib
|
||||
|
||||
test_ui_libs = \
|
||||
$(SYSPROF_UI_LIBS) \
|
||||
$(top_builddir)/lib/libsysprof-@API_VERSION@.la \
|
||||
$(top_builddir)/lib/libsysprof-ui-@API_VERSION@.la
|
||||
|
||||
|
||||
TESTS += test-model-filter
|
||||
test_model_filter_SOURCES = test-model-filter.c
|
||||
test_model_filter_CFLAGS = $(test_cflags)
|
||||
test_model_filter_LDADD = $(test_libs)
|
||||
test_model_filter_CFLAGS = $(test_ui_cflags)
|
||||
test_model_filter_LDADD = $(test_ui_libs)
|
||||
|
||||
TESTS += test-capture
|
||||
test_capture_SOURCES = test-capture.c
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#include <sysprof.h>
|
||||
#include <sysprof-ui.h>
|
||||
|
||||
#include "sp-model-filter.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user