packages/qt4/qt4-x11-free,qtopia-core: Unify configure and compile of Qt4
authorHolger Freyther <zecke@selfish.org>
Mon, 24 Dec 2007 12:41:20 +0000 (12:41 +0000)
committerHolger Freyther <zecke@selfish.org>
Mon, 24 Dec 2007 12:41:20 +0000 (12:41 +0000)
    Adjust packaging to look into the directories we configured.

packages/qt4/qt4-x11-free.inc
packages/qt4/qt4-x11-free_4.3.3.bb
packages/qt4/qt4_arch.inc
packages/qt4/qt_configuration.inc [new file with mode: 0644]
packages/qt4/qt_depends.inc
packages/qt4/qt_packaging.inc
packages/qt4/qtopia-core.inc
packages/qt4/qtopia-core_4.3.3.bb

index 1ea8930..74773cd 100644 (file)
@@ -18,6 +18,7 @@ S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
 QT_BASE_NAME = "qt4"
 QT_BASE_LIB  = "libqt"
 QT_LIBRARY_NAME = "libQt"
+QT_DIR_NAME = "qt4"
 require qt_packaging.inc
 require qt_depends.inc
 
index b887654..8b557a0 100644 (file)
@@ -1,50 +1,11 @@
-PARALLEL_MAKE = ""
-export QTDIR = "${S}"
 STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4"
-EXTRA_OEMAKE = "-e"
 
-require qt4_arch.inc
 
-QT_ARCH := "${@qt_arch(d)}"
 
 # FIXME:
 # * add missing options
-QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \
-                   -no-tablet -no-xkb -no-nis -no-cups -no-opengl \
-                   -no-sse -no-sse2 -no-mmx -no-3dnow \
-                   -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
-                   -qdbus \
-                   -verbose -stl -no-accessibility \
-                   -pch -no-glib"
+QT_CONFIG_FLAGS += "-no-xinerama -no-tablet -no-xkb -no-opengl"
 
-EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after DEFINES+=QT_NO_XIM INCPATH+=${STAGING_INCDIR} \
-             INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
-             QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
-             AR="${TARGET_PREFIX}ar cqs" \
-             MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
-
-do_configure() {
-       echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri
-       echo "DEFINES += QT_NO_XIM" >>src/qbase.pri
-       unset QMAKESPEC
-       ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
-       ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++
-       #export QMAKESPEC="linux-oe-g++"
-       #rm -rf ./mkspecs
-       #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs
-       echo yes | ./configure -prefix / -platform ${TARGET_OS}-oe-g++ -crossarch ${QT_ARCH} ${QT_CONFIG_FLAGS} -fast \
-               -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql
-}
-
-# FIXME: Might want to compile the cross tools for the -dev packages as well...
-do_compile() {
-       unset CFLAGS CXXFLAGS
-       install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
-       install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
-       install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
-
-       oe_runmake ${EXTRA_ENV}
-}
 
 PARTS = "3Support AssistantClient Core DBus Designer DesignerComponents Gui Network Script Sql Svg Test Xml"
 
index 63babd9..60ede1d 100644 (file)
@@ -1,3 +1,5 @@
+inherit siteinfo
+
 def qt_arch(d):
     import bb, re
     arch = bb.data.getVar('TARGET_ARCH', d, 1)
@@ -11,3 +13,11 @@ def qt_arch(d):
         arch = "mips"
     return arch
 
