diff options
-rw-r--r-- | packages/qte/qtopia-core/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/qte/qtopia-core/linux-oe-qmake.conf | 95 | ||||
-rw-r--r-- | packages/qte/qtopia-core_4.2.0.bb | 179 |
3 files changed, 274 insertions, 0 deletions
diff --git a/packages/qte/qtopia-core/.mtn2git_empty b/packages/qte/qtopia-core/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/qte/qtopia-core/.mtn2git_empty diff --git a/packages/qte/qtopia-core/linux-oe-qmake.conf b/packages/qte/qtopia-core/linux-oe-qmake.conf new file mode 100644 index 0000000000..fc5ac6dc5c --- /dev/null +++ b/packages/qte/qtopia-core/linux-oe-qmake.conf @@ -0,0 +1,95 @@ +# +# qmake configuration for linux-oe-g++ / OpenEmbedded Build System / http://openembedded.org +# + +MAKEFILE_GENERATOR = UNIX +TEMPLATE = app +CONFIG += qt warn_on release link_prl +QT += core gui network +QMAKE_INCREMENTAL_STYLE = sublib + +QMAKE_CC = $(OE_QMAKE_CC) +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = yacc +QMAKE_YACCFLAGS = -d +QMAKE_YACCFLAGS_MANGLE = -p $base -b $base +QMAKE_YACC_HEADER = $base.tab.h +QMAKE_YACC_SOURCE = $base.tab.c +QMAKE_CFLAGS = -pipe $(OE_QMAKE_CFLAGS) $(CFLAGS_EXTRA) +QMAKE_CFLAGS_DEPS = -M +QMAKE_CFLAGS_WARN_ON = -Wall -W +QMAKE_CFLAGS_WARN_OFF = +QMAKE_CFLAGS_RELEASE = $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2) +QMAKE_CFLAGS_DEBUG = -g +QMAKE_CFLAGS_SHLIB = -fPIC +QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +QMAKE_CFLAGS_THREAD = -D_REENTRANT +QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden + +QMAKE_CXX = $(OE_QMAKE_CXX) +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS) $(CXXFLAGS_EXTRA) +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_DEBUG = $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB +QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC +QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD +QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden + +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_QTOPIA = $(OE_QMAKE_INCDIR_QTOPIA) +QMAKE_LIBDIR_QTOPIA = $(OE_QMAKE_LIBDIR_QTOPIA) + + +QMAKE_LINK = $(OE_QMAKE_LINK) +QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK) +QMAKE_LFLAGS = $(OE_QMAKE_LDFLAGS) $(LFLAGS_EXTRA) +QMAKE_LFLAGS_RELEASE = +QMAKE_LFLAGS_DEBUG = +QMAKE_LFLAGS_SHLIB = -shared +QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB +QMAKE_LFLAGS_SONAME = -Wl,-soname, +QMAKE_LFLAGS_THREAD = +QMAKE_RPATH = -Wl,-rpath-link, + +QMAKE_LIBS = $(LIBS_EXTRA) +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = +QMAKE_LIBS_X11SM = +QMAKE_LIBS_QT = -lqte +QMAKE_LIBS_QT_THREAD = -lqte-mt +QMAKE_LIBS_QT_OPENGL = -lqgl +QMAKE_LIBS_THREAD = -lpthread +QMAKE_LIBS_QTOPIA = -lqpe -lqtopia +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_MOC = $$[QT_INSTALL_BINS]/moc +QMAKE_UIC = $$[QT_INSTALL_BINS]/uic + +QMAKE_AR = $(OE_QMAKE_AR) cqs +QMAKE_RANLIB = $(OE_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 +load(qt_config) diff --git a/packages/qte/qtopia-core_4.2.0.bb b/packages/qte/qtopia-core_4.2.0.bb new file mode 100644 index 0000000000..2f937c5d84 --- /dev/null +++ b/packages/qte/qtopia-core_4.2.0.bb @@ -0,0 +1,179 @@ +DESCRIPTION = "Qtopia Core (aka: Qt/Embedded)" +SECTION = "libs" +LICENSE = "GPL" +PRIORITY = "optional" +HOMEPAGE = "http://www.trolltech.com" +DEPENDS = "glib-2.0 dbus-glib tslib" +PR = "r0" + +SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \ + file://linux-oe-qmake.conf" + +S = "${WORKDIR}/qtopia-core-opensource-src-${PV}" + +PARALLEL_MAKE = "" + +inherit pkgconfig + +# I'm not sure about the globals QTDIR and QTOPIADIR, or if they're even +# needed. On the same issue, I'm not sure what the best place for all the +# Qtopia Core related files is. For now, I've just put the libraries in +# ${libdir}, the includes in ${includedir} etc. Other possibilities are +# to sandbox everything (e.g., in /usr/local/Trolltech or /opt/Qtopia oslt), +# or to put libraries in /usr/lib/qtopia (or /usr/lib/qt4) etc. As said, +# I'm fine with this, but I'm also fine with another solution. + +# set QTDIR and QTOPIADIR globally (change QTOPIA dir to QTDIR?) +# This should be the default for other packages: +# export QTDIR = "${STAGING_DIR}/${HOST_SYS}/qt4" +# export QTOPIADIR = "${STAGING_DIR}/${HOST_SYS}/qtopia" +export QTDIR = "${S}" +export QTOPIADIR = "${S}" + +# 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 +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="${STRIP}" +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" + + +# FIXME +# We should have architecture detection here and translate it to the correct +# Qtopia -embedded switch +QT_ARCH = "arm" +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 -no-freetype \ + -nomake demos -nomake examples -nomake tools \ + -qt-mouse-tslib" + + +# We might want to package all the libraries separately, so you can really +# fine-tune what to install. This is e.g. done in qt4-x11-free_4.1.2.bb. +# What should these packages be called? I'm tempted to call them the same +# as in qt4 version, as the API is supposed to be compatible, e.g. +# libqtcore4 and libqtgui4. This will however conflict if you have QT and +# Qtopia, but this is something you don't want anyway, I guess. +# Another solution is making virtual/libqtfoo4, and DEPENDing on that one +# and let both the PACKAGES in QT and Qtopia PROVIDE these. The packages +# themselves could then be called libqtopiafoo4. +# I'll postpone this discussion by not making separate Qtopia packages. + +# Also, I don't package the plugins and translations atm, I don't use them +# and I don't feel like thinking about a sensible separation. + +# PACKAGES += "libqtopiacore4 libqtopiagui4 ..." +# RDEPENDS_${PN} += "..." + +# The default included fonts are around 75MB and consist of a number of +# FreeType-renderable fonts as well as QPF (Qtopia Prerendered Fonts). +# As FreeType is generally slow on embedded platforms, and 75MB is +# quite huge, we downsize the fonts dir in the do_install. I've decided +# to include only the QPF (Helvetica and Fixed), amounting to 500KB. This +# also results in tremendously faster application startup time. +# You might want to package the fonts separately, or include all fonts in +# a separate package. +FILES_${PN} += " /usr/lib/fonts/* " + +do_configure() { + # 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} +} + +do_install() { + oe_runmake install INSTALL_ROOT=${D} + + # These are host binaries, we should only use them in staging + rm -rf ${D}/${bindir} + rm -rf ${D}/${datadir}/mkspecs + + # Downsize on the fonts, we're only packaging the Helvetica and + # Fixed, only the QPF versions. Maybe later add an additional + # package for all fonts. + rm -f ${D}/${libdir}/fonts/* + cp -a ${S}/lib/fonts/helvetica*qpf ${D}/${libdir}/fonts + cp -a ${S}/lib/fonts/fixed*qpf ${D}/${libdir}/fonts + touch ${D}/${libdir}/fonts/fontdir +} + +STAGE_TEMP = "${WORKDIR}/temp-staging" +do_stage() { + rm -rf ${STAGE_TEMP} + mkdir -p ${STAGE_TEMP} + oe_runmake install INSTALL_ROOT=${STAGE_TEMP} + + cp -af ${STAGE_TEMP}/$includedir/* ${STAGING_INCDIR} + + for i in ${STAGE_TEMP}/${libdir}/*.la + do + oe_libinstall -C ${STAGE_TEMP}/${libdir} \ + -so $(basename $i .la) ${STAGING_LIBDIR} + done + + # Install qmake/moc/uic/rcc in staging (is this needed?) + install -m 0755 ${STAGE_TEMP}/${bindir}/rcc ${STAGING_BINDIR} + install -m 0755 ${STAGE_TEMP}/${bindir}/moc ${STAGING_BINDIR} + install -m 0755 ${STAGE_TEMP}/${bindir}/uic ${STAGING_BINDIR} + install -m 0755 ${STAGE_TEMP}/${bindir}/qmake ${STAGING_BINDIR} + # what about mkspecs? + + rm -rf ${STAGE_TEMP} +} + |