summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2017-04-13 14:49:51 +0200
committerUlf Hermann <ulf.hermann@qt.io>2017-04-28 10:53:25 +0000
commit4abd9df38adc6e324472730413885c0a194a499c (patch)
tree45fb2a662abe0c1b32ad379e775a01990db94425
parentfb27768c3aef57c00a5bd7d8948ae7ef21c92046 (diff)
Allow specification of elfutils install dir
Link against elfutils in that directory, and copy files from there in the deploy step. Also, drop the windows specific library naming dance as we are never going to build the bundled elfutils on windows. Change-Id: Ia1dd2583856918b2c2623016f6ed7a80c0c7ef07 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
-rw-r--r--app/app.pro21
-rw-r--r--paths.pri12
-rw-r--r--perfparser.pro41
3 files changed, 56 insertions, 18 deletions
diff --git a/app/app.pro b/app/app.pro
index f2f0b45..039c32c 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -11,12 +11,8 @@ CONFIG -= app_bundle
include(../paths.pri)
!isEmpty(PERFPARSER_BUNDLED_ELFUTILS) {
- linux-* {
- RPATH = $$relative_path($$PERFPARSER_ELFUTILS_INSTALLDIR, $$PERFPARSER_APP_INSTALLDIR)
- QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,\$\$ORIGIN/$$RPATH\'
- }
-
LIBS += -L$$PERFPARSER_ELFUTILS_DESTDIR
+ LIBS += -l$$libraryName(dw) -l$$libraryName(elf)
include(../3rdparty/elfutils/libdwfl/dwflheaders.pri)
include(../3rdparty/elfutils/libelf/elfheaders.pri)
@@ -25,11 +21,20 @@ include(../paths.pri)
include(../3rdparty/elfutils/libdwelf/dwelfheaders.pri)
include(../3rdparty/elfutils/lib/libheaders.pri)
} else {
- INCLUDEPATH += /usr/include/elfutils
+ !isEmpty(ELFUTILS_INSTALL_DIR) {
+ INCLUDEPATH += $$ELFUTILS_INSTALL_DIR/include $$ELFUTILS_INSTALL_DIR/include/elfutils
+ LIBS += -L$$ELFUTILS_INSTALL_DIR/lib
+ } else:unix {
+ INCLUDEPATH += /usr/include/elfutils
+ }
+
+ LIBS += -ldw -lelf
}
-# We require major version 0 from elfutils
-LIBS += -l$$libraryRefName(dw, 0) -l$$libraryRefName(elf, 0)
+linux-g++*:!isEmpty(PERFPARSER_ELFUTILS_INSTALLDIR) {
+ RPATH = $$relative_path($$PERFPARSER_ELFUTILS_INSTALLDIR, $$PERFPARSER_APP_INSTALLDIR)
+ QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,\$\$ORIGIN/$$RPATH\'
+}
DESTDIR = $$PERFPARSER_APP_DESTDIR
target.path = $$PERFPARSER_APP_INSTALLDIR
diff --git a/paths.pri b/paths.pri
index ac2ad64..4ccb4ba 100644
--- a/paths.pri
+++ b/paths.pri
@@ -14,17 +14,11 @@ isEmpty(PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR) {
PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR = $$PERFPARSER_ELFUTILS_INSTALLDIR/elfutils
}
-defineReplace(libraryName) {
- RET = $$1$$qtPlatformTargetSuffix()
- win32 {
- VERSION_LIST = $$split(VERSION, .)
- RET = $$RET$$first(VERSION_LIST)
- }
- return($$RET)
+isEmpty(PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR):!isEmpty(PERFPARSER_ELFUTILS_INSTALLDIR) {
+ PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR = $$PERFPARSER_ELFUTILS_INSTALLDIR/elfutils
}
-defineReplace(libraryRefName) {
+defineReplace(libraryName) {
RET = $$1$$qtPlatformTargetSuffix()
- win32: RET = $$RET$$2
return($$RET)
}
diff --git a/perfparser.pro b/perfparser.pro
index 92b600b..f37a0fe 100644
--- a/perfparser.pro
+++ b/perfparser.pro
@@ -1,12 +1,51 @@
TEMPLATE = subdirs
SUBDIRS = app
+include (paths.pri)
+
+defineReplace(elfutilsLibraryName) {
+ RET = $$1
+ linux: RET = lib$${RET}.so.$$2
+ macos: RET = lib$${RET}.dylib
+ win32: RET = $${RET}.dll
+ return($$RET)
+}
+
!isEmpty(BUILD_TESTS): SUBDIRS += tests
!isEmpty(PERFPARSER_BUNDLED_ELFUTILS) {
SUBDIRS += 3rdparty/elfutils
app.depends = 3rdparty/elfutils
!isEmpty(BUILD_TESTS): tests.depends = 3rdparty/elfutils
+} else:!isEmpty(PERFPARSER_ELFUTILS_INSTALLDIR) {
+ unix:isEmpty(ELFUTILS_INSTALL_DIR): ELFUTILS_INSTALL_DIR = /usr
+
+ inst_elfutils.files = \
+ $$ELFUTILS_INSTALL_DIR/lib/$$elfutilsLibraryName(elf, 1) \
+ $$ELFUTILS_INSTALL_DIR/lib/$$elfutilsLibraryName(dw, 1)
+
+ inst_elfutils.path = $$PERFPARSER_ELFUTILS_INSTALLDIR
+ inst_elfutils.CONFIG += no_check_exist no_default_install
+
+ # only deploy the non-versioned backends. We are never dlopen'ing the versioned ones anyway.
+ inst_backends.files = $$files($$ELFUTILS_INSTALL_DIR/lib/elfutils/*ebl_*.*)
+ inst_backends.files -= $$files($$ELFUTILS_INSTALL_DIR/lib/elfutils/*ebl_*-*.*.*)
+ inst_backends.path = $$PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR
+ inst_backends.CONFIG += no_check_exist no_default_install
+
+ INSTALLS += inst_backends inst_elfutils
+
+ deploy.depends = install_inst_elfutils install_inst_backends
+
+ linux {
+ RPATH = $$relative_path($$PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR, \
+ $$PERFPARSER_ELFUTILS_INSTALLDIR)
+ fix_dw_rpath.commands = chrpath -r \'\$\$ORIGIN/$$RPATH\' \
+ $$PERFPARSER_ELFUTILS_INSTALLDIR/$$elfutilsLibraryName(dw, 1)
+ fix_dw_rpath.depends = install_inst_elfutils
+ deploy.depends += fix_dw_rpath
+ QMAKE_EXTRA_TARGETS += fix_dw_rpath install_inst_elfutils
+ }
}
-QMAKE_EXTRA_TARGETS = docs install_docs # dummy targets for consistency
+QMAKE_EXTRA_TARGETS += deploy docs install_docs