+def qt_endian(d):
+    import bb
+    if bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "le":
+        return "-little-endian"
+    elif bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "be":
+        return "-big-endian"
+    else:
+        assert False
diff --git a/packages/qt4/qt_configuration.inc b/packages/qt4/qt_configuration.inc
new file mode 100644 (file)
index 0000000..afa716d
--- /dev/null
@@ -0,0 +1,67 @@
+require qt4_arch.inc
+QT_ARCH := "${@qt_arch(d)}"
+QT_ENDIAN = "${@qt_endian(d)}"
+
+QT_CONFIG_FLAGS = "-release -no-cups -no-accessibility -reduce-relocations \
+                   -shared -no-nas-sound -no-sm -no-nis \
+                   -qt-gif -system-libjpeg -system-libpng -system-zlib \
+                    -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
+                   -pch -qdbus -stl -glib"
+
+PARALLEL_MAKE = ""
+EXTRA_OEMAKE = "-e"
+
+EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \
+             INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
+             QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
+             AR="${TARGET_PREFIX}ar cqs" \
+             MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
+
+do_configure() {
+    unset QMAKESPEC
+    ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+    ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++
+
+    echo yes | ./configure -v \
+            -prefix ${prefix} \
+            -bindir ${bindir} \
+            -libdir ${libdir} \
+            -datadir ${datadir} \
+            -sysconfdir ${sysconfdir} \
+            -docdir ${docdir}/${QT_DIR_NAME} \
+            -headerdir ${includedir} \
+            -plugindir ${libdir}/${QT_DIR_NAME}/plugins \
+            -translationdir ${datadir}/${QT_DIR_NAME}/translations \
+            -examplesdir ${bindir}/${QT_DIR_NAME}/examples \
+            -demosdir ${bindir}/${QT_DIR_NAME}/demos \
+            -platform ${TARGET_OS}-oe-g++ \
+            -xplatform ${TARGET_OS}-oe-g++ \
+            -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \
+            -crossarch ${QT_ARCH}
+            ${QT_CONFIG_FLAGS} -fast \
+            -L${STAGING_LIBDIR} -I${STAGING_INCDIR}
+            -I${STAGING_INCDIR}/freetype2
+}
+
+do_compile() {
+    unset CFLAGS CXXFLAGS
+    install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
+    install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
+    install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
+
+    oe_runmake ${EXTRA_ENV}
+}
+
+#
+# Fixup some pkgconfig files
+# moc_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/moc
+# uic_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/uic
+#
+# Libs: -L${libdir} -lQtNetwork -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib  $(LIBS_EXTRA) -lQtCore -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib -lm -lrt -lpthread -ldl
+#
+do_compile_append() {
+    cd ${S}/lib/pkgconfig
+    sed -i s#"-L${S}/lib"##g *.pc
+    sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# *.pc
+    sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# *.pc
+}
index daafa21..289b625 100644 (file)
@@ -1,3 +1,3 @@
 inherit pkgconfig qmake_base
 
-DEPENDS += " uicmoc4-native qmake2-native freetype jpeg dbus openssl"
+DEPENDS += " uicmoc4-native qmake2-native freetype jpeg libpng zlib dbus openssl glib-2.0"
index 0194286..86ab0e7 100644 (file)
@@ -81,16 +81,13 @@ FILES_${QT_BASE_LIB}dbus4                   = "${libdir}/${QT_LIBRARY_NAME}DBus.
 FILES_${QT_BASE_LIB}dbus4-dev               = "${libdir}/${QT_LIBRARY_NAME}DBus.so"
 FILES_${QT_BASE_LIB}dbus4-dbg               = "${libdir}/.debug/${QT_LIBRARY_NAME}DBus*"
 
-FILES_${QT_BASE_NAME}-plugins-accessible   = "${libdir}/plugins/accessible/*.so"
-FILES_${QT_BASE_NAME}-plugins-codecs       = "${libdir}/plugins/codecs/*.so"
-FILES_${QT_BASE_NAME}-plugins-designer     = "${libdir}/plugins/designer/*.so"
-FILES_${QT_BASE_NAME}-plugins-imageformats = "${libdir}/plugins/imageformats/*.so"
-FILES_${QT_BASE_NAME}-plugins-sqldrivers   = "${libdir}/plugins/sqldrivers/*.so"
-FILES_${QT_BASE_NAME}-plugins-inputmethods = "${libdir}/plugins/inputmethods/*.so"
-FILES_${QT_BASE_NAME}-plugins-iconengines  = "${libdir}/plugins/iconengines/*.so"
-
-FILES_${QT_BASE_NAME}-plugins += "${datadir}/qtopia/plugins/*/*.so"
-FILES_${QT_BASE_NAME}-plugins-dbg += "${datadir}/qtopia/plugins/*/.debug/*.so"
+FILES_${QT_BASE_NAME}-plugins-accessible   = "${libdir}/${QT_DIR_NAME}/plugins/accessible/*.so"
+FILES_${QT_BASE_NAME}-plugins-codecs       = "${libdir}/${QT_DIR_NAME}/plugins/codecs/*.so"
+FILES_${QT_BASE_NAME}-plugins-designer     = "${libdir}/${QT_DIR_NAME}/plugins/designer/*.so"
+FILES_${QT_BASE_NAME}-plugins-imageformats = "${libdir}/${QT_DIR_NAME}/plugins/imageformats/*.so"
+FILES_${QT_BASE_NAME}-plugins-sqldrivers   = "${libdir}/${QT_DIR_NAME}/plugins/sqldrivers/*.so"
+FILES_${QT_BASE_NAME}-plugins-inputmethods = "${libdir}/${QT_DIR_NAME}/plugins/inputmethods/*.so"
+FILES_${QT_BASE_NAME}-plugins-iconengines  = "${libdir}/${QT_DIR_NAME}/plugins/iconengines/*.so"
 
 FILES_${QT_BASE_NAME}-assistant            = "${bindir}/*assistant*"
 FILES_${QT_BASE_NAME}-designer             = "${bindir}/*designer*"
