diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-07-24 18:39:32 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-08-26 11:44:09 +0300 |
commit | 77502d434fc01e2a4abbe7a177fb48527b26f458 (patch) | |
tree | a36fce503cfaf885735537e43b27e1562d102f15 | |
parent | 82c8021426c3ef6ca38407775beaff1b1b5e363a (diff) |
Allow specification of install targets and destdirs
Build elfutils and perfparser dynamically and place them into the
specified directories if given. This allows for easier integration
of perfparser with other tools.
Change-Id: Ic21b55b48d2534668090d9184925052356cdbda5
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
31 files changed, 107 insertions, 95 deletions
diff --git a/3rdparty/elfutils/backends/aarch64/aarch64.pro b/3rdparty/elfutils/backends/aarch64/aarch64.pro index 32299d7..5489b1d 100644 --- a/3rdparty/elfutils/backends/aarch64/aarch64.pro +++ b/3rdparty/elfutils/backends/aarch64/aarch64.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_aarch64 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_aarch64 SOURCES += \ ../aarch64_cfi.c \ diff --git a/3rdparty/elfutils/backends/alpha/alpha.pro b/3rdparty/elfutils/backends/alpha/alpha.pro index 9584285..3a4b39a 100644 --- a/3rdparty/elfutils/backends/alpha/alpha.pro +++ b/3rdparty/elfutils/backends/alpha/alpha.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_alpha include(../backends.pri) -TARGET = ../../../../elfutils/ebl_alpha SOURCES += \ ../alpha_auxv.c \ diff --git a/3rdparty/elfutils/backends/arm/arm.pro b/3rdparty/elfutils/backends/arm/arm.pro index ebe9693..e9fb572 100644 --- a/3rdparty/elfutils/backends/arm/arm.pro +++ b/3rdparty/elfutils/backends/arm/arm.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_arm include(../backends.pri) -TARGET = ../../../../elfutils/ebl_arm SOURCES += \ ../arm_attrs.c \ diff --git a/3rdparty/elfutils/backends/backends.pri b/3rdparty/elfutils/backends/backends.pri index 1446870..31667f2 100644 --- a/3rdparty/elfutils/backends/backends.pri +++ b/3rdparty/elfutils/backends/backends.pri @@ -1,15 +1,18 @@ include(../elfutils.pri) -include(../libebl/eblheaders.pri) +include(../../../paths.pri) + +DESTDIR = $$PERFPARSER_ELFUTILS_BACKENDS_DESTDIR -CONFIG -= qt +TEMPLATE = lib +CONFIG += shared dll + +target.path = $$PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR +INSTALLS += target + +include(../libebl/eblheaders.pri) HEADERS += \ $$PWD/libebl_CPU.h \ $$PWD/linux-core-note.c \ $$PWD/x86_corenote.c \ $$PWD/common-reloc.c - -INCLUDEPATH += $$PWD - -INSTALLS += target -target.path = /lib/elfutils diff --git a/3rdparty/elfutils/backends/i386/i386.pro b/3rdparty/elfutils/backends/i386/i386.pro index 6d69043..b9fd4c1 100644 --- a/3rdparty/elfutils/backends/i386/i386.pro +++ b/3rdparty/elfutils/backends/i386/i386.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_i386 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_i386 LIBS += ../../libcpu/libi386.a diff --git a/3rdparty/elfutils/backends/ia64/ia64.pro b/3rdparty/elfutils/backends/ia64/ia64.pro index 0ab36d2..399ea02 100644 --- a/3rdparty/elfutils/backends/ia64/ia64.pro +++ b/3rdparty/elfutils/backends/ia64/ia64.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_ia64 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_ia64 SOURCES += \ ../ia64_init.c \ diff --git a/3rdparty/elfutils/backends/ppc/ppc.pro b/3rdparty/elfutils/backends/ppc/ppc.pro index 48a1f85..4bd54db 100644 --- a/3rdparty/elfutils/backends/ppc/ppc.pro +++ b/3rdparty/elfutils/backends/ppc/ppc.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_ppc include(../backends.pri) -TARGET = ../../../../elfutils/ebl_ppc SOURCES += \ ../ppc_attrs.c \ diff --git a/3rdparty/elfutils/backends/ppc64/ppc64.pro b/3rdparty/elfutils/backends/ppc64/ppc64.pro index db3f79b..22f4b70 100644 --- a/3rdparty/elfutils/backends/ppc64/ppc64.pro +++ b/3rdparty/elfutils/backends/ppc64/ppc64.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_ppc64 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_ppc64 SOURCES += \ ../ppc64_corenote.c \ diff --git a/3rdparty/elfutils/backends/s390/s390.pro b/3rdparty/elfutils/backends/s390/s390.pro index b73e3a1..a7ea625 100644 --- a/3rdparty/elfutils/backends/s390/s390.pro +++ b/3rdparty/elfutils/backends/s390/s390.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_s390 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_s390 SOURCES += \ ../s390_cfi.c \ diff --git a/3rdparty/elfutils/backends/sh/sh.pro b/3rdparty/elfutils/backends/sh/sh.pro index 4733874..f4ccce5 100644 --- a/3rdparty/elfutils/backends/sh/sh.pro +++ b/3rdparty/elfutils/backends/sh/sh.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_sh include(../backends.pri) -TARGET = ../../../../elfutils/ebl_sh SOURCES += \ ../sh_corenote.c \ diff --git a/3rdparty/elfutils/backends/sparc/sparc.pro b/3rdparty/elfutils/backends/sparc/sparc.pro index 575cbdf..36bbd30 100644 --- a/3rdparty/elfutils/backends/sparc/sparc.pro +++ b/3rdparty/elfutils/backends/sparc/sparc.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_sparc include(../backends.pri) -TARGET = ../../../../elfutils/ebl_sparc SOURCES += \ ../sparc_auxv.c \ diff --git a/3rdparty/elfutils/backends/tilegx/tilegx.pro b/3rdparty/elfutils/backends/tilegx/tilegx.pro index be8fb54..0c120df 100644 --- a/3rdparty/elfutils/backends/tilegx/tilegx.pro +++ b/3rdparty/elfutils/backends/tilegx/tilegx.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_tilegx include(../backends.pri) -TARGET = ../../../../elfutils/ebl_tilegx SOURCES += \ ../tilegx_corenote.c \ diff --git a/3rdparty/elfutils/backends/x86_64/x86_64.pro b/3rdparty/elfutils/backends/x86_64/x86_64.pro index 159043d..cd0655b 100644 --- a/3rdparty/elfutils/backends/x86_64/x86_64.pro +++ b/3rdparty/elfutils/backends/x86_64/x86_64.pro @@ -1,6 +1,5 @@ -TEMPLATE = lib +TARGET = ebl_x86_64 include(../backends.pri) -TARGET = ../../../../elfutils/ebl_x86_64 LIBS += ../../libcpu/libx86_64.a diff --git a/3rdparty/elfutils/dynamic.pri b/3rdparty/elfutils/dynamic.pri new file mode 100644 index 0000000..d39a4d3 --- /dev/null +++ b/3rdparty/elfutils/dynamic.pri @@ -0,0 +1,19 @@ +include(elfutils.pri) +include(../../paths.pri) + +DESTDIR = $$PERFPARSER_ELFUTILS_DESTDIR + +INSTALL_RPATH = $$relative_path($$PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR,\ + $$PERFPARSER_ELFUTILS_INSTALLDIR) +DEST_RPATH = $$relative_path($$PERFPARSER_ELFUTILS_BACKENDS_DESTDIR,\ + $$PERFPARSER_ELFUTILS_DESTDIR) + +QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,\$\$ORIGIN/$$INSTALL_RPATH\' \ + \'-Wl,-rpath,\$\$ORIGIN/$$DEST_RPATH\' \ + \'-Wl,-rpath,\$\$ORIGIN\' + +TEMPLATE = lib +CONFIG += shared dll + +target.path = $$PERFPARSER_ELFUTILS_INSTALLDIR +INSTALLS += target diff --git a/3rdparty/elfutils/elfutils.pri b/3rdparty/elfutils/elfutils.pri index bdbf5db..3df30f3 100644 --- a/3rdparty/elfutils/elfutils.pri +++ b/3rdparty/elfutils/elfutils.pri @@ -6,5 +6,8 @@ HEADERS += \ $$PWD/version.h \ $$PWD/config.h +CONFIG -= qt + INCLUDEPATH += $$PWD + include(lib/libheaders.pri) diff --git a/3rdparty/elfutils/elfutils.pro b/3rdparty/elfutils/elfutils.pro index 6252ea0..c522148 100644 --- a/3rdparty/elfutils/elfutils.pro +++ b/3rdparty/elfutils/elfutils.pro @@ -16,6 +16,9 @@ SUBDIRS = \ libdwelf \ libdwfl +libdw.depends = libelf libebl libdwelf libdwfl +libelf.depends = libelf/elf32 libelf/elf64 + libcpu.depends = lib backends.depends = libcpu diff --git a/3rdparty/elfutils/lib/lib.pro b/3rdparty/elfutils/lib/lib.pro index f1663f8..3163d37 100644 --- a/3rdparty/elfutils/lib/lib.pro +++ b/3rdparty/elfutils/lib/lib.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../eu +TARGET = eu -include(../elfutils.pri) +include(../static.pri) SOURCES += \ $$PWD/color.c \ diff --git a/3rdparty/elfutils/libasm/libasm.pro b/3rdparty/elfutils/libasm/libasm.pro index a6e9f1a..1f03362 100644 --- a/3rdparty/elfutils/libasm/libasm.pro +++ b/3rdparty/elfutils/libasm/libasm.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../asm +TARGET = asm -include(../elfutils.pri) +include(../dynamic.pri) include(../libebl/eblheaders.pri) include(asmheaders.pri) diff --git a/3rdparty/elfutils/libcpu/i386/i386.pro b/3rdparty/elfutils/libcpu/i386/i386.pro index 8109226..678a0f8 100644 --- a/3rdparty/elfutils/libcpu/i386/i386.pro +++ b/3rdparty/elfutils/libcpu/i386/i386.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib TARGET = ../i386 -include(../../elfutils.pri) +include(../../static.pri) include(../../libasm/asmheaders.pri) include(../../libebl/eblheaders.pri) include(../cpuheaders.pri) @@ -18,7 +16,8 @@ SOURCES += \ $$PWD/../i386_disasm.c INCLUDEPATH += \ - $$OUT_PWD/../i386_gendis + $$OUT_PWD/../i386_gendis \ + $$OUT_PWD GENERATED_HEADERS += \ $$OUT_PWD/i386_dis.h \ diff --git a/3rdparty/elfutils/libcpu/i386_gendis/i386_gendis.pro b/3rdparty/elfutils/libcpu/i386_gendis/i386_gendis.pro index d4c3cb7..180afc4 100644 --- a/3rdparty/elfutils/libcpu/i386_gendis/i386_gendis.pro +++ b/3rdparty/elfutils/libcpu/i386_gendis/i386_gendis.pro @@ -1,7 +1,6 @@ TEMPLATE = app -CONFIG -= qt -LIBS += ../../libeu.a +LIBS += ../../lib/libeu.a QMAKE_CFLAGS += -Wno-unused-function include(../../elfutils.pri) diff --git a/3rdparty/elfutils/libcpu/x86_64/x86_64.pro b/3rdparty/elfutils/libcpu/x86_64/x86_64.pro index 481b0ab..9d5fdc9 100644 --- a/3rdparty/elfutils/libcpu/x86_64/x86_64.pro +++ b/3rdparty/elfutils/libcpu/x86_64/x86_64.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib TARGET = ../x86_64 -include(../../elfutils.pri) +include(../../static.pri) include(../../libasm/asmheaders.pri) include(../../libebl/eblheaders.pri) include(../cpuheaders.pri) @@ -18,7 +16,8 @@ SOURCES += \ $$PWD/../x86_64_disasm.c INCLUDEPATH += \ - $$OUT_PWD/../i386_gendis + $$OUT_PWD/../i386_gendis \ + $$OUT_PWD GENERATED_HEADERS += \ $$OUT_PWD/x86_64_dis.h \ diff --git a/3rdparty/elfutils/libdw/libdw.pro b/3rdparty/elfutils/libdw/libdw.pro index f31cc71..a98d133 100644 --- a/3rdparty/elfutils/libdw/libdw.pro +++ b/3rdparty/elfutils/libdw/libdw.pro @@ -1,11 +1,15 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../dw +TARGET = dw -include(../elfutils.pri) +include(../dynamic.pri) include(../libelf/elfheaders.pri) include(dwheaders.pri) +LIBS += \ + -Wl,--whole-archive \ + ../libebl.a ../libdwelf.a ../libdwfl.a \ + -Wl,--no-whole-archive \ + -lz -ldl -L$$DESTDIR -lelf + SOURCES += \ $$PWD/cfi.c \ $$PWD/cie.c \ diff --git a/3rdparty/elfutils/libdwelf/libdwelf.pro b/3rdparty/elfutils/libdwelf/libdwelf.pro index f3736a0..f53b121 100644 --- a/3rdparty/elfutils/libdwelf/libdwelf.pro +++ b/3rdparty/elfutils/libdwelf/libdwelf.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib TARGET = ../dwelf -include(../elfutils.pri) +include(../static.pri) include(dwelfheaders.pri) include(../libdw/dwheaders.pri) include(../libdwfl/dwflheaders.pri) diff --git a/3rdparty/elfutils/libdwfl/libdwfl.pro b/3rdparty/elfutils/libdwfl/libdwfl.pro index d3af0eb..f4986aa 100644 --- a/3rdparty/elfutils/libdwfl/libdwfl.pro +++ b/3rdparty/elfutils/libdwfl/libdwfl.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib TARGET = ../dwfl -include(../elfutils.pri) +include(../static.pri) include(dwflheaders.pri) include(../libdw/dwheaders.pri) include(../libebl/eblheaders.pri) diff --git a/3rdparty/elfutils/libebl/libebl.pro b/3rdparty/elfutils/libebl/libebl.pro index 5e855c5..c225659 100644 --- a/3rdparty/elfutils/libebl/libebl.pro +++ b/3rdparty/elfutils/libebl/libebl.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib TARGET = ../ebl -include(../elfutils.pri) +include(../static.pri) include(eblheaders.pri) SOURCES += \ diff --git a/3rdparty/elfutils/libelf/elf32/elf32.pro b/3rdparty/elfutils/libelf/elf32/elf32.pro index 3dcf8c0..f945fe0 100644 --- a/3rdparty/elfutils/libelf/elf32/elf32.pro +++ b/3rdparty/elfutils/libelf/elf32/elf32.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../../elf32 +TARGET = ../elf32 -include(../../elfutils.pri) +include(../../static.pri) include(../elfheaders.pri) SOURCES += \ diff --git a/3rdparty/elfutils/libelf/elf64/elf64.pro b/3rdparty/elfutils/libelf/elf64/elf64.pro index 021b53e..4739947 100644 --- a/3rdparty/elfutils/libelf/elf64/elf64.pro +++ b/3rdparty/elfutils/libelf/elf64/elf64.pro @@ -1,8 +1,6 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../../elf64 +TARGET = ../elf64 -include(../../elfutils.pri) +include(../../static.pri) include(../elfheaders.pri) SOURCES += \ diff --git a/3rdparty/elfutils/libelf/libelf.pro b/3rdparty/elfutils/libelf/libelf.pro index fc76549..42a3132 100644 --- a/3rdparty/elfutils/libelf/libelf.pro +++ b/3rdparty/elfutils/libelf/libelf.pro @@ -1,10 +1,10 @@ -TEMPLATE = lib -CONFIG += staticlib -TARGET = ../elf +TARGET = elf -include(../elfutils.pri) +include(../dynamic.pri) include(elfheaders.pri) +LIBS += -Wl,--whole-archive libelf32.a libelf64.a -Wl,--no-whole-archive + SOURCES += \ $$PWD/elf_begin.c \ $$PWD/elf_clone.c \ diff --git a/3rdparty/elfutils/static.pri b/3rdparty/elfutils/static.pri new file mode 100644 index 0000000..89a9a27 --- /dev/null +++ b/3rdparty/elfutils/static.pri @@ -0,0 +1,4 @@ +include(elfutils.pri) + +TEMPLATE = lib +CONFIG += staticlib diff --git a/app/app.pro b/app/app.pro index 36cca2f..551c2c3 100644 --- a/app/app.pro +++ b/app/app.pro @@ -4,27 +4,21 @@ # #------------------------------------------------- -QT += core network +QT = core network +CONFIG += c++11 console +CONFIG -= app_bundle -QT -= gui +include(../paths.pri) +RPATH = $$relative_path($$PERFPARSER_ELFUTILS_INSTALLDIR, $$PERFPARSER_APP_INSTALLDIR) -QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN/elfutils:\$\$ORIGIN/../lib/elfutils\' -LIBS += -Wl,--start-group \ - ../3rdparty/elfutils/libdw.a \ - ../3rdparty/elfutils/libdwfl.a \ - ../3rdparty/elfutils/libelf.a \ - ../3rdparty/elfutils/libelf32.a \ - ../3rdparty/elfutils/libelf64.a \ - ../3rdparty/elfutils/libebl.a \ - ../3rdparty/elfutils/libdwelf.a \ - -Wl,--end-group \ - -lz -ldl +QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,\$\$ORIGIN/$$RPATH\' +LIBS += -L$$PERFPARSER_ELFUTILS_DESTDIR -ldw -lelf -TARGET = ../perfparser -CONFIG += console c++11 -CONFIG -= app_bundle +DESTDIR = $$PERFPARSER_APP_DESTDIR +target.path = $$PERFPARSER_APP_INSTALLDIR +INSTALLS += target -TEMPLATE = app +TARGET = perfparser SOURCES += main.cpp \ perfattributes.cpp \ @@ -46,10 +40,6 @@ HEADERS += \ perfregisterinfo.h \ perfstdin.h -include(../3rdparty/elfutils/elfutils.pri) include(../3rdparty/elfutils/libdwfl/dwflheaders.pri) include(../3rdparty/elfutils/libebl/eblheaders.pri) include(../3rdparty/elfutils/libdwelf/dwelfheaders.pri) - -INSTALLS += target -target.path = /bin diff --git a/paths.pri b/paths.pri new file mode 100644 index 0000000..bea0566 --- /dev/null +++ b/paths.pri @@ -0,0 +1,15 @@ + +isEmpty(PERFPARSER_APP_DESTDIR): PERFPARSER_APP_DESTDIR = $$shadowed($$PWD)/bin +isEmpty(PERFPARSER_ELFUTILS_DESTDIR): PERFPARSER_ELFUTILS_DESTDIR = $$shadowed($$PWD)/lib +isEmpty(PERFPARSER_ELFUTILS_BACKENDS_DESTDIR) { + PERFPARSER_ELFUTILS_BACKENDS_DESTDIR = $$PERFPARSER_ELFUTILS_DESTDIR/elfutils +} + +isEmpty(PERFPARSER_INSTALLDIR_PREFIX): PERFPARSER_INSTALLDIR_PREFIX = /usr/local +isEmpty(PERFPARSER_APP_INSTALLDIR): PERFPARSER_APP_INSTALLDIR = $$PERFPARSER_INSTALLDIR_PREFIX/bin +isEmpty(PERFPARSER_ELFUTILS_INSTALLDIR) { + PERFPARSER_ELFUTILS_INSTALLDIR = $$PERFPARSER_INSTALLDIR_PREFIX/lib +} +isEmpty(PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR) { + PERFPARSER_ELFUTILS_BACKENDS_INSTALLDIR = $$PERFPARSER_ELFUTILS_INSTALLDIR/elfutils +} |