Sedat Dilek via llvm-dev
2016-Jul-24 13:45 UTC
[llvm-dev] [PGO] cmake: Check for opagent.h when building with -DLLVM_USE_OPROFILE=ON
Hi, I am building a llvm-toolchain v3.8.1 and use... PGO_CMAKE_OPTS="-DLLVM_USE_OPROFILE=ON" ...in my build-script (see file-attachments). My build stopped saying... <opagent.h> not found. [1] says... 00024 #include <opagent.h> So, it is possible to check for the existence of <opagent.h> in the cmake/configure stage *before* starting the build. It is not very pleasant to see the build breaking. NOTE: Ubuntu/precise has no official oprofile package available which ships "/usr/include/opagent.h". I did not check if upstream has a fix or workaround for this. Thanks. Regards, - Sedat - [1] http://llvm.org/docs/doxygen/html/OProfileWrapper_8h_source.html P.S.: Note2myself: Backporting oprofile v0.9.9 For backporting oprofile v0.9.9 from Ubuntu/trusty I needed libiberty-dev from kubuntu-ppa/backports PPA software repository. Furthermore, hack around to disable the build of oprofile-gui and java-related libs (see attached diff-file). [2] http://packages.ubuntu.com/search?keywords=libiberty [3] http://www.ubuntuupdates.org/package/kubuntu-ppa_backports/precise/main/base/libiberty-dev -------------- next part -------------- --- oprofile-0.9.9.orig/debian/changelog 2014-04-05 01:20:04.000000000 +0200 +++ oprofile-0.9.9/debian/changelog 2016-07-24 15:22:51.270272652 +0200 @@ -1,3 +1,19 @@ +oprofile (0.9.9-0ubuntu8~precise+dileks1) precise; urgency=low + + * Suppress building of oprofile-gui and libjvmti-oprofile0 packages. + * debian/control + + Downgrade to automake in Build-Depends + + Remove Build-Depends for oprofile-gui and libjvmti-oprofile0 + + Remove Packages sections of oprofile-gui and libjvmti-oprofile0 + * debian/rules: + + Remove aclocal options from autogen line + + Drop unavailable options from configure line + + Remove lines referring to oprofile-gui and libjvmti-oprofile0 + * Build against libiberty-dev (20131116-1~ubuntu12.04~ppa1) from kubuntu-ppa/backports. + * Rebuild on Ubuntu/precise. + + -- Sedat Dilek <sedat.dilek at gmail.com> Sun, 24 Jul 2016 15:17:10 +0200 + oprofile (0.9.9-0ubuntu8) trusty; urgency=medium * debian/patches/Fix-up-event-codes-for-marked-architected-events.patch: --- oprofile-0.9.9.orig/debian/control 2014-03-10 18:14:55.000000000 +0100 +++ oprofile-0.9.9/debian/control 2016-07-24 15:22:51.270272652 +0200 @@ -6,7 +6,7 @@ XSBC-Original-Maintainer: LIU Qi <liuqi8 Uploaders: Roberto C. Sanchez <roberto at connexer.com> Standards-Version: 3.9.3 Build-Depends: - automake1.10, + automake, binutils-dev, libiberty-dev, libpfm4-dev [ppc64 ppc64el], @@ -15,14 +15,11 @@ Build-Depends: docbook-xsl, g++ (>>3.3.1), libpopt-dev, - libqt4-dev, libtool, libx11-dev, pkg-config, - qt4-dev-tools, xsltproc, - zlib1g-dev, - default-jdk + zlib1g-dev Homepage: http://oprofile.sourceforge.net Vcs-Browser: http://git.printk.org/?p=liuqi/debian/oprofile.git;a=summary Vcs-git: git://git.printk.org/liuqi/debian/oprofile.git @@ -45,7 +42,6 @@ Depends: ${shlibs:Depends} Replaces: oprofile-common Recommends: binutils -Suggests: oprofile-gui Description: system-wide profiler for Linux systems OProfile is a performance profiling tool for Linux systems, capable of profiling all running code at low overhead. It consists of a @@ -74,24 +70,3 @@ Description: system-wide profiler for Li for turning data into information. . This package contains the opagent runtime library. - -Package: libjvmti-oprofile0 -Architecture: linux-any -Depends: ${misc:Depends}, ${shlibs:Depends} -Description: system-wide profiler for Linux systems (Java runtime library) - OProfile is a performance profiling tool for Linux systems, capable - of profiling all running code at low overhead. It consists of a - daemon for collecting sample data, plus several post-profiling tools - for turning data into information. - . - This package contains the jvmti_oprofile runtime library for Java support. - -Package: oprofile-gui -Architecture: linux-any -Replaces: oprofile -Depends: debconf | debconf-2.0, oprofile, ${misc:Depends}, ${shlibs:Depends} -Recommends: binutils -Description: system-wide profiler for Linux systems (GUI components) - This package contains only the GUI components of the oprofile package. - This allows oprofile to be used on machines that require a much - smaller footprint, or that do not wish to use an X Windows interface. --- oprofile-0.9.9.orig/debian/rules 2014-03-10 18:14:55.000000000 +0100 +++ oprofile-0.9.9/debian/rules 2016-07-24 15:40:39.682239142 +0200 @@ -18,9 +18,9 @@ endif configure: config-stamp config-stamp: $(QUILT_STAMPFN) - cd $(CURDIR) && ACLOCAL=aclocal-1.10 AUTOMAKE=automake-1.10 ./autogen.sh + cd $(CURDIR) && AUTOMAKE=automake ./autogen.sh # cd $(CURDIR) && autoreconf -vfi - cd $(CURDIR) && ./configure --host=$(DEB_HOST_GNU_TYPE) --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-qt-includes=/usr/include/qt4 --with-kernel-support --disable-werror --enable-gui=qt4 --with-java=/usr/lib/jvm/default-java + cd $(CURDIR) && ./configure --host=$(DEB_HOST_GNU_TYPE) --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-werror --enable-gui=no --with-java=no touch config-stamp build-arch: configure build-arch-stamp @@ -54,24 +54,17 @@ install: build cd $(CURDIR) && DESTDIR=$(CURDIR)/debian/oprofile $(MAKE) install # Move some files to their proper location - mv debian/oprofile/usr/bin/oprof_start \ - debian/oprofile-gui/usr/bin - cp debian/oprofile/usr/share/man/man1/oprofile.1 \ - debian/oprofile-gui/usr/share/man/man1/oprof_start.1 + # oprofile-gui: Remove man-page + rm -f debian/oprofile/usr/share/man/man1/oprof_start.1 mkdir -p debian/libopagent1/usr/lib - mkdir -p debian/libjvmti-oprofile0/usr/lib mv debian/oprofile/usr/lib/oprofile/libopagent.so.* \ debian/libopagent1/usr/lib/ - mv debian/oprofile/usr/lib/oprofile/libjvmti_oprofile.so.* \ - debian/libjvmti-oprofile0/usr/lib/ - for i in debian/libopagent1/usr/lib/*.so.* \ - debian/libjvmti-oprofile0/usr/lib/*.so.*; do \ + for i in debian/libopagent1/usr/lib/*.so.*; do \ b=$$(basename $$i); \ ln -sf ../$$b debian/oprofile/usr/lib/oprofile/$$b; \ done ln -sf libopagent.so.1 debian/oprofile/usr/lib/libopagent.so - ln -sf libjvmti_oprofile.so.0 debian/oprofile/usr/lib/libjvmti_oprofile.so # Fixup non-empty-dependency_libs-in-la-file lintian error sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` -------------- next part -------------- A non-text attachment was scrubbed... Name: build_llvm-toolchain.sh Type: application/x-sh Size: 6593 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160724/427a9863/attachment-0001.sh>