[Buildroot] [PATCH 3 of 3] oprofile 0.9.8: fix compilation on powerpc

Thomas De Schampheleire patrickdepinguin+buildroot at gmail.com
Tue Mar 12 18:10:56 UTC 2013


The oprofile build was broken on powerpc since version 0.9.8.
This was detected in several autobuilds, like
http://autobuild.buildroot.net/results/6f6c02d18495907d50fcdfc6003ac20d493c55fe/

The problem can be fixed by adding libpfm4 into the build and making a few
changes in the configure script. Because the configure script is changed,
we additionally need to prevent autoreconfiguring (which fails).
At the same time, I fixed the removed  --with-kernel-support configure
option.

Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>

---
 package/oprofile/Config.in                        |   1 +
 package/oprofile/oprofile-0.9.8-003-powerpc.patch |  27 +++++++++++++++++++++++++++
 package/oprofile/oprofile.mk                      |  16 ++++++++++++++--
 3 files changed, 42 insertions(+), 2 deletions(-)

Note: this is compile-tested on x86 and powerpc, but I was not able to test
it on target.

diff --git a/package/oprofile/Config.in b/package/oprofile/Config.in
--- a/package/oprofile/Config.in
+++ b/package/oprofile/Config.in
@@ -2,6 +2,7 @@ config BR2_PACKAGE_OPROFILE
 	bool "oprofile"
 	select BR2_PACKAGE_POPT
 	select BR2_PACKAGE_BINUTILS
+	select BR2_PACKAGE_LIBPFM4 if BR2_powerpc
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on !BR2_aarch64 # binutils
 	help
diff --git a/package/oprofile/oprofile-0.9.8-003-powerpc.patch b/package/oprofile/oprofile-0.9.8-003-powerpc.patch
new file mode 100644
--- /dev/null
+++ b/package/oprofile/oprofile-0.9.8-003-powerpc.patch
@@ -0,0 +1,27 @@
+
+Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
+
+diff --git a/configure.ac b/configure.ac
+--- a/configure.ac
++++ b/configure.ac
+@@ -104,7 +104,7 @@ AC_DEFINE_UNQUOTED(HAVE_PERF_EVENTS, $HA
+ if test "$HAVE_PERF_EVENTS" = "1"; then
+ 	PFM_LIB=
+ 	arch="`uname -m`"
+-	if test "$arch" = "ppc64"; then
++	if test "$arch" = "ppc64" || test "$arch" = "ppc"; then
+ 		AC_CHECK_HEADER(perfmon/pfmlib.h,,[AC_MSG_ERROR([pfmlib.h not found; usually provided in papi devel package])])
+ 		AC_CHECK_LIB(pfm,pfm_get_event_name, HAVE_LIBPFM3='1'; HAVE_LIBPFM='1', [
+ 			AC_CHECK_LIB(pfm,pfm_get_os_event_encoding, HAVE_LIBPFM3='0'; HAVE_LIBPFM='1',
+diff --git a/configure b/configure
+--- a/configure
++++ b/configure
+@@ -16985,7 +16985,7 @@ cat >>confdefs.h <<_ACEOF
+ if test "$HAVE_PERF_EVENTS" = "1"; then
+ 	PFM_LIB=
+ 	arch="`uname -m`"
+-	if test "$arch" = "ppc64"; then
++	if test "$arch" = "ppc64" || test "$arch" = "ppc"; then
+ 		if test "${ac_cv_header_perfmon_pfmlib_h+set}" = set; then
+   { $as_echo "$as_me:$LINENO: checking for perfmon/pfmlib.h" >&5
+ $as_echo_n "checking for perfmon/pfmlib.h... " >&6; }
diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk
--- a/package/oprofile/oprofile.mk
+++ b/package/oprofile/oprofile.mk
@@ -8,7 +8,7 @@ OPROFILE_VERSION = 0.9.8
 OPROFILE_SITE = http://downloads.sourceforge.net/project/oprofile/oprofile/oprofile-$(OPROFILE_VERSION)
 OPROFILE_LICENSE = GPLv2+
 OPROFILE_LICENSE_FILES = COPYING
-OPROFILE_CONF_OPT = --localstatedir=/var --with-kernel-support
+OPROFILE_CONF_OPT = --localstatedir=/var --with-kernel=$(SYSROOT_DIR)
 OPROFILE_BINARIES = utils/ophelp pp/opannotate pp/oparchive pp/opgprof
 OPROFILE_BINARIES += pp/opreport opjitconv/opjitconv daemon/oprofiled
 OPROFILE_BINARIES += utils/op-check-perfevents pe_profiling/operf libabi/opimport
@@ -29,7 +29,19 @@ ifeq ($(OPROFILE_ARCH),)
 OPROFILE_ARCH = $(BR2_ARCH)
 endif
 
-OPROFILE_DEPENDENCIES = popt binutils
+OPROFILE_DEPENDENCIES = popt binutils libpfm4
+
+define OPROFILE_PREVENT_AUTOMAKE
+	# Prevent automake from running.
+	(cd $(@D); touch -c config* aclocal.m4 Makefile*);
+endef
+
+define OPROFILE_FIX_CROSS_UNAME
+	$(SED) 's/`uname -m`/$(OPROFILE_ARCH)/' $(@D)/configure
+endef
+
+OPROFILE_POST_PATCH_HOOKS += OPROFILE_PREVENT_AUTOMAKE
+OPROFILE_POST_PATCH_HOOKS += OPROFILE_FIX_CROSS_UNAME
 
 define OPROFILE_INSTALL_TARGET_CMDS
 	$(INSTALL) -d -m 755 $(TARGET_DIR)/usr/bin


More information about the buildroot mailing list