diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index ba13242cd2..ed25e739b6 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass @@ -21,6 +21,7 @@ export OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake" export OE_QMAKE_UIC = "${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/uic" export OE_QMAKE_MOC = "${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/moc" export OE_QMAKE_RCC = "${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/rcc" +export OE_QMAKE_COMPILER = "${CC}" export OE_QMAKE_CC = "${CC}" export OE_QMAKE_CFLAGS = "${CFLAGS}" export OE_QMAKE_CXX = "${CXX}" diff --git a/recipes-qt/qt5/files/g++.conf b/recipes-qt/qt5/files/g++.conf deleted file mode 100644 index 14cd3e1d77..0000000000 --- a/recipes-qt/qt5/files/g++.conf +++ /dev/null @@ -1,56 +0,0 @@ -# -# qmake configuration for common gcc -# - -QMAKE_CC = $(OE_QMAKE_CC) -QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS) -QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS) -QMAKE_CFLAGS_DEPS += -M -QMAKE_CFLAGS_WARN_ON += -Wall -W -QMAKE_CFLAGS_WARN_OFF += -w -QMAKE_CFLAGS_RELEASE += -QMAKE_CFLAGS_DEBUG += -g -QMAKE_CFLAGS_SHLIB += -fPIC -QMAKE_CFLAGS_STATIC_LIB += -fPIC -QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses -QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden -QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} -QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} - -QMAKE_CXX = $(OE_QMAKE_CXX) -QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS $(OE_QMAKE_CXXFLAGS) -QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS -QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON -QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF -QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE -QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG -QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB -QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB -QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC -QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden -QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} -QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE - -QMAKE_LINK = $(OE_QMAKE_LINK) -QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK) -QMAKE_LINK_C = $(OE_QMAKE_LINK) -QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK) -QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS) -QMAKE_LFLAGS_RELEASE += -QMAKE_LFLAGS_DEBUG += -QMAKE_LFLAGS_APP += -QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined -QMAKE_LFLAGS_RPATH = -Wl,-rpath-link, - -QMAKE_PCH_OUTPUT_EXT = .gch - -# -Bsymbolic-functions (ld) support -QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions -QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, - -# some linking helper... -CONFIG += rpath_libdirs - -# for the SDK -isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG) diff --git a/recipes-qt/qt5/files/linux.conf b/recipes-qt/qt5/files/linux.conf deleted file mode 100644 index 08e84f2362..0000000000 --- a/recipes-qt/qt5/files/linux.conf +++ /dev/null @@ -1,74 +0,0 @@ -# -# qmake configuration for common linux -# - -QMAKE_CFLAGS_THREAD += -D_REENTRANT -QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD - -QMAKE_INCDIR = -QMAKE_LIBDIR = -QMAKE_INCDIR_X11 = -QMAKE_LIBDIR_X11 = -QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT) -QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT) -QMAKE_INCDIR_OPENGL = -QMAKE_LIBDIR_OPENGL = -QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL -QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL -QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL -QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL -QMAKE_INCDIR_EGL = -QMAKE_LIBDIR_EGL = -QMAKE_INCDIR_OPENVG = -QMAKE_LIBDIR_OPENVG = - -QMAKE_LIBS = -QMAKE_LIBS_DYNLOAD = -ldl -QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11) -QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM) -QMAKE_LIBS_NIS = -lnsl -QMAKE_LIBS_EGL = -lEGL -QMAKE_LIBS_OPENGL = -lGL -QMAKE_LIBS_OPENGL_QT = -lGL -QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM -QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -QMAKE_LIBS_OPENVG = -lOpenVG -QMAKE_LIBS_THREAD = -lpthread -QMAKE_LIBS_LIBUDEV = -ludev - -QMAKE_CFLAGS_WAYLAND = -QMAKE_INCDIR_WAYLAND = -QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client -QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server -QMAKE_LIBDIR_WAYLAND = -QMAKE_DEFINES_WAYLAND = -QMAKE_WAYLAND_SCANNER = wayland-scanner - -QMAKE_MOC = $(OE_QMAKE_MOC) -QMAKE_UIC = $(OE_QMAKE_UIC) -QMAKE_UIC3 = $(OE_QMAKE_UIC3) -QMAKE_RCC = $(OE_QMAKE_RCC) -QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML) -QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP) - -QMAKE_AR = $(OE_QMAKE_AR) cqs -QMAKE_OBJCOPY = objcopy -QMAKE_RANLIB = - -QMAKE_TAR = tar -cf -QMAKE_GZIP = gzip -9f - -QMAKE_COPY = cp -f -QMAKE_COPY_FILE = $(COPY) -QMAKE_COPY_DIR = $(COPY) -r -QMAKE_MOVE = mv -f -QMAKE_DEL_FILE = rm -f -QMAKE_DEL_DIR = rmdir -QMAKE_STRIP = $(OE_QMAKE_STRIP) -QMAKE_STRIPFLAGS_LIB += --strip-unneeded -QMAKE_CHK_DIR_EXISTS = test -d -QMAKE_MKDIR = mkdir -p -QMAKE_INSTALL_FILE = install -m 644 -p -QMAKE_INSTALL_PROGRAM = install -m 755 -p - -include(unix.conf) diff --git a/recipes-qt/qt5/qt5-5.0.0+git.inc b/recipes-qt/qt5/qt5-5.0.0+git.inc index 9f2e2f3172..a1ac0e7643 100644 --- a/recipes-qt/qt5/qt5-5.0.0+git.inc +++ b/recipes-qt/qt5/qt5-5.0.0+git.inc @@ -3,8 +3,6 @@ # each module needs to define valid SRCREV SRC_URI += " \ git://qt.gitorious.org/qt/${QT_MODULE}.git;protocol=git;branch=stable \ - file://linux.conf \ - file://g++.conf \ " S = "${WORKDIR}/git" diff --git a/recipes-qt/qt5/qt5-5.0.1.inc b/recipes-qt/qt5/qt5-5.0.1.inc index 4bdfaeed54..dcfc7d1151 100644 --- a/recipes-qt/qt5/qt5-5.0.1.inc +++ b/recipes-qt/qt5/qt5-5.0.1.inc @@ -4,8 +4,6 @@ QT_VERSION ?= "${PV}" SRC_URI += " \ http://releases.qt-project.org/qt5/${QT_VERSION}/submodules_tar/${QT_MODULE}-opensource-src-${QT_VERSION}.tar.xz \ - file://linux.conf \ - file://g++.conf \ " S = "${WORKDIR}/${QT_MODULE}-opensource-src-${QT_VERSION}" diff --git a/recipes-qt/qt5/qt5.inc b/recipes-qt/qt5/qt5.inc index 2a0ae591f3..b8d09fe3bf 100644 --- a/recipes-qt/qt5/qt5.inc +++ b/recipes-qt/qt5/qt5.inc @@ -56,21 +56,9 @@ QT_CONFIG_FLAGS += " \ " do_configure() { -# set_arch + set_arch set_endian - if [ ! -e bin/qmake ]; then - ln -sf ${OE_QMAKE_QMAKE} bin/qmake - fi - - if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then - ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++ - fi - - # replace common files with our version - cp -f ${WORKDIR}/g++.conf mkspecs/common/g++-unix.conf - cp -f ${WORKDIR}/linux.conf mkspecs/common/linux.conf - # Avoid problems with the linkers, since we want the linker to be g++ unset LD } diff --git a/recipes-qt/qt5/qtbase-native.inc b/recipes-qt/qt5/qtbase-native.inc index d9cc487043..0f196e4ea1 100644 --- a/recipes-qt/qt5/qtbase-native.inc +++ b/recipes-qt/qt5/qtbase-native.inc @@ -15,6 +15,7 @@ QT_DIR_NAME ?= "qt5" SRC_URI += " \ file://0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ file://0001-Always-build-uic.patch \ + file://qmake.conf \ " EXTRA_ENV = 'MAKE="make -e ${PARALLEL_MAKE}"' @@ -56,6 +57,20 @@ EXTRA_OECONF = " \ -no-rpath \ " +# qtbase is exception, we need to use mkspecs from ${S} +QMAKE_MKSPEC_PATH_NATIVE = "${S}/mkspecs" + +do_configure_prepend() { + if [ ! -e ${OE_QMAKESPEC} ]; then + mkdir -p ${OE_QMAKESPEC} + fi + # use default qplatformdefs.h from linux-g++ + cp -va ${QMAKE_MKSPEC_PATH_NATIVE}/linux-g++/qplatformdefs.h ${OE_QMAKESPEC}/ + # use modified qmake.conf which is using OE_QMAKE_* shell variables + # exported from qmake5_base.bbclass to define toolchain and flags + cp -va ${WORKDIR}/qmake.conf ${OE_QMAKESPEC}/ +} + do_configure() { # Avoid setting QMAKE_LINK from LD (since we want the linker to be g++) unset LD @@ -65,9 +80,4 @@ do_configure() { do_install() { oe_runmake install INSTALL_ROOT=${D} - ln -sf linux-g++ ${D}${datadir}/${QT_DIR_NAME}/mkspecs/${BUILD_OS}-oe-g++ - - # replace common files with our version - cp -f ${WORKDIR}/g++.conf ${D}${datadir}/${QT_DIR_NAME}/mkspecs/common/g++-unix.conf - cp -f ${WORKDIR}/linux.conf ${D}${datadir}/${QT_DIR_NAME}/mkspecs/common/linux.conf } diff --git a/recipes-qt/qt5/qtbase.inc b/recipes-qt/qt5/qtbase.inc index e42dc350c0..644c122cd4 100644 --- a/recipes-qt/qt5/qtbase.inc +++ b/recipes-qt/qt5/qtbase.inc @@ -5,6 +5,7 @@ SRC_URI += " \ file://0002-qmake-is-already-built-in-qt5-tools-native.patch \ file://0003-Allow-building-a-separate-qmake-for-the-target.patch \ file://0004-configure-eval-QMAKE_CXX.patch \ + file://qmake.conf \ " DEPENDS += "qtbase-native virtual/libgl freetype jpeg libpng zlib openssl glib-2.0 ${ICU}" @@ -48,9 +49,19 @@ EOF } # qtbase is exception, we need to use mkspecs from ${S} +QMAKE_MKSPEC_PATH = "${S}/mkspecs" OE_XQMAKESPEC="${S}/mkspecs/${TARGET_OS}-oe-g++" do_configure_append() { + if [ ! -e ${OE_XQMAKESPEC} ]; then + mkdir -p ${OE_XQMAKESPEC} + fi + # use default qplatformdefs.h from linux-g++ + cp -va ${QMAKE_MKSPEC_PATH}/linux-g++/qplatformdefs.h ${OE_XQMAKESPEC}/ + # use modified qmake.conf which is using OE_QMAKE_* shell variables + # exported from qmake5_base.bbclass to define toolchain and flags + cp -va ${WORKDIR}/qmake.conf ${OE_XQMAKESPEC}/ + ./configure -v \ -dont-process \ -opensource -confirm-license \ diff --git a/recipes-qt/qt5/qtbase/qmake.conf b/recipes-qt/qt5/qtbase/qmake.conf new file mode 100644 index 0000000000..d60288e3f8 --- /dev/null +++ b/recipes-qt/qt5/qtbase/qmake.conf @@ -0,0 +1,39 @@ +# +# qmake configuration for linux-g++ with modifications for building with OpenEmbedded +# + +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental gdb_dwarf_index +QMAKE_INCREMENTAL_STYLE = sublib + +include(../common/linux.conf) + +# QMAKE_ (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)