This adds a libust initializer object which gets linked automagically if
you link against libust.so, which is a linker skript from now on. The
object file just ensures that the libust is initialized properly without
forcing the user of the library to care about calling MARKER_LIB and
TRACEPOINT_LIB explicitly.
Signed-off-by: Jan Blunck <jblunck@suse.de>
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = libust tests libmallocwrap ustd ustctl libinterfork include
-EXTRA_DIST = doc
+EXTRA_DIST = doc libust.ldscript.in libust-initializer.c
dist_bin_SCRIPTS = usttrace
+
+ldscriptsdir = $(libdir)
+ldscripts_DATA = libust.so libust-initializer.o
+
+CLEANFILES = $(ldscripts_DATA)
+
+libust_FORMAT := $(shell case $(shell uname -m) in (i*86) echo elf32-i386 ;; (x86_64) echo elf64-x86-64 ;; (ppc) echo elf32-powerpc ;; (ppc64) echo elf64-powerpc ;; (s390) echo elf32-s390 ;; (s390x) echo elf64-s390 ;; esac)
+libust.so: libust.ldscript.in
+ $(SED) -e "s@\@FORMAT\@@${libust_FORMAT}@" -e "s@\@PATH\@@${libdir}@g" < $< > $@
+
+libust-initializer.o: libust-initializer.c
+ $(CC) -c $(CFLAGS) -o $@ $<
--- /dev/null
+/*
+ * Copyright (C) 2009 Novell Inc.
+ *
+ * Author: Jan Blunck <jblunck@suse.de>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ */
+
+#include <ust/marker.h>
+#include <ust/tracepoint.h>
+
+MARKER_LIB;
+TRACEPOINT_LIB;
--- /dev/null
+/* GNU ld script
+ Use the shared library, but the link with initializer too */
+OUTPUT_FORMAT(@FORMAT@)
+GROUP ( @PATH@/libust.so.0 @PATH@/libust-initializer.o )