304 lines
10 KiB
Diff
304 lines
10 KiB
Diff
From 9de9d0ccfacbac39d3eb171efe3e8c74a2417ae3 Mon Sep 17 00:00:00 2001
|
|
From: Martin Jansa <Martin.Jansa@gmail.com>
|
|
Date: Mon, 15 Apr 2013 04:29:32 +0200
|
|
Subject: [PATCH 01/11] Add linux-oe-g++ platform
|
|
|
|
* This qmake.conf unlike other platforms reads most variables from
|
|
shell environment, because it's easier for qt recipes to export
|
|
*FLAGS or CC specific for given recipe
|
|
|
|
* configure: add getQEvalMakeConf and getXQEvalMakeConf
|
|
Allow expansion of $(...) references from qmake.conf to generate
|
|
qmake environment from shell environment as exported by qmake5_base
|
|
|
|
* OE_QMAKE_CXX in order to allow compiler version check to succeed
|
|
which allows WebKit to be enabled.
|
|
|
|
* Other variables in order to let config.tests to use our -platform
|
|
settings
|
|
|
|
* Add setBootstrapEvalVariable to bootstrap qmake with our environment
|
|
too, this allows us to use -platform linux-oe-g++ also for native
|
|
recipe
|
|
|
|
* disable gdb_dwarf_index
|
|
* qmake is trying to call native gdb and we don't depend on gdb-native
|
|
(or even provide gdb-native)
|
|
* fixes errors like this:
|
|
/bin/sh: gdb: command not found
|
|
/bin/sh: line 0: test: -gt: unary operator expected
|
|
which are not fatal, but still misleading in do_configure output
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
|
---
|
|
configure | 54 ++++++++++++++++---
|
|
mkspecs/linux-oe-g++/qmake.conf | 39 ++++++++++++++
|
|
mkspecs/linux-oe-g++/qplatformdefs.h | 100 +++++++++++++++++++++++++++++++++++
|
|
3 files changed, 186 insertions(+), 7 deletions(-)
|
|
create mode 100644 mkspecs/linux-oe-g++/qmake.conf
|
|
create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h
|
|
|
|
diff --git a/configure b/configure
|
|
index 2ea1ea4..6db4577 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -216,6 +216,16 @@ getQMakeConf()
|
|
getQMakeConf3 "$1" "$specvals"
|
|
}
|
|
|
|
+# OE qmake.conf is reading some variables from shell env
|
|
+# read them from qmake.conf, replace qmake () syntax with shell and eval
|
|
+getQEvalMakeConf()
|
|
+{
|
|
+ VAL=`getQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'`
|
|
+ EVAL=`eval "echo ${VAL}"`
|
|
+# echo "Running getQEvalMakeConf: var='$1', val='`getQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2
|
|
+ eval "echo ${VAL}"
|
|
+}
|
|
+
|
|
getXQMakeConf()
|
|
{
|
|
if [ -z "$xspecvals" ]; then
|
|
@@ -224,6 +234,16 @@ getXQMakeConf()
|
|
getQMakeConf3 "$1" "$xspecvals"
|
|
}
|
|
|
|
+# OE qmake.conf is reading some variables from shell env
|
|
+# read them from qmake.conf, replace qmake () syntax with shell and eval
|
|
+getXQEvalMakeConf()
|
|
+{
|
|
+ VAL=`getXQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'`
|
|
+ EVAL=`eval "echo ${VAL}"`
|
|
+# echo "Running getXQEvalMakeConf: var='$1', val='`getXQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2
|
|
+ eval "echo ${VAL}"
|
|
+}
|
|
+
|
|
compilerSupportsFlag()
|
|
{
|
|
cat >conftest.cpp <<EOF
|
|
@@ -707,6 +727,18 @@ fi
|
|
# initalize variables
|
|
#-------------------------------------------------------------------------------
|
|
|
|
+# Export all OE variables for qmake.conf from shell env to QMakeVars
|
|
+OE_VARIABLES="AR CC CFLAGS COMPILER CXX CXXFLAGS LDFLAGS LINK QT_CONFIG STRIP"
|
|
+for varname in $OE_VARIABLES; do
|
|
+ qmakevarname="${varname}"
|
|
+ cmd=`echo \
|
|
+'if [ -n "\$OE_QMAKE_'${varname}'" ]; then
|
|
+ QMakeVar set OE_QMAKE_'${qmakevarname}' "\$OE_QMAKE_'${varname}'"
|
|
+# echo "Exporting OE_QMAKE_'${qmakevarname}' value=\"\$OE_QMAKE_'${varname}'\"" >&2
|
|
+fi'`
|
|
+ eval "$cmd"
|
|
+done
|
|
+
|
|
SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
|
|
for varname in $SYSTEM_VARIABLES; do
|
|
qmakevarname="${varname}"
|
|
@@ -2636,7 +2668,7 @@ if [ "$BUILD_ON_MAC" = "yes" ] && [ "$CFG_QGTKSTYLE" = "auto" ]; then
|
|
CFG_QGTKSTYLE=no
|
|
fi
|
|
|
|
-QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`
|
|
+QMAKE_CONF_COMPILER=`getXQEvalMakeConf QMAKE_CXX`
|
|
|
|
TEST_COMPILER=$QMAKE_CONF_COMPILER
|
|
if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
|
|
@@ -2645,7 +2677,7 @@ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
-TEST_COMPILER_CXXFLAGS=`getXQMakeConf QMAKE_CXXFLAGS`
|
|
+TEST_COMPILER_CXXFLAGS=`getXQEvalMakeConf QMAKE_CXXFLAGS`
|
|
|
|
GCC_MACHINE_DUMP=
|
|
case "$TEST_COMPILER" in *g++) GCC_MACHINE_DUMP=$($TEST_COMPILER -dumpmachine);; esac
|
|
@@ -3613,6 +3645,14 @@ setBootstrapVariable()
|
|
getQMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile"
|
|
}
|
|
|
|
+# OE qmake.conf is reading some variables from shell env
|
|
+# read them from qmake.conf, replace qmake () syntax with shell and eval
|
|
+setBootstrapEvalVariable()
|
|
+{
|
|
+ getQEvalMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile"
|
|
+}
|
|
+
|
|
+
|
|
# build qmake
|
|
if true; then ###[ '!' -f "$outpath/bin/qmake" ];
|
|
echo "Creating qmake..."
|
|
@@ -3651,11 +3691,11 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
|
|
fi
|
|
|
|
[ "$CFG_SILENT" = "yes" ] && CC_TRANSFORM='s,^,\@,' || CC_TRANSFORM=
|
|
- setBootstrapVariable QMAKE_CC CC "$CC_TRANSFORM"
|
|
- setBootstrapVariable QMAKE_CXX CXX "$CC_TRANSFORM"
|
|
- setBootstrapVariable QMAKE_CFLAGS
|
|
- setBootstrapVariable QMAKE_CXXFLAGS
|
|
- setBootstrapVariable QMAKE_LFLAGS
|
|
+ setBootstrapEvalVariable QMAKE_CC CC "$CC_TRANSFORM"
|
|
+ setBootstrapEvalVariable QMAKE_CXX CXX "$CC_TRANSFORM"
|
|
+ setBootstrapEvalVariable QMAKE_CFLAGS
|
|
+ setBootstrapEvalVariable QMAKE_CXXFLAGS
|
|
+ setBootstrapEvalVariable QMAKE_LFLAGS
|
|
|
|
if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then
|
|
EXTRA_CFLAGS="$EXTRA_CFLAGS -DQMAKE_OPENSOURCE_EDITION"
|
|
diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf
|
|
new file mode 100644
|
|
index 0000000..42966fe
|
|
--- /dev/null
|
|
+++ b/mkspecs/linux-oe-g++/qmake.conf
|
|
@@ -0,0 +1,39 @@
|
|
+#
|
|
+# 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)
|
|
+
|
|
+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/g++-unix.conf)
|
|
+
|
|
+# tc settings from g++-base.conf
|
|
+QMAKE_COMPILER = $(OE_QMAKE_COMPILER)
|
|
+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)
|
|
+
|
|
+load(qt_config)
|
|
diff --git a/mkspecs/linux-oe-g++/qplatformdefs.h b/mkspecs/linux-oe-g++/qplatformdefs.h
|
|
new file mode 100644
|
|
index 0000000..dd12003
|
|
--- /dev/null
|
|
+++ b/mkspecs/linux-oe-g++/qplatformdefs.h
|
|
@@ -0,0 +1,100 @@
|
|
+/****************************************************************************
|
|
+**
|
|
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
|
+** Contact: http://www.qt-project.org/legal
|
|
+**
|
|
+** This file is part of the qmake spec of the Qt Toolkit.
|
|
+**
|
|
+** $QT_BEGIN_LICENSE:LGPL$
|
|
+** Commercial License Usage
|
|
+** Licensees holding valid commercial Qt licenses may use this file in
|
|
+** accordance with the commercial license agreement provided with the
|
|
+** Software or, alternatively, in accordance with the terms contained in
|
|
+** a written agreement between you and Digia. For licensing terms and
|
|
+** conditions see http://qt.digia.com/licensing. For further information
|
|
+** use the contact form at http://qt.digia.com/contact-us.
|
|
+**
|
|
+** GNU Lesser General Public License Usage
|
|
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
+** General Public License version 2.1 as published by the Free Software
|
|
+** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
+** packaging of this file. Please review the following information to
|
|
+** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
+**
|
|
+** In addition, as a special exception, Digia gives you certain additional
|
|
+** rights. These rights are described in the Digia Qt LGPL Exception
|
|
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
+**
|
|
+** GNU General Public License Usage
|
|
+** Alternatively, this file may be used under the terms of the GNU
|
|
+** General Public License version 3.0 as published by the Free Software
|
|
+** Foundation and appearing in the file LICENSE.GPL included in the
|
|
+** packaging of this file. Please review the following information to
|
|
+** ensure the GNU General Public License version 3.0 requirements will be
|
|
+** met: http://www.gnu.org/copyleft/gpl.html.
|
|
+**
|
|
+**
|
|
+** $QT_END_LICENSE$
|
|
+**
|
|
+****************************************************************************/
|
|
+
|
|
+#ifndef QPLATFORMDEFS_H
|
|
+#define QPLATFORMDEFS_H
|
|
+
|
|
+// Get Qt defines/settings
|
|
+
|
|
+#include "qglobal.h"
|
|
+
|
|
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
|
|
+
|
|
+// 1) need to reset default environment if _BSD_SOURCE is defined
|
|
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
|
|
+// 3) it seems older glibc need this to include the X/Open stuff
|
|
+#ifndef _GNU_SOURCE
|
|
+# define _GNU_SOURCE
|
|
+#endif
|
|
+
|
|
+#include <unistd.h>
|
|
+
|
|
+
|
|
+// We are hot - unistd.h should have turned on the specific APIs we requested
|
|
+
|
|
+#include <features.h>
|
|
+#include <pthread.h>
|
|
+#include <dirent.h>
|
|
+#include <fcntl.h>
|
|
+#include <grp.h>
|
|
+#include <pwd.h>
|
|
+#include <signal.h>
|
|
+
|
|
+#include <sys/types.h>
|
|
+#include <sys/ioctl.h>
|
|
+#include <sys/ipc.h>
|
|
+#include <sys/time.h>
|
|
+#include <sys/shm.h>
|
|
+#include <sys/socket.h>
|
|
+#include <sys/stat.h>
|
|
+#include <sys/wait.h>
|
|
+#include <netinet/in.h>
|
|
+#ifndef QT_NO_IPV6IFNAME
|
|
+#include <net/if.h>
|
|
+#endif
|
|
+
|
|
+#define QT_USE_XOPEN_LFS_EXTENSIONS
|
|
+#include "../common/posix/qplatformdefs.h"
|
|
+
|
|
+#undef QT_SOCKLEN_T
|
|
+
|
|
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
|
|
+#define QT_SOCKLEN_T socklen_t
|
|
+#else
|
|
+#define QT_SOCKLEN_T int
|
|
+#endif
|
|
+
|
|
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
|
|
+#define QT_SNPRINTF ::snprintf
|
|
+#define QT_VSNPRINTF ::vsnprintf
|
|
+#endif
|
|
+
|
|
+#endif // QPLATFORMDEFS_H
|
|
--
|
|
1.8.2.1
|
|
|