diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2016-05-13 17:00:44 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2016-05-26 14:42:49 +0000 |
commit | 0f0d91a384ce776fb016b0de227fb75bcca0d145 (patch) | |
tree | 683a4c3068c9a191d09cfb355f2a4fd12357daaf | |
parent | 4b261e478fdeda43cb3317f4166e8024b6fd4783 (diff) |
Un-break and re-enable elfutils qbs build.
Change-Id: Id9efe92074ab48aa39e893f2bef4c06f0dc929a0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r-- | 3rdparty/elfutils/backends/aarch64/aarch64.qbs | 2 | ||||
-rw-r--r-- | 3rdparty/elfutils/backends/arm/arm.qbs | 4 | ||||
-rw-r--r-- | 3rdparty/elfutils/backends/x86_64/x86_64.qbs | 3 | ||||
-rw-r--r-- | 3rdparty/elfutils/libasm/libasm.qbs | 5 | ||||
-rw-r--r-- | 3rdparty/elfutils/libdw/libdw.qbs | 18 | ||||
-rw-r--r-- | 3rdparty/elfutils/libelf/libelf.qbs | 5 | ||||
-rw-r--r-- | 3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs | 1 | ||||
-rw-r--r-- | 3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs | 13 | ||||
-rw-r--r-- | 3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs | 1 | ||||
-rw-r--r-- | 3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs | 1 | ||||
-rw-r--r-- | app/app.qbs | 5 | ||||
-rw-r--r-- | perfparser.qbs | 3 |
12 files changed, 53 insertions, 8 deletions
diff --git a/3rdparty/elfutils/backends/aarch64/aarch64.qbs b/3rdparty/elfutils/backends/aarch64/aarch64.qbs index dbf7a4f..cbf7e0c 100644 --- a/3rdparty/elfutils/backends/aarch64/aarch64.qbs +++ b/3rdparty/elfutils/backends/aarch64/aarch64.qbs @@ -2,5 +2,5 @@ import qbs ElfUtilsBackend { arch: "aarch64" - additionalSources: ["cfi.c", "corenote.c", "initreg.c", "regs.c"] + additionalSources: ["cfi.c", "corenote.c", "initreg.c", "regs.c", "unwind.c"] } diff --git a/3rdparty/elfutils/backends/arm/arm.qbs b/3rdparty/elfutils/backends/arm/arm.qbs index be47045..a7917ce 100644 --- a/3rdparty/elfutils/backends/arm/arm.qbs +++ b/3rdparty/elfutils/backends/arm/arm.qbs @@ -2,5 +2,7 @@ import qbs ElfUtilsBackend { arch: "arm" - additionalSources: ["attrs.c", "auxv.c", "cfi.c", "corenote.c", "initreg.c", "regs.c"] + additionalSources: [ + "attrs.c", "auxv.c", "cfi.c", "corenote.c", "initreg.c", "regs.c", "unwind.c" + ] } diff --git a/3rdparty/elfutils/backends/x86_64/x86_64.qbs b/3rdparty/elfutils/backends/x86_64/x86_64.qbs index 2208188..157ed9c 100644 --- a/3rdparty/elfutils/backends/x86_64/x86_64.qbs +++ b/3rdparty/elfutils/backends/x86_64/x86_64.qbs @@ -3,11 +3,12 @@ import qbs ElfUtilsBackend { arch: "x86_64" Depends { name: "x86_64 disasm" } - additionalSources: ["cfi.c", "corenote.c", "initreg.c", "regs.c", "syscall.c"] + additionalSources: ["cfi.c", "corenote.c", "initreg.c", "regs.c", "syscall.c", "unwind.c"] Group { name: "more sources" prefix: "../" files: [ + "x32_corenote.c", "i386_auxv.c", ] } diff --git a/3rdparty/elfutils/libasm/libasm.qbs b/3rdparty/elfutils/libasm/libasm.qbs index f1bae5c..eefe7d5 100644 --- a/3rdparty/elfutils/libasm/libasm.qbs +++ b/3rdparty/elfutils/libasm/libasm.qbs @@ -1,7 +1,10 @@ import qbs -ElfUtilsStaticLib { +ElfUtilsDynamicLib { name: "asm" + Depends { name: "ebl" } + Depends { name: "elf" } + cpp.allowUnresolvedSymbols: true files: [ "asm_abort.c", "asm_addint8.c", diff --git a/3rdparty/elfutils/libdw/libdw.qbs b/3rdparty/elfutils/libdw/libdw.qbs index 2d16ba5..1ec0981 100644 --- a/3rdparty/elfutils/libdw/libdw.qbs +++ b/3rdparty/elfutils/libdw/libdw.qbs @@ -1,7 +1,23 @@ import qbs -ElfUtilsStaticLib { +ElfUtilsDynamicLib { name: "dw" + Depends { name: "ebl" } + Depends { name: "dwfl" } + Depends { name: "elf" } + cpp.dynamicLibraries: base.concat(["dl", "z"]) + + // Workaround for broken dependencies + cpp.linkerFlags: base.concat([ + "-L" + project.buildDirectory + "/elfutils", + "-Wl,--whole-archive", "-lebl", "-ldwelf", "-ldwfl", "-Wl,--no-whole-archive" + ]) + + Export { + Depends { name: "cpp" } + cpp.includePaths: base.concat(".") + } + files: [ "cfi.c", "cfi.h", diff --git a/3rdparty/elfutils/libelf/libelf.qbs b/3rdparty/elfutils/libelf/libelf.qbs index 6ef6aa2..b60bb21 100644 --- a/3rdparty/elfutils/libelf/libelf.qbs +++ b/3rdparty/elfutils/libelf/libelf.qbs @@ -1,7 +1,10 @@ import qbs -ElfUtilsStaticLib { +ElfUtilsDynamicLib { name: "elf" + Depends { name: "elf32" } + Depends { name: "elf64" } + files: [ "abstract.h", "common.h", diff --git a/3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs b/3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs index 2ab79e7..56385c7 100644 --- a/3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs +++ b/3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs @@ -4,6 +4,7 @@ import qbs.FileInfo ElfUtilsDynamicLib { property string arch name: "ebl_" + arch + isBackend: true property stringList additionalSources: [] property string backendDir: FileInfo.joinPaths(product.sourceDirectory, "..") Depends { name: "dw" } diff --git a/3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs b/3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs index 05b94db..083a581 100644 --- a/3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs +++ b/3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs @@ -1,5 +1,16 @@ import qbs ElfUtilsProduct { - type: ["dynamiclibrary"] + type: ["dynamiclibrary", "dynamiclibrary_symlink"] + property bool isBackend: false + + Group { + fileTagsFilter: product.type + qbs.install: true + qbs.installDir: project.ide_library_path + (isBackend ? "/elfutils" : "") + } + cpp.rpaths: [ + "$ORIGIN/", + isBackend ? "$ORIGIN/../" : "$ORIGIN/elfutils/", + ] } diff --git a/3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs b/3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs index 9485b59..8f5c4df 100644 --- a/3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs +++ b/3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs @@ -2,6 +2,7 @@ import qbs import qbs.FileInfo Product { + destinationDirectory: project.buildDirectory + "/elfutils" Depends { name: "cpp" } version: "0.163" cpp.cFlags: ["-std=gnu99"] diff --git a/3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs b/3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs index b3a9d86..d40f117 100644 --- a/3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs +++ b/3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs @@ -2,6 +2,7 @@ import qbs ElfUtilsProduct { type: ["staticlibrary"] + cpp.positionIndependentCode: true Export { Depends { name: "cpp" } diff --git a/app/app.qbs b/app/app.qbs index ae25e71..58d4c5a 100644 --- a/app/app.qbs +++ b/app/app.qbs @@ -1,4 +1,5 @@ import qbs +import qbs.FileInfo QtcTool { name: "perfparser" @@ -20,6 +21,10 @@ QtcTool { } cpp.allowUnresolvedSymbols: true + cpp.rpaths: [ + "$ORIGIN/" + FileInfo.relativePath('/' + project.ide_libexec_path, + '/' + project.ide_library_path) + '/', + ] files: [ "main.cpp", diff --git a/perfparser.qbs b/perfparser.qbs index 6b3e9f3..b2b2412 100644 --- a/perfparser.qbs +++ b/perfparser.qbs @@ -4,7 +4,8 @@ Project { name: "Perf Parser" condition: qbs.targetOS.contains("linux") - property bool useSystemElfUtils: true + property bool useSystemElfUtils: !qbs.toolchain.contains("gcc") + || qbs.toolchain.contains("clang") references: [ "3rdparty/elfutils", |