* [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables
@ 2013-11-14 13:40 Fatih Aşıcı
2013-11-14 13:40 ` [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled Fatih Aşıcı
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Fatih Aşıcı @ 2013-11-14 13:40 UTC (permalink / raw)
To: buildroot
In additon to the simplification of code, this change is a preparation
to solve problems occurring when QMAKE_CXX is prepended with ccache path.
Upstream patch is needed by configure to parse device options correctly.
Signed-off-by: Fatih A??c? <fatih.asici@gmail.com>
---
.../qt5/qt5base/qt5base-0002-mkspecs-files.patch | 39 ++--------------------
...igure-Parse-device-option-value-correctly.patch | 36 ++++++++++++++++++++
package/qt5/qt5base/qt5base.mk | 18 +++-------
3 files changed, 43 insertions(+), 50 deletions(-)
create mode 100644 package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch
diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch
index e406cfc..3fddeac 100644
--- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch
+++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch
@@ -14,50 +14,17 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf
===================================================================
--- /dev/null
+++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf
-@@ -0,0 +1,44 @@
-+MAKEFILE_GENERATOR = UNIX
-+CONFIG += incremental gdb_dwarf_index
-+QMAKE_INCREMENTAL_STYLE = sublib
-+
-+include(../../common/linux.conf)
-+include(../../common/gcc-base-unix.conf)
-+include(../../common/g++-unix.conf)
-+
-+load(device_config)
-+
-+QT_QPA_DEFAULT_PLATFORM = eglfs
-+
-+BUILDROOT_CROSS_COMPILE =
-+BUILDROOT_COMPILER_CFLAGS =
-+BUILDROOT_COMPILER_CXXFLAGS =
-+BUILDROOT_INCLUDE_PATH =
-+
-+# modifications to g++.conf
-+QMAKE_CC = $${BUILDROOT_CROSS_COMPILE}gcc
-+QMAKE_CXX = $${BUILDROOT_CROSS_COMPILE}g++
-+QMAKE_LINK = $${QMAKE_CXX}
-+QMAKE_LINK_SHLIB = $${QMAKE_CXX}
-+
-+# modifications to linux.conf
-+QMAKE_AR = $${BUILDROOT_CROSS_COMPILE}ar cqs
-+QMAKE_OBJCOPY = $${BUILDROOT_CROSS_COMPILE}objcopy
-+QMAKE_NM = $${BUILDROOT_CROSS_COMPILE}nm -P
-+QMAKE_STRIP = $${BUILDROOT_CROSS_COMPILE}strip
+@@ -0,0 +1,11 @@
++include(../common/linux_device_pre.conf)
+
+#modifications to gcc-base.conf
+QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS}
+QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS}
+QMAKE_CXXFLAGS_RELEASE += -O3
-+INCLUDEPATH += $${BUILDROOT_INCLUDE_PATH}
+
+QMAKE_LIBS += -lrt -lpthread -ldl
+
-+# device specific glue code
-+EGLFS_PLATFORM_HOOKS_SOURCES =
-+
-+# Sanity check
-+deviceSanityCheckCompiler()
-+
++include(../common/linux_device_post.conf)
+load(qt_config)
Index: b/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h
===================================================================
diff --git a/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch
new file mode 100644
index 0000000..7eb9229
--- /dev/null
+++ b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch
@@ -0,0 +1,36 @@
+From 4723f3fd04edf1aad6750ca91fd4648216d8b408 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= <fatih.asici@gmail.com>
+Date: Sat, 21 Sep 2013 00:14:39 +0300
+Subject: [PATCH] configure: Parse -device-option value correctly
+
+The regular expression does not parse correctly when a device option value
+contains the character '=' (e.g. QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64").
+
+In order to break string at the first equal sign and to simplify code,
+use "cut" command as in other places in configure script.
+
+Task-number: QTBUG-33584
+Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
+---
+ configure | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 64568dd..388899e 100755
+--- a/configure
++++ b/configure
+@@ -1609,8 +1609,8 @@ while [ "$#" -gt 0 ]; do
+ [ "$XPLATFORM" = "undefined" ] && exit 101
+ ;;
+ device-option)
+- DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"`
+- DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"`
++ DEV_VAR=`echo $VAL | cut -d '=' -f 1`
++ DEV_VAL=`echo $VAL | cut -d '=' -f 2-`
+ DeviceVar set $DEV_VAR "$DEV_VAL"
+ ;;
+ qpa)
+--
+1.8.4.rc3
+
diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk
index ce78d31..febdc9b 100644
--- a/package/qt5/qt5base/qt5base.mk
+++ b/package/qt5/qt5base/qt5base.mk
@@ -152,21 +152,7 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport
QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus
-# Ideally, we could use -device-option to substitute variable values
-# in our linux-buildroot-g++/qmake.config, but this mechanism doesn't
-# nicely support variable values that contain spaces. So we use the
-# good old sed solution here.
-define QT5BASE_CONFIG_SET
- $(SED) 's%^$(1).*%$(1) = $(2)%g' $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf
-endef
-
define QT5BASE_CONFIGURE_CMDS
- $(call QT5BASE_CONFIG_SET,BUILDROOT_CROSS_COMPILE,$(TARGET_CROSS))
- $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CFLAGS,$(TARGET_CFLAGS))
- $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CXXFLAGS,$(TARGET_CXXFLAGS))
- $(call QT5BASE_CONFIG_SET,BUILDROOT_INCLUDE_PATH,$(STAGING_DIR)/usr/include)
- $(call QT5BASE_CONFIG_SET,EGLFS_PLATFORM_HOOKS_SOURCES, \
- $(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES))
(cd $(@D); \
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \
@@ -181,6 +167,10 @@ define QT5BASE_CONFIGURE_CMDS
-no-rpath \
-nomake examples -nomake tests \
-device buildroot \
+ -device-option CROSS_COMPILE="$(TARGET_CROSS)" \
+ -device-option BUILDROOT_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \
+ -device-option BUILDROOT_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \
+ -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \
-no-c++11 \
$(QT5BASE_CONFIGURE_OPTS) \
)
--
1.8.4.rc3
^ permalink raw reply related [flat|nested] 10+ messages in thread* [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled 2013-11-14 13:40 [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Fatih Aşıcı @ 2013-11-14 13:40 ` Fatih Aşıcı 2013-11-28 22:11 ` Peter Korsgaard 2013-11-18 22:41 ` [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Arnout Vandecappelle 2013-11-20 12:17 ` [Buildroot] [PATCH v2] " Fatih Aşıcı 2 siblings, 1 reply; 10+ messages in thread From: Fatih Aşıcı @ 2013-11-14 13:40 UTC (permalink / raw) To: buildroot For now, it doesn't use ccache when compiling host tools (e.g. qmake). It seems the fix is not trivial. Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> --- package/qt5/qt5base/qt5base-0002-mkspecs-files.patch | 6 +++++- package/qt5/qt5base/qt5base.mk | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch index 3fddeac..6fa8a92 100644 --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch @@ -14,9 +14,13 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf =================================================================== --- /dev/null +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf -@@ -0,0 +1,11 @@ +@@ -0,0 +1,15 @@ +include(../common/linux_device_pre.conf) + ++# modifications to g++.conf ++QMAKE_CC = $${BUILDROOT_CCACHE} $${QMAKE_CC} ++QMAKE_CXX = $${BUILDROOT_CCACHE} $${QMAKE_CXX} ++ +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index febdc9b..a1d5dba 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -168,6 +168,7 @@ define QT5BASE_CONFIGURE_CMDS -nomake examples -nomake tests \ -device buildroot \ -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ + -device-option BUILDROOT_CCACHE="$(CCACHE)" \ -device-option BUILDROOT_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \ -device-option BUILDROOT_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \ -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \ -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled 2013-11-14 13:40 ` [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled Fatih Aşıcı @ 2013-11-28 22:11 ` Peter Korsgaard 2013-11-29 7:10 ` Fatih Aşıcı 0 siblings, 1 reply; 10+ messages in thread From: Peter Korsgaard @ 2013-11-28 22:11 UTC (permalink / raw) To: buildroot >>>>> "Fatih" == Fatih A??c? <fatih.asici@gmail.com> writes: > For now, it doesn't use ccache when compiling host tools (e.g. qmake). > It seems the fix is not trivial. > Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> > --- > package/qt5/qt5base/qt5base-0002-mkspecs-files.patch | 6 +++++- > package/qt5/qt5base/qt5base.mk | 1 + > 2 files changed, 6 insertions(+), 1 deletion(-) > diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > index 3fddeac..6fa8a92 100644 > --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > @@ -14,9 +14,13 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf > =================================================================== > --- /dev/null > +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf > -@@ -0,0 +1,11 @@ > +@@ -0,0 +1,15 @@ > +include(../common/linux_device_pre.conf) > + > ++# modifications to g++.conf > ++QMAKE_CC = $${BUILDROOT_CCACHE} $${QMAKE_CC} > ++QMAKE_CXX = $${BUILDROOT_CCACHE} $${QMAKE_CXX} > ++ > +#modifications to gcc-base.conf > +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} > +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} > diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk > index febdc9b..a1d5dba 100644 > --- a/package/qt5/qt5base/qt5base.mk > +++ b/package/qt5/qt5base/qt5base.mk > @@ -168,6 +168,7 @@ define QT5BASE_CONFIGURE_CMDS > -nomake examples -nomake tests \ > -device buildroot \ > -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ > + -device-option BUILDROOT_CCACHE="$(CCACHE)" \ Can't we just pass it in CROSS_COMPILE? -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled 2013-11-28 22:11 ` Peter Korsgaard @ 2013-11-29 7:10 ` Fatih Aşıcı 2013-11-29 8:14 ` Peter Korsgaard 0 siblings, 1 reply; 10+ messages in thread From: Fatih Aşıcı @ 2013-11-29 7:10 UTC (permalink / raw) To: buildroot On Friday 29 November 2013 00:11:35 Peter Korsgaard wrote: > > --- /dev/null > > +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf > > > > -@@ -0,0 +1,11 @@ > > +@@ -0,0 +1,15 @@ > > > > +include(../common/linux_device_pre.conf) > > + > > > > ++# modifications to g++.conf > > ++QMAKE_CC = $${BUILDROOT_CCACHE} $${QMAKE_CC} > > ++QMAKE_CXX = $${BUILDROOT_CCACHE} $${QMAKE_CXX} > > ++ > > > > +#modifications to gcc-base.conf > > +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} > > +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} > > > > diff --git a/package/qt5/qt5base/qt5base.mk > > b/package/qt5/qt5base/qt5base.mk index febdc9b..a1d5dba 100644 > > --- a/package/qt5/qt5base/qt5base.mk > > +++ b/package/qt5/qt5base/qt5base.mk > > @@ -168,6 +168,7 @@ define QT5BASE_CONFIGURE_CMDS > > > > -nomake examples -nomake tests \ > > -device buildroot \ > > -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ > > > > + -device-option BUILDROOT_CCACHE="$(CCACHE)" \ > > Can't we just pass it in CROSS_COMPILE? No. linux_device_pre.conf uses CROSS_COMPILE for other tools, too (ar, objcopy, ...). # modifications to g++-unix.conf QMAKE_CC = $${CROSS_COMPILE}gcc QMAKE_CXX = $${CROSS_COMPILE}g++ QMAKE_LINK = $${QMAKE_CXX} QMAKE_LINK_SHLIB = $${QMAKE_CXX} # modifications to linux.conf QMAKE_AR = $${CROSS_COMPILE}ar cqs QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20131129/258754f8/attachment.html> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled 2013-11-29 7:10 ` Fatih Aşıcı @ 2013-11-29 8:14 ` Peter Korsgaard 2013-11-29 8:26 ` Fatih Aşıcı 0 siblings, 1 reply; 10+ messages in thread From: Peter Korsgaard @ 2013-11-29 8:14 UTC (permalink / raw) To: buildroot >>>>> "Fatih" == Fatih A??c? <fatih.asici@gmail.com> writes: Hi, >> > + -device-option BUILDROOT_CCACHE="$(CCACHE)" \ >> Can't we just pass it in CROSS_COMPILE? >> No. linux_device_pre.conf uses CROSS_COMPILE for other tools, too (ar, objcopy, Yes, but ccache then just becomes a NOOP - E.G: ./output/host/usr/bin/ccache ./output/host/usr/bin/arm-linux-objdump -v GNU objdump (GNU Binutils) 2.21.1 Copyright 2011 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. We do the same for E.G. the Linux kernel and other packages using CROSS_COMPILE: git grep 'CCACHE.*TARGET_CROSS' boot/barebox/barebox.mk:BAREBOX_MAKE_FLAGS = ARCH=$(BAREBOX_ARCH) CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk: CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ boot/uboot/uboot.mk: CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ linux/linux.mk: CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ package/freescale-imx/imx-lib/imx-lib.mk: CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ package/libebml/libebml.mk: $(MAKE) -C $(@D)/make/linux CROSS="$(CCACHE) $(TARGET_CROSS)" package/libmatroska/libmatroska.mk: $(MAKE) -C $(@D)/make/linux CROSS="$(CCACHE) $(TARGET_CROSS)" -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled 2013-11-29 8:14 ` Peter Korsgaard @ 2013-11-29 8:26 ` Fatih Aşıcı 0 siblings, 0 replies; 10+ messages in thread From: Fatih Aşıcı @ 2013-11-29 8:26 UTC (permalink / raw) To: buildroot On Friday 29 November 2013 10:14:34 Peter Korsgaard wrote: > >>>>> "Fatih" == Fatih A??c? <fatih.asici@gmail.com> writes: > Hi, > > >> > + -device-option BUILDROOT_CCACHE="$(CCACHE)" \ > >> > >> Can't we just pass it in CROSS_COMPILE? > >> > >> No. linux_device_pre.conf uses CROSS_COMPILE for other tools, too (ar, > >> objcopy, > > Yes, but ccache then just becomes a NOOP - E.G: I did not know this. Will send a new patch if it works. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20131129/cc2a009c/attachment.html> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables 2013-11-14 13:40 [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Fatih Aşıcı 2013-11-14 13:40 ` [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled Fatih Aşıcı @ 2013-11-18 22:41 ` Arnout Vandecappelle 2013-11-20 12:22 ` Fatih Aşıcı 2013-11-20 12:17 ` [Buildroot] [PATCH v2] " Fatih Aşıcı 2 siblings, 1 reply; 10+ messages in thread From: Arnout Vandecappelle @ 2013-11-18 22:41 UTC (permalink / raw) To: buildroot On 14/11/13 14:40, Fatih A??c? wrote: > In additon to the simplification of code, this change is a preparation > to solve problems occurring when QMAKE_CXX is prepended with ccache path. Please also mention that you replace part of our custom qmake.conf with linux_device_pre.conf. > > Upstream patch is needed by configure to parse device options correctly. > > Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> > --- > .../qt5/qt5base/qt5base-0002-mkspecs-files.patch | 39 ++-------------------- > ...igure-Parse-device-option-value-correctly.patch | 36 ++++++++++++++++++++ > package/qt5/qt5base/qt5base.mk | 18 +++------- > 3 files changed, 43 insertions(+), 50 deletions(-) > create mode 100644 package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > > diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > index e406cfc..3fddeac 100644 > --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > @@ -14,50 +14,17 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf > =================================================================== > --- /dev/null > +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf > -@@ -0,0 +1,44 @@ > -+MAKEFILE_GENERATOR = UNIX > -+CONFIG += incremental gdb_dwarf_index > -+QMAKE_INCREMENTAL_STYLE = sublib > -+ > -+include(../../common/linux.conf) > -+include(../../common/gcc-base-unix.conf) > -+include(../../common/g++-unix.conf) > -+ > -+load(device_config) > -+ > -+QT_QPA_DEFAULT_PLATFORM = eglfs > -+ > -+BUILDROOT_CROSS_COMPILE = > -+BUILDROOT_COMPILER_CFLAGS = > -+BUILDROOT_COMPILER_CXXFLAGS = > -+BUILDROOT_INCLUDE_PATH = > -+ > -+# modifications to g++.conf > -+QMAKE_CC = $${BUILDROOT_CROSS_COMPILE}gcc > -+QMAKE_CXX = $${BUILDROOT_CROSS_COMPILE}g++ > -+QMAKE_LINK = $${QMAKE_CXX} > -+QMAKE_LINK_SHLIB = $${QMAKE_CXX} > -+ > -+# modifications to linux.conf > -+QMAKE_AR = $${BUILDROOT_CROSS_COMPILE}ar cqs > -+QMAKE_OBJCOPY = $${BUILDROOT_CROSS_COMPILE}objcopy > -+QMAKE_NM = $${BUILDROOT_CROSS_COMPILE}nm -P > -+QMAKE_STRIP = $${BUILDROOT_CROSS_COMPILE}strip > +@@ -0,0 +1,11 @@ > ++include(../common/linux_device_pre.conf) > + > +#modifications to gcc-base.conf > +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} > +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} > +QMAKE_CXXFLAGS_RELEASE += -O3 > -+INCLUDEPATH += $${BUILDROOT_INCLUDE_PATH} I guess this is indeed redundant, since it just adds $(STAGING_DIR)/usr/include which is unnecessary. But you should at least mention this explicitly in the commit message. > + > +QMAKE_LIBS += -lrt -lpthread -ldl > + > -+# device specific glue code > -+EGLFS_PLATFORM_HOOKS_SOURCES = > -+ > -+# Sanity check > -+deviceSanityCheckCompiler() > -+ > ++include(../common/linux_device_post.conf) Unfortunately, linux_device_post.conf is broken. It contains: contains(DISTRO_OPTS, hard-float) { COMPILER_FLAGS += -mfloat-abi=hard } else { COMPILER_FLAGS += -mfloat-abi=softfp } It seems this file is ARM-specific, and it's only used by imx6, raspberrypi and tegra2. Note that linux_device_pre.conf is also only used by these three, but that one looks generic enough :-) So I propose that you leave the last part as it was. > +load(qt_config) > Index: b/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h > =================================================================== > diff --git a/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > new file mode 100644 > index 0000000..7eb9229 > --- /dev/null > +++ b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > @@ -0,0 +1,36 @@ > +From 4723f3fd04edf1aad6750ca91fd4648216d8b408 Mon Sep 17 00:00:00 2001 > +From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= <fatih.asici@gmail.com> > +Date: Sat, 21 Sep 2013 00:14:39 +0300 > +Subject: [PATCH] configure: Parse -device-option value correctly > + > +The regular expression does not parse correctly when a device option value > +contains the character '=' (e.g. QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64"). > + > +In order to break string at the first equal sign and to simplify code, > +use "cut" command as in other places in configure script. > + > +Task-number: QTBUG-33584 > +Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6 > +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> You should still add your own Signed-off-by, even if this is not required by upstream. Regards, Arnout > +--- > + configure | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/configure b/configure > +index 64568dd..388899e 100755 > +--- a/configure > ++++ b/configure > +@@ -1609,8 +1609,8 @@ while [ "$#" -gt 0 ]; do > + [ "$XPLATFORM" = "undefined" ] && exit 101 > + ;; > + device-option) > +- DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"` > +- DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"` > ++ DEV_VAR=`echo $VAL | cut -d '=' -f 1` > ++ DEV_VAL=`echo $VAL | cut -d '=' -f 2-` > + DeviceVar set $DEV_VAR "$DEV_VAL" > + ;; > + qpa) > +-- > +1.8.4.rc3 > + > diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk > index ce78d31..febdc9b 100644 > --- a/package/qt5/qt5base/qt5base.mk > +++ b/package/qt5/qt5base/qt5base.mk > @@ -152,21 +152,7 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport > > QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus > > -# Ideally, we could use -device-option to substitute variable values > -# in our linux-buildroot-g++/qmake.config, but this mechanism doesn't > -# nicely support variable values that contain spaces. So we use the > -# good old sed solution here. > -define QT5BASE_CONFIG_SET > - $(SED) 's%^$(1).*%$(1) = $(2)%g' $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf > -endef > - > define QT5BASE_CONFIGURE_CMDS > - $(call QT5BASE_CONFIG_SET,BUILDROOT_CROSS_COMPILE,$(TARGET_CROSS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CFLAGS,$(TARGET_CFLAGS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CXXFLAGS,$(TARGET_CXXFLAGS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_INCLUDE_PATH,$(STAGING_DIR)/usr/include) > - $(call QT5BASE_CONFIG_SET,EGLFS_PLATFORM_HOOKS_SOURCES, \ > - $(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)) > (cd $(@D); \ > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ > @@ -181,6 +167,10 @@ define QT5BASE_CONFIGURE_CMDS > -no-rpath \ > -nomake examples -nomake tests \ > -device buildroot \ > + -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ > + -device-option BUILDROOT_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \ > + -device-option BUILDROOT_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \ > + -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \ > -no-c++11 \ > $(QT5BASE_CONFIGURE_OPTS) \ > ) > -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables 2013-11-18 22:41 ` [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Arnout Vandecappelle @ 2013-11-20 12:22 ` Fatih Aşıcı 0 siblings, 0 replies; 10+ messages in thread From: Fatih Aşıcı @ 2013-11-20 12:22 UTC (permalink / raw) To: buildroot On Tuesday 19 November 2013 00:41:01 Arnout Vandecappelle wrote: > On 14/11/13 14:40, Fatih A??c? wrote: > > In additon to the simplification of code, this change is a preparation > > to solve problems occurring when QMAKE_CXX is prepended with ccache path. > > Please also mention that you replace part of our custom qmake.conf with > linux_device_pre.conf. Done. > > Upstream patch is needed by configure to parse device options correctly. > > > > Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> > > --- > > > > .../qt5/qt5base/qt5base-0002-mkspecs-files.patch | 39 > > ++-------------------- > > ...igure-Parse-device-option-value-correctly.patch | 36 > > ++++++++++++++++++++ package/qt5/qt5base/qt5base.mk > > | 18 +++------- 3 files changed, 43 insertions(+), 50 deletions(-) > > create mode 100644 > > package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-c > > orrectly.patch > > > > diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > > b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch index > > e406cfc..3fddeac 100644 > > --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > > +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > > @@ -14,50 +14,17 @@ Index: > > b/mkspecs/devices/linux-buildroot-g++/qmake.conf > > > > =================================================================== > > --- /dev/null > > +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf > > > > -@@ -0,0 +1,44 @@ > > -+MAKEFILE_GENERATOR = UNIX > > -+CONFIG += incremental gdb_dwarf_index > > -+QMAKE_INCREMENTAL_STYLE = sublib > > -+ > > -+include(../../common/linux.conf) > > -+include(../../common/gcc-base-unix.conf) > > -+include(../../common/g++-unix.conf) > > -+ > > -+load(device_config) > > -+ > > -+QT_QPA_DEFAULT_PLATFORM = eglfs > > -+ > > -+BUILDROOT_CROSS_COMPILE = > > -+BUILDROOT_COMPILER_CFLAGS = > > -+BUILDROOT_COMPILER_CXXFLAGS = > > -+BUILDROOT_INCLUDE_PATH = > > -+ > > -+# modifications to g++.conf > > -+QMAKE_CC = $${BUILDROOT_CROSS_COMPILE}gcc > > -+QMAKE_CXX = $${BUILDROOT_CROSS_COMPILE}g++ > > -+QMAKE_LINK = $${QMAKE_CXX} > > -+QMAKE_LINK_SHLIB = $${QMAKE_CXX} > > -+ > > -+# modifications to linux.conf > > -+QMAKE_AR = $${BUILDROOT_CROSS_COMPILE}ar cqs > > -+QMAKE_OBJCOPY = $${BUILDROOT_CROSS_COMPILE}objcopy > > -+QMAKE_NM = $${BUILDROOT_CROSS_COMPILE}nm -P > > -+QMAKE_STRIP = $${BUILDROOT_CROSS_COMPILE}strip > > +@@ -0,0 +1,11 @@ > > ++include(../common/linux_device_pre.conf) > > > > + > > +#modifications to gcc-base.conf > > +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} > > +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} > > +QMAKE_CXXFLAGS_RELEASE += -O3 > > > > -+INCLUDEPATH += $${BUILDROOT_INCLUDE_PATH} > > I guess this is indeed redundant, since it just adds > $(STAGING_DIR)/usr/include which is unnecessary. But you should at least > mention this explicitly in the commit message. Done. > > + > > +QMAKE_LIBS += -lrt -lpthread -ldl > > + > > > > -+# device specific glue code > > -+EGLFS_PLATFORM_HOOKS_SOURCES = > > -+ > > -+# Sanity check > > -+deviceSanityCheckCompiler() > > -+ > > ++include(../common/linux_device_post.conf) > > Unfortunately, linux_device_post.conf is broken. It contains: > > contains(DISTRO_OPTS, hard-float) { > COMPILER_FLAGS += -mfloat-abi=hard > } else { > COMPILER_FLAGS += -mfloat-abi=softfp > } > > It seems this file is ARM-specific, and it's only used by imx6, > raspberrypi and tegra2. Note that linux_device_pre.conf is also only used > by these three, but that one looks generic enough :-) > > So I propose that you leave the last part as it was. Added an upstream patch which removes ARM specific parts. > > +load(qt_config) > > Index: b/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h > > =================================================================== > > > > diff --git > > a/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-c > > orrectly.patch > > b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-c > > orrectly.patch new file mode 100644 > > index 0000000..7eb9229 > > --- /dev/null > > +++ > > b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-c > > orrectly.patch @@ -0,0 +1,36 @@ > > +From 4723f3fd04edf1aad6750ca91fd4648216d8b408 Mon Sep 17 00:00:00 2001 > > +From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= <fatih.asici@gmail.com> > > +Date: Sat, 21 Sep 2013 00:14:39 +0300 > > +Subject: [PATCH] configure: Parse -device-option value correctly > > + > > +The regular expression does not parse correctly when a device option > > value +contains the character '=' (e.g. > > QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64"). + > > +In order to break string at the first equal sign and to simplify code, > > +use "cut" command as in other places in configure script. > > + > > +Task-number: QTBUG-33584 > > +Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6 > > +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> > > You should still add your own Signed-off-by, even if this is not > required by upstream. Done. Thanks for the review. I have sent v2 of the first patch. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH v2] qt5base: use -device-option to set mkspec variables 2013-11-14 13:40 [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Fatih Aşıcı 2013-11-14 13:40 ` [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled Fatih Aşıcı 2013-11-18 22:41 ` [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Arnout Vandecappelle @ 2013-11-20 12:17 ` Fatih Aşıcı 2013-11-20 22:18 ` Arnout Vandecappelle 2 siblings, 1 reply; 10+ messages in thread From: Fatih Aşıcı @ 2013-11-20 12:17 UTC (permalink / raw) To: buildroot Simplify our custom qmake.conf: - Include linux_device_{pre,post}.conf to inherit common device configuration. - Do not add $(STAGING_DIR)/usr/include to include path. It is redundant. In additon to the simplification of code, this change is a preparation to solve problems occurring when QMAKE_CXX is prepended with ccache path. Upstream patch is needed by configure to parse device options correctly. Another upstream patch is needed to remove ARM specific parts from linux_device_post.conf. Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> --- Changes v1 -> v2: - mentioned the modified parts of qmake.conf in commit message (suggested by Arnout Vandecappelle) - added an upstream patch to remove ARM specific configuration from linux_device_post.conf (issue noticed by Arnout Vandecappelle) - Add "Signed-off-by" lines to new patches (suggested by Arnout Vandecappelle) --- .../qt5/qt5base/qt5base-0002-mkspecs-files.patch | 39 +------- ...igure-Parse-device-option-value-correctly.patch | 37 +++++++ ...cs-devices-linux_device_post.conf-for-non.patch | 107 +++++++++++++++++++++ package/qt5/qt5base/qt5base.mk | 18 +--- 4 files changed, 151 insertions(+), 50 deletions(-) create mode 100644 package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch create mode 100644 package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch index e406cfc..3fddeac 100644 --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch @@ -14,50 +14,17 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf =================================================================== --- /dev/null +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf -@@ -0,0 +1,44 @@ -+MAKEFILE_GENERATOR = UNIX -+CONFIG += incremental gdb_dwarf_index -+QMAKE_INCREMENTAL_STYLE = sublib -+ -+include(../../common/linux.conf) -+include(../../common/gcc-base-unix.conf) -+include(../../common/g++-unix.conf) -+ -+load(device_config) -+ -+QT_QPA_DEFAULT_PLATFORM = eglfs -+ -+BUILDROOT_CROSS_COMPILE = -+BUILDROOT_COMPILER_CFLAGS = -+BUILDROOT_COMPILER_CXXFLAGS = -+BUILDROOT_INCLUDE_PATH = -+ -+# modifications to g++.conf -+QMAKE_CC = $${BUILDROOT_CROSS_COMPILE}gcc -+QMAKE_CXX = $${BUILDROOT_CROSS_COMPILE}g++ -+QMAKE_LINK = $${QMAKE_CXX} -+QMAKE_LINK_SHLIB = $${QMAKE_CXX} -+ -+# modifications to linux.conf -+QMAKE_AR = $${BUILDROOT_CROSS_COMPILE}ar cqs -+QMAKE_OBJCOPY = $${BUILDROOT_CROSS_COMPILE}objcopy -+QMAKE_NM = $${BUILDROOT_CROSS_COMPILE}nm -P -+QMAKE_STRIP = $${BUILDROOT_CROSS_COMPILE}strip +@@ -0,0 +1,11 @@ ++include(../common/linux_device_pre.conf) + +#modifications to gcc-base.conf +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 -+INCLUDEPATH += $${BUILDROOT_INCLUDE_PATH} + +QMAKE_LIBS += -lrt -lpthread -ldl + -+# device specific glue code -+EGLFS_PLATFORM_HOOKS_SOURCES = -+ -+# Sanity check -+deviceSanityCheckCompiler() -+ ++include(../common/linux_device_post.conf) +load(qt_config) Index: b/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h =================================================================== diff --git a/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch new file mode 100644 index 0000000..aaf1d35 --- /dev/null +++ b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch @@ -0,0 +1,37 @@ +From 4723f3fd04edf1aad6750ca91fd4648216d8b408 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= <fatih.asici@gmail.com> +Date: Sat, 21 Sep 2013 00:14:39 +0300 +Subject: [PATCH] configure: Parse -device-option value correctly + +The regular expression does not parse correctly when a device option value +contains the character '=' (e.g. QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64"). + +In order to break string at the first equal sign and to simplify code, +use "cut" command as in other places in configure script. + +Task-number: QTBUG-33584 +Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6 +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> +Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 64568dd..388899e 100755 +--- a/configure ++++ b/configure +@@ -1609,8 +1609,8 @@ while [ "$#" -gt 0 ]; do + [ "$XPLATFORM" = "undefined" ] && exit 101 + ;; + device-option) +- DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"` +- DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"` ++ DEV_VAR=`echo $VAL | cut -d '=' -f 1` ++ DEV_VAL=`echo $VAL | cut -d '=' -f 2-` + DeviceVar set $DEV_VAR "$DEV_VAL" + ;; + qpa) +-- +1.8.4.rc3 + diff --git a/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch b/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch new file mode 100644 index 0000000..7eeea38 --- /dev/null +++ b/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch @@ -0,0 +1,107 @@ +From f2a611ce6cb0f86d9331641a804de6a507900db7 Mon Sep 17 00:00:00 2001 +From: Tomasz Olszak <olszak.tomasz@gmail.com> +Date: Thu, 18 Jul 2013 20:45:47 +0000 +Subject: [PATCH] Fixed mkspecs/devices/linux_device_post.conf for non-arm + platforms. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Now arm specific -mfloat-abi flag is added to compiler flags +only for arm architecture in linux_arm_device_post.conf. + +Change-Id: Ie77ac6e0717d9d1fd9c14e1d6a26e86f08ab418c +Reviewed-by: Jaros?aw Staniek <staniek@kde.org> +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> +Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> +--- + mkspecs/devices/common/linux_arm_device_post.conf | 7 +++++++ + mkspecs/devices/common/linux_device_post.conf | 6 ------ + mkspecs/devices/linux-imx53qsb-g++/qmake.conf | 2 +- + mkspecs/devices/linux-imx6-g++/qmake.conf | 2 +- + mkspecs/devices/linux-rasp-pi-g++/qmake.conf | 2 +- + mkspecs/devices/linux-tegra2-g++/qmake.conf | 2 +- + 6 files changed, 11 insertions(+), 10 deletions(-) + create mode 100644 mkspecs/devices/common/linux_arm_device_post.conf + +diff --git a/mkspecs/devices/common/linux_arm_device_post.conf b/mkspecs/devices/common/linux_arm_device_post.conf +new file mode 100644 +index 0000000..7ce4759 +--- /dev/null ++++ b/mkspecs/devices/common/linux_arm_device_post.conf +@@ -0,0 +1,7 @@ ++contains(DISTRO_OPTS, hard-float) { ++ COMPILER_FLAGS += -mfloat-abi=hard ++} else { ++ COMPILER_FLAGS += -mfloat-abi=softfp ++} ++ ++include(linux_device_post.conf) +diff --git a/mkspecs/devices/common/linux_device_post.conf b/mkspecs/devices/common/linux_device_post.conf +index f8dbf76..548e75a 100644 +--- a/mkspecs/devices/common/linux_device_post.conf ++++ b/mkspecs/devices/common/linux_device_post.conf +@@ -3,12 +3,6 @@ contains(DISTRO_OPTS, deb-multi-arch) { + -Wl,-rpath-link,$$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} + } + +-contains(DISTRO_OPTS, hard-float) { +- COMPILER_FLAGS += -mfloat-abi=hard +-} else { +- COMPILER_FLAGS += -mfloat-abi=softfp +-} +- + QMAKE_CFLAGS += $$COMPILER_FLAGS + QMAKE_CXXFLAGS += $$COMPILER_FLAGS + +diff --git a/mkspecs/devices/linux-imx53qsb-g++/qmake.conf b/mkspecs/devices/linux-imx53qsb-g++/qmake.conf +index 0a5ed89..3a9766c 100644 +--- a/mkspecs/devices/linux-imx53qsb-g++/qmake.conf ++++ b/mkspecs/devices/linux-imx53qsb-g++/qmake.conf +@@ -32,6 +32,6 @@ QMAKE_CXXFLAGS_RELEASE += $$IMX5_CFLAGS_RELEASE + QMAKE_CFLAGS_DEBUG += $$IMX5_CFLAGS + QMAKE_CXXFLAGS_DEBUG += $$IMX5_CFLAGS + +-include(../common/linux_device_post.conf) ++include(../common/linux_arm_device_post.conf) + + load(qt_config) +diff --git a/mkspecs/devices/linux-imx6-g++/qmake.conf b/mkspecs/devices/linux-imx6-g++/qmake.conf +index 20f6d11..2b8dbf6 100644 +--- a/mkspecs/devices/linux-imx6-g++/qmake.conf ++++ b/mkspecs/devices/linux-imx6-g++/qmake.conf +@@ -34,6 +34,6 @@ QMAKE_CXXFLAGS_RELEASE += $$IMX6_CFLAGS_RELEASE + QMAKE_CFLAGS_DEBUG += $$IMX6_CFLAGS + QMAKE_CXXFLAGS_DEBUG += $$IMX6_CFLAGS + +-include(../common/linux_device_post.conf) ++include(../common/linux_arm_device_post.conf) + + load(qt_config) +diff --git a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf +index d6fea47..5f923ad 100644 +--- a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf ++++ b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf +@@ -42,6 +42,6 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS + EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_pi.cpp + EGLFS_PLATFORM_HOOKS_LIBS = -lbcm_host + +-include(../common/linux_device_post.conf) ++include(../common/linux_arm_device_post.conf) + + load(qt_config) +diff --git a/mkspecs/devices/linux-tegra2-g++/qmake.conf b/mkspecs/devices/linux-tegra2-g++/qmake.conf +index 1c7a8cc..320e1b8 100644 +--- a/mkspecs/devices/linux-tegra2-g++/qmake.conf ++++ b/mkspecs/devices/linux-tegra2-g++/qmake.conf +@@ -26,6 +26,6 @@ TEGRA2_CFLAGS = -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-a + QMAKE_CFLAGS += $$TEGRA2_CFLAGS + QMAKE_CXXFLAGS += $$TEGRA2_CFLAGS + +-include(../common/linux_device_post.conf) ++include(../common/linux_arm_device_post.conf) + + load(qt_config) +-- +1.8.4.rc3 + diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index ce78d31..febdc9b 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -152,21 +152,7 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus -# Ideally, we could use -device-option to substitute variable values -# in our linux-buildroot-g++/qmake.config, but this mechanism doesn't -# nicely support variable values that contain spaces. So we use the -# good old sed solution here. -define QT5BASE_CONFIG_SET - $(SED) 's%^$(1).*%$(1) = $(2)%g' $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf -endef - define QT5BASE_CONFIGURE_CMDS - $(call QT5BASE_CONFIG_SET,BUILDROOT_CROSS_COMPILE,$(TARGET_CROSS)) - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CFLAGS,$(TARGET_CFLAGS)) - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CXXFLAGS,$(TARGET_CXXFLAGS)) - $(call QT5BASE_CONFIG_SET,BUILDROOT_INCLUDE_PATH,$(STAGING_DIR)/usr/include) - $(call QT5BASE_CONFIG_SET,EGLFS_PLATFORM_HOOKS_SOURCES, \ - $(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)) (cd $(@D); \ PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ @@ -181,6 +167,10 @@ define QT5BASE_CONFIGURE_CMDS -no-rpath \ -nomake examples -nomake tests \ -device buildroot \ + -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ + -device-option BUILDROOT_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \ + -device-option BUILDROOT_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \ + -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \ -no-c++11 \ $(QT5BASE_CONFIGURE_OPTS) \ ) -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH v2] qt5base: use -device-option to set mkspec variables 2013-11-20 12:17 ` [Buildroot] [PATCH v2] " Fatih Aşıcı @ 2013-11-20 22:18 ` Arnout Vandecappelle 0 siblings, 0 replies; 10+ messages in thread From: Arnout Vandecappelle @ 2013-11-20 22:18 UTC (permalink / raw) To: buildroot On 20/11/13 13:17, Fatih A??c? wrote: > Simplify our custom qmake.conf: > - Include linux_device_{pre,post}.conf to inherit common device > configuration. > - Do not add $(STAGING_DIR)/usr/include to include path. It is > redundant. > > In additon to the simplification of code, this change is a preparation > to solve problems occurring when QMAKE_CXX is prepended with ccache path. > > Upstream patch is needed by configure to parse device options correctly. > Another upstream patch is needed to remove ARM specific parts from > linux_device_post.conf. > > Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Build-tested on x86_64. Regards, Arnout > --- > Changes v1 -> v2: > - mentioned the modified parts of qmake.conf in commit message (suggested by > Arnout Vandecappelle) > - added an upstream patch to remove ARM specific configuration from > linux_device_post.conf (issue noticed by Arnout Vandecappelle) > - Add "Signed-off-by" lines to new patches (suggested by Arnout Vandecappelle) > --- > .../qt5/qt5base/qt5base-0002-mkspecs-files.patch | 39 +------- > ...igure-Parse-device-option-value-correctly.patch | 37 +++++++ > ...cs-devices-linux_device_post.conf-for-non.patch | 107 +++++++++++++++++++++ > package/qt5/qt5base/qt5base.mk | 18 +--- > 4 files changed, 151 insertions(+), 50 deletions(-) > create mode 100644 package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > create mode 100644 package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch > > diff --git a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > index e406cfc..3fddeac 100644 > --- a/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > +++ b/package/qt5/qt5base/qt5base-0002-mkspecs-files.patch > @@ -14,50 +14,17 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf > =================================================================== > --- /dev/null > +++ b/mkspecs/devices/linux-buildroot-g++/qmake.conf > -@@ -0,0 +1,44 @@ > -+MAKEFILE_GENERATOR = UNIX > -+CONFIG += incremental gdb_dwarf_index > -+QMAKE_INCREMENTAL_STYLE = sublib > -+ > -+include(../../common/linux.conf) > -+include(../../common/gcc-base-unix.conf) > -+include(../../common/g++-unix.conf) > -+ > -+load(device_config) > -+ > -+QT_QPA_DEFAULT_PLATFORM = eglfs > -+ > -+BUILDROOT_CROSS_COMPILE = > -+BUILDROOT_COMPILER_CFLAGS = > -+BUILDROOT_COMPILER_CXXFLAGS = > -+BUILDROOT_INCLUDE_PATH = > -+ > -+# modifications to g++.conf > -+QMAKE_CC = $${BUILDROOT_CROSS_COMPILE}gcc > -+QMAKE_CXX = $${BUILDROOT_CROSS_COMPILE}g++ > -+QMAKE_LINK = $${QMAKE_CXX} > -+QMAKE_LINK_SHLIB = $${QMAKE_CXX} > -+ > -+# modifications to linux.conf > -+QMAKE_AR = $${BUILDROOT_CROSS_COMPILE}ar cqs > -+QMAKE_OBJCOPY = $${BUILDROOT_CROSS_COMPILE}objcopy > -+QMAKE_NM = $${BUILDROOT_CROSS_COMPILE}nm -P > -+QMAKE_STRIP = $${BUILDROOT_CROSS_COMPILE}strip > +@@ -0,0 +1,11 @@ > ++include(../common/linux_device_pre.conf) > + > +#modifications to gcc-base.conf > +QMAKE_CFLAGS += $${BUILDROOT_COMPILER_CFLAGS} > +QMAKE_CXXFLAGS += $${BUILDROOT_COMPILER_CXXFLAGS} > +QMAKE_CXXFLAGS_RELEASE += -O3 > -+INCLUDEPATH += $${BUILDROOT_INCLUDE_PATH} > + > +QMAKE_LIBS += -lrt -lpthread -ldl > + > -+# device specific glue code > -+EGLFS_PLATFORM_HOOKS_SOURCES = > -+ > -+# Sanity check > -+deviceSanityCheckCompiler() > -+ > ++include(../common/linux_device_post.conf) > +load(qt_config) > Index: b/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h > =================================================================== > diff --git a/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > new file mode 100644 > index 0000000..aaf1d35 > --- /dev/null > +++ b/package/qt5/qt5base/qt5base-0008-configure-Parse-device-option-value-correctly.patch > @@ -0,0 +1,37 @@ > +From 4723f3fd04edf1aad6750ca91fd4648216d8b408 Mon Sep 17 00:00:00 2001 > +From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= <fatih.asici@gmail.com> > +Date: Sat, 21 Sep 2013 00:14:39 +0300 > +Subject: [PATCH] configure: Parse -device-option value correctly > + > +The regular expression does not parse correctly when a device option value > +contains the character '=' (e.g. QMAKE_CFLAGS="-D_FILE_OFFSET_BITS=64"). > + > +In order to break string at the first equal sign and to simplify code, > +use "cut" command as in other places in configure script. > + > +Task-number: QTBUG-33584 > +Change-Id: I05b474d2ba6bff84c1e40d00475963bab36d94b6 > +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> > +Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> > +--- > + configure | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/configure b/configure > +index 64568dd..388899e 100755 > +--- a/configure > ++++ b/configure > +@@ -1609,8 +1609,8 @@ while [ "$#" -gt 0 ]; do > + [ "$XPLATFORM" = "undefined" ] && exit 101 > + ;; > + device-option) > +- DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"` > +- DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"` > ++ DEV_VAR=`echo $VAL | cut -d '=' -f 1` > ++ DEV_VAL=`echo $VAL | cut -d '=' -f 2-` > + DeviceVar set $DEV_VAR "$DEV_VAL" > + ;; > + qpa) > +-- > +1.8.4.rc3 > + > diff --git a/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch b/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch > new file mode 100644 > index 0000000..7eeea38 > --- /dev/null > +++ b/package/qt5/qt5base/qt5base-0009-Fixed-mkspecs-devices-linux_device_post.conf-for-non.patch > @@ -0,0 +1,107 @@ > +From f2a611ce6cb0f86d9331641a804de6a507900db7 Mon Sep 17 00:00:00 2001 > +From: Tomasz Olszak <olszak.tomasz@gmail.com> > +Date: Thu, 18 Jul 2013 20:45:47 +0000 > +Subject: [PATCH] Fixed mkspecs/devices/linux_device_post.conf for non-arm > + platforms. > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > + > +Now arm specific -mfloat-abi flag is added to compiler flags > +only for arm architecture in linux_arm_device_post.conf. > + > +Change-Id: Ie77ac6e0717d9d1fd9c14e1d6a26e86f08ab418c > +Reviewed-by: Jaros?aw Staniek <staniek@kde.org> > +Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> > +Signed-off-by: Fatih A??c? <fatih.asici@gmail.com> > +--- > + mkspecs/devices/common/linux_arm_device_post.conf | 7 +++++++ > + mkspecs/devices/common/linux_device_post.conf | 6 ------ > + mkspecs/devices/linux-imx53qsb-g++/qmake.conf | 2 +- > + mkspecs/devices/linux-imx6-g++/qmake.conf | 2 +- > + mkspecs/devices/linux-rasp-pi-g++/qmake.conf | 2 +- > + mkspecs/devices/linux-tegra2-g++/qmake.conf | 2 +- > + 6 files changed, 11 insertions(+), 10 deletions(-) > + create mode 100644 mkspecs/devices/common/linux_arm_device_post.conf > + > +diff --git a/mkspecs/devices/common/linux_arm_device_post.conf b/mkspecs/devices/common/linux_arm_device_post.conf > +new file mode 100644 > +index 0000000..7ce4759 > +--- /dev/null > ++++ b/mkspecs/devices/common/linux_arm_device_post.conf > +@@ -0,0 +1,7 @@ > ++contains(DISTRO_OPTS, hard-float) { > ++ COMPILER_FLAGS += -mfloat-abi=hard > ++} else { > ++ COMPILER_FLAGS += -mfloat-abi=softfp > ++} > ++ > ++include(linux_device_post.conf) > +diff --git a/mkspecs/devices/common/linux_device_post.conf b/mkspecs/devices/common/linux_device_post.conf > +index f8dbf76..548e75a 100644 > +--- a/mkspecs/devices/common/linux_device_post.conf > ++++ b/mkspecs/devices/common/linux_device_post.conf > +@@ -3,12 +3,6 @@ contains(DISTRO_OPTS, deb-multi-arch) { > + -Wl,-rpath-link,$$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} > + } > + > +-contains(DISTRO_OPTS, hard-float) { > +- COMPILER_FLAGS += -mfloat-abi=hard > +-} else { > +- COMPILER_FLAGS += -mfloat-abi=softfp > +-} > +- > + QMAKE_CFLAGS += $$COMPILER_FLAGS > + QMAKE_CXXFLAGS += $$COMPILER_FLAGS > + > +diff --git a/mkspecs/devices/linux-imx53qsb-g++/qmake.conf b/mkspecs/devices/linux-imx53qsb-g++/qmake.conf > +index 0a5ed89..3a9766c 100644 > +--- a/mkspecs/devices/linux-imx53qsb-g++/qmake.conf > ++++ b/mkspecs/devices/linux-imx53qsb-g++/qmake.conf > +@@ -32,6 +32,6 @@ QMAKE_CXXFLAGS_RELEASE += $$IMX5_CFLAGS_RELEASE > + QMAKE_CFLAGS_DEBUG += $$IMX5_CFLAGS > + QMAKE_CXXFLAGS_DEBUG += $$IMX5_CFLAGS > + > +-include(../common/linux_device_post.conf) > ++include(../common/linux_arm_device_post.conf) > + > + load(qt_config) > +diff --git a/mkspecs/devices/linux-imx6-g++/qmake.conf b/mkspecs/devices/linux-imx6-g++/qmake.conf > +index 20f6d11..2b8dbf6 100644 > +--- a/mkspecs/devices/linux-imx6-g++/qmake.conf > ++++ b/mkspecs/devices/linux-imx6-g++/qmake.conf > +@@ -34,6 +34,6 @@ QMAKE_CXXFLAGS_RELEASE += $$IMX6_CFLAGS_RELEASE > + QMAKE_CFLAGS_DEBUG += $$IMX6_CFLAGS > + QMAKE_CXXFLAGS_DEBUG += $$IMX6_CFLAGS > + > +-include(../common/linux_device_post.conf) > ++include(../common/linux_arm_device_post.conf) > + > + load(qt_config) > +diff --git a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf > +index d6fea47..5f923ad 100644 > +--- a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf > ++++ b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf > +@@ -42,6 +42,6 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS > + EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_pi.cpp > + EGLFS_PLATFORM_HOOKS_LIBS = -lbcm_host > + > +-include(../common/linux_device_post.conf) > ++include(../common/linux_arm_device_post.conf) > + > + load(qt_config) > +diff --git a/mkspecs/devices/linux-tegra2-g++/qmake.conf b/mkspecs/devices/linux-tegra2-g++/qmake.conf > +index 1c7a8cc..320e1b8 100644 > +--- a/mkspecs/devices/linux-tegra2-g++/qmake.conf > ++++ b/mkspecs/devices/linux-tegra2-g++/qmake.conf > +@@ -26,6 +26,6 @@ TEGRA2_CFLAGS = -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-a > + QMAKE_CFLAGS += $$TEGRA2_CFLAGS > + QMAKE_CXXFLAGS += $$TEGRA2_CFLAGS > + > +-include(../common/linux_device_post.conf) > ++include(../common/linux_arm_device_post.conf) > + > + load(qt_config) > +-- > +1.8.4.rc3 > + > diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk > index ce78d31..febdc9b 100644 > --- a/package/qt5/qt5base/qt5base.mk > +++ b/package/qt5/qt5base/qt5base.mk > @@ -152,21 +152,7 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport > > QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus > > -# Ideally, we could use -device-option to substitute variable values > -# in our linux-buildroot-g++/qmake.config, but this mechanism doesn't > -# nicely support variable values that contain spaces. So we use the > -# good old sed solution here. > -define QT5BASE_CONFIG_SET > - $(SED) 's%^$(1).*%$(1) = $(2)%g' $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf > -endef > - > define QT5BASE_CONFIGURE_CMDS > - $(call QT5BASE_CONFIG_SET,BUILDROOT_CROSS_COMPILE,$(TARGET_CROSS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CFLAGS,$(TARGET_CFLAGS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CXXFLAGS,$(TARGET_CXXFLAGS)) > - $(call QT5BASE_CONFIG_SET,BUILDROOT_INCLUDE_PATH,$(STAGING_DIR)/usr/include) > - $(call QT5BASE_CONFIG_SET,EGLFS_PLATFORM_HOOKS_SOURCES, \ > - $(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)) > (cd $(@D); \ > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ > @@ -181,6 +167,10 @@ define QT5BASE_CONFIGURE_CMDS > -no-rpath \ > -nomake examples -nomake tests \ > -device buildroot \ > + -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ > + -device-option BUILDROOT_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \ > + -device-option BUILDROOT_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \ > + -device-option EGLFS_PLATFORM_HOOKS_SOURCES="$(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)" \ > -no-c++11 \ > $(QT5BASE_CONFIGURE_OPTS) \ > ) > -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-11-29 8:26 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-14 13:40 [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Fatih Aşıcı 2013-11-14 13:40 ` [Buildroot] [PATCH 2/2] qt5base: use ccache if enabled Fatih Aşıcı 2013-11-28 22:11 ` Peter Korsgaard 2013-11-29 7:10 ` Fatih Aşıcı 2013-11-29 8:14 ` Peter Korsgaard 2013-11-29 8:26 ` Fatih Aşıcı 2013-11-18 22:41 ` [Buildroot] [PATCH 1/2] qt5base: use -device-option to set mkspec variables Arnout Vandecappelle 2013-11-20 12:22 ` Fatih Aşıcı 2013-11-20 12:17 ` [Buildroot] [PATCH v2] " Fatih Aşıcı 2013-11-20 22:18 ` Arnout Vandecappelle
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox