summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2016-05-13 17:00:44 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2016-05-26 14:42:49 +0000
commit0f0d91a384ce776fb016b0de227fb75bcca0d145 (patch)
tree683a4c3068c9a191d09cfb355f2a4fd12357daaf
parent4b261e478fdeda43cb3317f4166e8024b6fd4783 (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.qbs2
-rw-r--r--3rdparty/elfutils/backends/arm/arm.qbs4
-rw-r--r--3rdparty/elfutils/backends/x86_64/x86_64.qbs3
-rw-r--r--3rdparty/elfutils/libasm/libasm.qbs5
-rw-r--r--3rdparty/elfutils/libdw/libdw.qbs18
-rw-r--r--3rdparty/elfutils/libelf/libelf.qbs5
-rw-r--r--3rdparty/elfutils/qbs/imports/ElfUtilsBackend.qbs1
-rw-r--r--3rdparty/elfutils/qbs/imports/ElfUtilsDynamicLib.qbs13
-rw-r--r--3rdparty/elfutils/qbs/imports/ElfUtilsProduct.qbs1
-rw-r--r--3rdparty/elfutils/qbs/imports/ElfUtilsStaticLib.qbs1
-rw-r--r--app/app.qbs5
-rw-r--r--perfparser.qbs3
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",