view gub/specs/qtopia-core.py @ 5471:54153c716744

Cleanup: move target.Change_target* to build.Change. This code has nothing to do with TARGET_dict whatsoever.
author Jan Nieuwenhuizen <janneke@gnu.org>
date Wed, 19 Aug 2009 10:23:14 +0200
parents 76fb4dd76328
children 3ecad6b5f9b1
line wrap: on
line source

from gub import build
from gub import context
from gub import misc
from gub import target

# TODO: base class Qmake build.
#       sort-out what exactly is Qmake build, qt, and qtopia-core specific

class Qtopia_core (target.AutoBuild):
    source = 'ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.2.2.tar.gz'
    dict = {
        'CC': 'gcc',
        'CXX': 'g++',
        #'LINK': '%(toolchain_prefix)sg++',
        }
    build.change_dict (self, dict)
    def _get_build_dependencies (self):
        return ['freetype-devel', 'tslib-devel']
    def patch (self):
        self.file_sub ([('pkg-config', '$PKG_CONFIG')],
                       '%(srcdir)s/configure')
    def configure_command (self):
#unset CC CXX; bash -x %(srcdir)s/configure
        return misc.join_lines ('''
unset CC CXX; bash %(srcdir)s/configure
-prefix %(prefix_dir)s
-bindir %(prefix_dir)s/bin
-libdir %(prefix_dir)s/lib
-embedded %(cpu)s
-fast
-headerdir %(prefix_dir)s/include
-datadir %(prefix_dir)s/share
-sysconfdir /etc
-xplatform qws/%(qmake_target_architecture)s
-depths 8,16,32

-little-endian
-release
-no-cups
-no-accessibility
-no-freetype
-no-glib
-nomake demos
-nomake examples
-nomake tools
-qt-mouse-tslib
-qt-libjpeg

-confirm-license

-docdir %(prefix_dir)s/share/doc/qtopia
-plugindir %(prefix_dir)s/share/qtopia/plugins
-translationdir %(prefix_dir)s/share/qtopia/translations
-examplesdir %(prefix_dir)s/share/doc/qtopia/examples
-demosdir %(prefix_dir)s/share/doc/qtopia/demos
-verbose
''')
    def configure (self):
        target.AutoBuild.configure (self)
        def dosub (logger, fname):
            loggedos.file_sub (logger,
                               [('-I/usr', self.expand ('-I%(system_prefix)s'))],
                               fname)
        self.map_locate (dosub, self.expand ('%(install_root)s'), 'Makefile')
    def install_command (self):
        return (target.AutoBuild.install_command (self)
                + ' INSTALL_ROOT=%(install_root)s')
    def license_files (self):
        return ['%(srcdir)s/LICENSE.GPL']
    def install (self):
        target.AutoBuild.install (self)
        self.system ('mkdir -p %(install_prefix)s/lib/pkgconfig')
        for i in ('QtCore.pc', 'QtGui.pc', 'QtNetwork.pc'):
            self.system ('''
mv %(install_prefix)s/lib/%(i)s %(install_prefix)s/lib/pkgconfig/%(i)s
''',
                         locals ())
            self.file_sub ([('includedir', 'deepqtincludedir')],
                           '%(install_prefix)s/lib/pkgconfig/%(i)s',
                           env=locals ())

class Qtopia_core__linux__arm__softfloat (Qtopia_core):
    @context.subst_method
    def qmake_target_architecture (self):
        return 'linux-arm-g++'
    def patch (self):
        Qtopia_core.patch (self)
        self.file_sub ([('arm-linux', '%(target_architecture)s')],
                       '%(srcdir)s/mkspecs/qws/%(qmake_target_architecture)s/qmake.conf')

Qtopia_core__linux__arm__vfp = Qtopia_core__linux__arm__softfloat

class Qtopia_core__linux__x86 (Qtopia_core):
    @context.subst_method
    def qmake_target_architecture (self):
        return 'linux-x86-g++'
    def patch (self):
        Qtopia_core.patch (self)
        # ugh, dupe
        self.system ('''
cd %(srcdir)s/mkspecs && cp -R linux-g++ %(qmake_target_architecture)s
''')
        self.file_sub ([
                ('= gcc', '= %(target_architecture)s-gcc'),
                ('= g\+\+', '= %(target_architecture)s-g++'),
                ('= ar', '= %(target_architecture)s-ar'),
                ('= ranlib', '= %(target_architecture)s-ranlib'),
                ],
                       '%(srcdir)s/mkspecs/qws/%(qmake_target_architecture)s/qmake.conf')

class Qtopia_core__linux__64 (Qtopia_core__linux__x86):
    @context.subst_method
    def qmake_target_architecture (self):
        return 'linux-x86_64-g++'