1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
From b6d708efc205f2ffc0280e2da94596384bd98049 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 27 Apr 2013 23:15:37 +0200
Subject: [PATCH 04/10] qt_module: Fix pkgconfig and libtool replacements
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* in situation like this:
QT_SYSROOT:/OE/oe-core/tmp-eglibc/sysroots/qemuarm
QT_INSTALL_LIBS:/OE/oe-core/tmp-eglibc/sysroots/qemuarm/usr/lib
QT_INSTALL_LIBS/raw:/usr/lib
QT_INSTALL_LIBS/get:/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib
I don't want the replacement like this:
sed
-e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/include,/usr/include/qt5,g"
-e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib,/usr/lib,g"
"../../lib/pkgconfig/Qt5Core.pc"
>"/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/image/OE/oe-core/tmp-eglibc/sysroots/qemuarm/usr/lib/pkgconfig/Qt5Core.pc"
because that way I'll end with -L/usr/lib in .pc file which is
cross-compile unfriendly, keeping ${libdir}/${includedir} works better
in my case
* qt_module: Fix paths in .prl files
* qmake does not prefix them with QT_SYSROOT when using them
so e.g. when building qtdeclarative we get -L/usr/lib to LINKAGE
variable, which is unsafe for cross-compilation
* writting QT_SYSROOT in .prl files is dangerous for sstate when
builds are in different directories, so we need
SSTATE_SCAN_FILES += "*.pri *.prl"
to make them relocateble
* fix paths in packageconfig files
This reverts parts of:
enable path replacement in installed prl files on all platforms
Task-number: QTBUG-33794
Change-Id: Id0d38715673b8a1c0c034e9c15783eb255c4315b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* to debug this, rebuild qtbase and read build/src/corelib/Makefile
* this is example of broken install_target rule (added line feeds):
-$(SED) -e s,/OE/5.3.1-r0/build/lib,/usr/lib,g
-e 's,/OE/5.3.1-r0/build/include,$$\{includedir},g'
-e 's,/OE/5.3.1-r0/build/lib,$$\{libdir},g'
"../../lib/pkgconfig/Qt5Core.pc"
>"$(INSTALL_ROOT)/usr/lib/pkgconfig/Qt5Core.pc"
change .prf files, create copy of WORKDIR, re-excecute only
do_configure task and compare generated Makefile, repeat until
replace in generated Makefile works ok, then refresh patch and
try complete rebuild for qtbase
* if everything is ok, then try:
image $ grep -R "\-L/usr" .
image $ grep -R "\-I/usr" .
and it should return only few cases of
qmake.conf:QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
for aix* platformas
Change-Id: Ie1c94b15f2a4e736b65b4d0924d99eb2a7d92a6c
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
---
mkspecs/features/qt_common.prf | 2 +-
mkspecs/features/qt_module.prf | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index 55f65b5..2412fdd 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -36,7 +36,7 @@ contains(TEMPLATE, .*lib) {
lib_replace.replace =
} else {
lib_replace.match = $$rplbase/lib
- lib_replace.replace = $$qqt_libdir
+ lib_replace.replace = "\$$\\{libdir}"
}
lib_replace.CONFIG = path
QMAKE_PRL_INSTALL_REPLACE += lib_replace
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
index c89b6d2..23d4366 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
@@ -214,6 +214,11 @@ unix|mingw {
pclib_replace.CONFIG = path
QMAKE_PKGCONFIG_INSTALL_REPLACE += pclib_replace
+ pkgconfig_include_replace.match = $$rplbase/include
+ pkgconfig_include_replace.replace = "\$$\\{includedir}"
+ pkgconfig_include_replace.CONFIG = path
+ QMAKE_PKGCONFIG_INSTALL_REPLACE += pkgconfig_include_replace
+
unix {
CONFIG += create_libtool explicitlib
host_build: \
@@ -225,6 +230,11 @@ unix|mingw {
ltlib_replace.replace = $$QMAKE_LIBTOOL_LIBDIR
ltlib_replace.CONFIG = path
QMAKE_LIBTOOL_INSTALL_REPLACE += ltlib_replace
+ # drop -L/usr/lib in .prl files
+ prl_replace.match = "-L\$${libdir}"
+ prl_replace.replace = ""
+ prl_replace.CONFIG = path
+ QMAKE_PRL_INSTALL_REPLACE += prl_replace
}
}
--
2.6.1
|