index dad062c..28ab2fb 100644 (file)
@@ -13,6 +13,7 @@ S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
 QT_BASE_NAME = "qtopiacore"
 QT_BASE_LIB  = "libqtopiacore"
 QT_LIBRARY_NAME = "libQt"
+QT_DIR_NAME = "qtopia"
 require qt_packaging.inc
 require qt_depends.inc
 
index d1a811c..e7187b9 100644 (file)
@@ -1,99 +1,7 @@
-# Qmake gets confused by environment variables, as it builds both HOST
-# and TARGET objects. The correct compiler settings come from the mkspec
-# and are set with the OE_QMAKE_ variables
-PARALLEL_MAKE = ""
-EXTRA_OEMAKE = " MAKEFLAGS= "
-
-# This stuff could also be done by inheriting qmake, but I didn't want to
-# bother with the qmake separation from the Qtopia configure. This separation
-# is probably nothing more than a patch on the configure and setting some
-# environment variables to use our own qmake/moc/uic, but that's something
-# to figure out later.
-export OE_QMAKE_CC="${CC}"
-export OE_QMAKE_CFLAGS="${CFLAGS}"
-export OE_QMAKE_CXX="${CXX}"
-export OE_QMAKE_CXXFLAGS="-fno-exceptions ${CXXFLAGS}"
-export OE_QMAKE_LDFLAGS="${LDFLAGS}"
-export OE_QMAKE_LINK="${CXX}"
-export OE_QMAKE_AR="${AR}"
-export OE_QMAKE_RANLIB="${RANLIB}"
-export OE_QMAKE_STRIP="echo"
-export OE_QMAKE_RPATH="-Wl,-rpath-link,"
-export OE_QMAKE_INCDIR_QT="${QTDIR}/include"
-export OE_QMAKE_LIBDIR_QT="${QTDIR}/lib"
-export OE_QMAKE_INCDIR_QTOPIA="${QTOPIADIR}/include"
-export OE_QMAKE_LIBDIR_QTOPIA="${QTOPIADIR}/lib"
-
-require qt4_arch.inc
-QT_ARCH := "${@qte_arch(d)}"
-
-# FIXME use info.bbclass once it has been commited
-QT_ENDIAN = "-little-endian"
-
-# We don't build the examples and demos atm. They're quite big and not used
-# frequently, only for testing maybe. Feel free to change and to package
-# them separately.
-QT_CONFIG_FLAGS = "-release \
-    -no-cups -no-accessibility \
-    -nomake demos -nomake examples -nomake tools -reduce-relocations \
+QT_CONFIG_FLAGS += " \
+    -nomake demos -nomake examples -nomake tools \
     -qt-mouse-tslib -qt-gfx-transformed -embedded ${QT_ARCH}"
 
-do_configure() {
-    # Hack to honor our compiler flags
-    sed -i s/-O2//g ${S}/mkspecs/*/qmake.conf
-    sed -i s/-O2//g ${S}/mkspecs/*/*/qmake.conf
-
-
-    # Install the OE build templates (something which might be done
-    # by inheriting qmake)
-    for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
-    do
-        install -d ${S}/mkspecs/$template
-        install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
-        ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
-    done
-
-    # The Qmake Makefile generation doesn't like these environment
-    # variables, as they mess up the HOST tools builds
-    unset CC
-    unset CXX
-    unset CFLAGS
-    unset CXXFLAGS
-    unset LDFLAGS
-
-    # For rationale behind the installation locations, see remark above
-    echo yes | ./configure -v \
-        -prefix ${prefix} \
-        -bindir ${bindir} \
-        -libdir ${libdir} \
-        -docdir ${docdir}/qtopia \
-        -headerdir ${includedir} \
-        -plugindir ${datadir}/qtopia/plugins \
-        -datadir ${datadir} \
-        -translationdir ${datadir}/qtopia/translations \
-        -sysconfdir ${sysconfdir} \
-        -examplesdir ${bindir}/qtopia/examples \
-        -demosdir ${bindir}/qtopia/demos \
-        -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \
-        -xplatform linux-oe-g++ \
-        ${QT_CONFIG_FLAGS} \
-        -L${STAGING_LIBDIR} -I${STAGING_INCDIR}
-}
-
-#
-# Fixup some pkgconfig files
-# moc_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/moc
-# uic_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/uic
-#
-# Libs: -L${libdir} -lQtNetwork -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib  $(LIBS_EXTRA) -lQtCore -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib -lm -lrt -lpthread -ldl
-#
-do_compile_append() {
-    cd ${S}/lib/pkgconfig
-    sed -i s#"-L${S}/lib"##g *.pc
-    sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# *.pc
-    sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# *.pc
-}
-
 do_stage_append() {
     echo "Fixing up Qt"
     cd ${STAGING_LIBDIR}/pkgconfig