aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtbase/0009-Add-external-hostbindir-option-for-native-sdk.patch
blob: 683cf271926c408f13039a0a31ef8d79a1dadc6f (plain)
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
From 12d06b2c5857a1c9cac4c964f32a582d029e9dfa Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 6 Apr 2013 13:15:07 +0200
Subject: [PATCH 09/10] Add -external-hostbindir option for native(sdk)

* when cross-compiling it's sometimes useful to use existing tools from machine
  (or in OpenEmbedded built with separate native recipe) when building for target

* this way we can skip bootstraping tools we already have

* qt_functions: temporary remove isEmpty check
* now we assume that every build will provide QT_EXTERNAL_HOST_BINS value
* isEmpty works correctly only with qmake variables (e.g. $$FOO -
  isEmpty(FOO)), but doesn't work with system properties like $$[FOO].

* cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS to determine path to host binaries

Upstream-Status: Pending
  is a lot better for upstreaming (and it was already sort of approved by
  Oswald) but in 5.2.0 I've noticed that he added something similar for
  android builds

Change-Id: I4f6e634bf0b2cb96065ee5c38b9cd8a224c3bd37
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Simon Busch <morphis@gravedo.de>
Signed-off-by: Jonathan Liu <net147@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

Conflicts:
        tools/configure/configureapp.cpp
---
 configure                           |  1 +
 qmake/property.cpp                  |  1 +
 src/corelib/global/qlibraryinfo.cpp |  3 ++-
 src/corelib/global/qlibraryinfo.h   |  1 +
 tools/configure/configureapp.cpp    | 11 +++++++++++
 5 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index f0f42ab..04fd1ba 100755
--- a/configure
+++ b/configure
@@ -3846,6 +3846,7 @@ addConfStr "$CFG_SYSROOT"
 addConfStr "$QT_REL_HOST_BINS"
 addConfStr "$QT_REL_HOST_LIBS"
 addConfStr "$QT_REL_HOST_DATA"
+addConfStr "$QT_EXTERNAL_HOST_BINS"
 addConfStr "$shortxspec"
 addConfStr "$shortspec"
 
diff --git a/qmake/property.cpp b/qmake/property.cpp
index 817ae95..c69539f 100644
--- a/qmake/property.cpp
+++ b/qmake/property.cpp
@@ -68,6 +68,7 @@ static const struct {
     { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true },
     { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true },
     { "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true },
+    { "QT_EXTERNAL_HOST_BINS", QLibraryInfo::ExternalHostBinariesPath, true },
     { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true },
     { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true },
 };
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index c3b5c2d..1381658 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -373,7 +373,7 @@ QLibraryInfo::isDebugBuild()
  */
 
 static const struct {
-    char key[19], value[13];
+    char key[21], value[13];
 } qtConfEntries[] = {
     { "Prefix", "." },
     { "Documentation", "doc" }, // should be ${Data}/doc
@@ -398,6 +398,7 @@ static const struct {
     { "HostBinaries", "bin" },
     { "HostLibraries", "lib" },
     { "HostData", "." },
+    { "ExternalHostBinaries", "" },
     { "TargetSpec", "" },
     { "HostSpec", "" },
     { "HostPrefix", "" },
diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h
index 1ad7637..5a8b127 100644
--- a/src/corelib/global/qlibraryinfo.h
+++ b/src/corelib/global/qlibraryinfo.h
@@ -81,6 +81,7 @@ public:
         HostBinariesPath,
         HostLibrariesPath,
         HostDataPath,
+        ExternalHostBinariesPath,
         TargetSpecPath,
         HostSpecPath,
         HostPrefixPath,
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 3bf0546..53bf146 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1217,6 +1217,13 @@ void Configure::parseCmdLine()
             dictionary[ "QT_EXT_PREFIX" ] = configCmdLine.at(i);
         }
 
+        else if (configCmdLine.at(i) == "-external-hostbindir") {
+            ++i;
+            if (i == argCount)
+                break;
+            dictionary[ "QT_EXTERNAL_HOST_BINS" ] = configCmdLine.at(i);
+        }
+
         else if (configCmdLine.at(i) == "-make-tool") {
             ++i;
             if (i == argCount)
@@ -4101,6 +4108,9 @@ void Configure::generateQConfigCpp()
 
     if (dictionary["QT_REL_HOST_DATA"].isEmpty())
         dictionary["QT_REL_HOST_DATA"] = haveHpx ? "." : dictionary["QT_REL_INSTALL_ARCHDATA"];
+    
+    if (dictionary["QT_EXTERNAL_HOST_BINS"].isEmpty())
+        dictionary["QT_EXTERNAL_HOST_BINS"] = haveHpx ? "bin" : dictionary["QT_REL_INSTALL_BINS"];
 
     confStringOff = 0;
     addConfStr(0, dictionary["QT_REL_INSTALL_DOCS"]);
@@ -4120,6 +4130,7 @@ void Configure::generateQConfigCpp()
     addConfStr(1, dictionary["QT_REL_HOST_BINS"]);
     addConfStr(1, dictionary["QT_REL_HOST_LIBS"]);
     addConfStr(1, dictionary["QT_REL_HOST_DATA"]);
+    addConfStr(1, dictionary["QT_EXTERNAL_HOST_BINS"]);
     addConfStr(1, targSpec);
     addConfStr(1, hostSpec);
 
-- 
2.6.1