qtbase: Add OE clang specific mkspecs

We can not piggy back clang anymore on existing
OE mkspecs since starting 5.9 the configure is
asking compiler for include paths and it needs to
know if platform is clang-linux or g++-linux

Fixes:
ERROR: failed to parse default search paths from compiler output

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Khem Raj
2017-09-03 11:10:34 -07:00
committed by Martin Jansa
parent 2684299620
commit 90d4a41621
4 changed files with 87 additions and 4 deletions

View File

@@ -1,6 +1,9 @@
# hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds
OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++"
OE_QMAKE_PLATFORM = "linux-oe-g++"
XPLATFORM_toolchain-clang = "linux-oe-clang"
XPLATFORM ?= "linux-oe-g++"
OE_QMAKE_PLATFORM_NATIVE = "${XPLATFORM}"
OE_QMAKE_PLATFORM = "${XPLATFORM}"
# Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe
OE_QMAKE_DEBUG_OUTPUT ?= ""

View File

@@ -38,10 +38,14 @@ SRC_URI += "\
# 5.9.meta-qt5-native.2
SRC_URI += " \
file://0009-Always-build-uic.patch \
file://0010-Add-OE-specific-specs-for-clang-compiler.patch \
"
CLEANBROKEN = "1"
XPLATFORM_toolchain-clang = "linux-oe-clang"
XPLATFORM ?= "linux-oe-g++"
PACKAGECONFIG_CONFARGS = " \
-sysroot ${STAGING_DIR_NATIVE} \
-no-gcc-sysroot \
@@ -79,7 +83,7 @@ PACKAGECONFIG_CONFARGS = " \
-nomake examples \
-nomake tests \
-no-rpath \
-platform linux-oe-g++ \
-platform ${XPLATFORM} \
"
# for qtbase configuration we need default settings

View File

@@ -0,0 +1,72 @@
From 3a46fb7b47d19c5261e1590f8d70fe41443def64 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 3 Sep 2017 09:11:44 -0700
Subject: [PATCH] Add OE specific specs for clang compiler
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
mkspecs/linux-oe-clang/qmake.conf | 43 ++++++++++++++++++++++++++++++++++
mkspecs/linux-oe-clang/qplatformdefs.h | 1 +
2 files changed, 44 insertions(+)
create mode 100644 mkspecs/linux-oe-clang/qmake.conf
create mode 100644 mkspecs/linux-oe-clang/qplatformdefs.h
diff --git a/mkspecs/linux-oe-clang/qmake.conf b/mkspecs/linux-oe-clang/qmake.conf
new file mode 100644
index 0000000000..ffc9f051db
--- /dev/null
+++ b/mkspecs/linux-oe-clang/qmake.conf
@@ -0,0 +1,43 @@
+#
+# qmake configuration for linux-g++ with modifications for building with OpenEmbedded
+#
+
+MAKEFILE_GENERATOR = UNIX
+CONFIG += incremental
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(../common/linux.conf)
+
+# QMAKE_<TOOL> (moc, uic, rcc) are gone, overwrite only ar and strip
+QMAKE_AR = $$(OE_QMAKE_AR) cqs
+QMAKE_STRIP = $$(OE_QMAKE_STRIP)
+QMAKE_WAYLAND_SCANNER = $$(OE_QMAKE_WAYLAND_SCANNER)
+
+include(../common/gcc-base-unix.conf)
+
+# *FLAGS from gcc-base.conf
+QMAKE_CFLAGS += $$(OE_QMAKE_CFLAGS)
+QMAKE_CXXFLAGS += $$(OE_QMAKE_CXXFLAGS)
+QMAKE_LFLAGS += $$(OE_QMAKE_LDFLAGS)
+
+include(../common/clang.conf)
+
+# tc settings from g++-base.conf
+QMAKE_COMPILER = $$(OE_QMAKE_COMPILER) clang
+QMAKE_CC = $$(OE_QMAKE_CC)
+QMAKE_CXX = $$(OE_QMAKE_CXX)
+
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(OE_QMAKE_CFLAGS)
+
+QMAKE_LINK = $$(OE_QMAKE_LINK)
+QMAKE_LINK_SHLIB = $$(OE_QMAKE_LINK)
+QMAKE_LINK_C = $$(OE_QMAKE_LINK)
+QMAKE_LINK_C_SHLIB = $$(OE_QMAKE_LINK)
+
+# for the SDK
+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $$(OE_QMAKE_QT_CONFIG)
+
+include(../oe-device-extra.pri)
+
+load(device_config)
+load(qt_config)
diff --git a/mkspecs/linux-oe-clang/qplatformdefs.h b/mkspecs/linux-oe-clang/qplatformdefs.h
new file mode 100644
index 0000000000..880c927b21
--- /dev/null
+++ b/mkspecs/linux-oe-clang/qplatformdefs.h
@@ -0,0 +1 @@
+#include "../linux-clang/qplatformdefs.h"
--
2.14.1

View File

@@ -26,6 +26,7 @@ SRC_URI += "\
file://0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch \
file://0007-Delete-qlonglong-and-qulonglong.patch \
file://0008-Replace-pthread_yield-with-sched_yield.patch \
file://0010-Add-OE-specific-specs-for-clang-compiler.patch \
file://run-ptest \
"
@@ -160,6 +161,9 @@ QT_CONFIG_FLAGS += " \
# since we cannot set empty set filename to a not existent file
deltask generate_qt_config_file
XPLATFORM_toolchain-clang = "linux-oe-clang"
XPLATFORM ?= "linux-oe-g++"
do_configure() {
# Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory" during configuration
touch ${S}/mkspecs/oe-device-extra.pri
@@ -188,7 +192,7 @@ do_configure() {
-external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \
-hostdatadir ${OE_QMAKE_PATH_HOST_DATA} \
-platform ${OE_QMAKE_PLATFORM_NATIVE} \
-xplatform linux-oe-g++ \
-xplatform ${XPLATFORM} \
${QT_CONFIG_FLAGS}
}