aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt4/qt4/nativesdk-qt4-tools.inc
blob: f067724e1ae56a5d7cadcbb8b763a70c9594a40a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
SUMMARY = "SDK tools for Qt version 4.x"
DEPENDS = "nativesdk-zlib nativesdk-dbus qt4-native ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/nativesdk-libx11', '', d)}"
SECTION = "libs"
HOMEPAGE = "http://qt-project.org/"
LICENSE = "LGPLv2.1 | GPLv3"

FILESEXTRAPATHS =. "${FILE_DIRNAME}/qt4-${PV}:"

inherit nativesdk qmake2

# This recipe builds the tools as static executables (using static libraries),
# so we need to avoid disabling them.
DISABLE_STATIC = ""

SRC_URI = "http://download.qt-project.org/archive/qt/4.8/${PV}/qt-everywhere-opensource-src-${PV}.tar.gz \
           file://0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \
           file://0004-configure-qmake-is-already-built-in-qt4-tools-native.patch \
           file://0005-configure-set-LFLAGS-to-pick-up-zlib-from-staging.patch \
           file://0006-configure-Use-OE_QMAKE_-values-to-specify-Qt-utility.patch \
           file://0007-dbus-Remove-const-usage-that-causes-compile-failure-.patch \
           file://0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch \
           file://0038-prevent-gcc-9.2-miscompiling-Q_FOREACH.patch \
           file://0039-silence-some-loud-but-innocent-warnings.patch \
           file://g++.conf \
           file://linux.conf"

UPSTREAM_CHECK_URI = "http://download.qt.io/archive/qt/4.8/"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"

S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"

LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
                    file://LICENSE.GPL3;md5=6e1694ee338db410417517884918d4d2 \
                    file://LGPL_EXCEPTION.txt;md5=0145c4d1b6f96a661c2c139dfb268fb6"

require qt4_arch.inc

# FIXME: make it work with "${STAGING_BINDIR_NATIVE}/pkg-config --cflags dbus-1"
EXTRA_OECONF = "-prefix ${prefix} \
                -qt-libjpeg -system-zlib \
                -no-libjpeg -no-libpng -no-libmng -no-libtiff \
                -no-accessibility \
                -no-cups \
                -no-exceptions  \
                -no-nas-sound \
                -no-nis -no-openssl \
                -verbose -release -fast -static \
                -platform ${TARGET_OS}-oe-g++ \
                -xplatform ${TARGET_OS}-oe-g++ \
                -arch ${QT_ARCH} \
                -embedded -no-freetype -no-glib -no-iconv \
                -qt3support \
                -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/dbus-1.0 \
                -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/lib/dbus-1.0/include"

# yank default -e, otherwise we get the following error:
# moc_qbuffer.cpp: No such file or directory
EXTRA_OEMAKE = " "

do_configure() {
    # Avoid problems with Qt 4.8.0 configure setting QMAKE_LINK from LD (since we want the linker to be g++)
    unset LD

    if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then
        ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++
    fi

    cp ../g++.conf mkspecs/common
    cp ../linux.conf mkspecs/common

    if [ -f mkspecs/common/g++-base.conf ] ; then
        # don't use host g++ even during configure (4.8.0+)
        sed -i -e "s#= g++#= ${CXX}#" mkspecs/common/g++-base.conf
        sed -i -e "s#= gcc#= ${CC}#" mkspecs/common/g++-base.conf
    fi

    # Use qmake from qt4-native for building
    if [ ! -e bin/qmake ]; then
        ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
    fi
    set_arch
    (echo o; echo yes) | CC="${CC}" CXX="${CXX}" ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
}

TOBUILD = "\
  src/tools/bootstrap \
  src/tools/moc \
  src/corelib \
  src/sql \
  src/xml \
  src/dbus \
  src/tools/uic \
  src/tools/rcc \
  src/network \
  src/gui \
  src/qt3support \
  src/tools/uic3 \
  tools/linguist/lrelease \
  tools/linguist/lupdate \
  tools/qdbus \
"

do_compile() {
    for i in ${TOBUILD}; do
        cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
    done

    # Build nativesdk qmake
    export QMAKESPEC="${S}/mkspecs/${TARGET_OS}-oe-g++"
    cd ${S}/qmake
    ${OE_QMAKE_QMAKE}
    oe_runmake CC="${CC}" CXX="${CXX}"
    cd ${S}
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 bin/qmake2 ${D}${bindir}/qmake2
    for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do
        install -m 0755 bin/${i} ${D}${bindir}/${i}4
    done

    (cd ${D}${bindir}; \
    ln -s qmake2 qmake; \
    for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \
        ln -s ${i}4 ${i}; \
    done)

    install -d ${D}${sysconfdir}
    cat >${D}${sysconfdir}/qt.conf <<EOF
[Paths]
Prefix = ${prefix}
EOF
}