view gub/specs/darwin/odcctools.py @ 6189:004832ab02c1

Bugfix: odcctools depends on automake.
author Jan Nieuwenhuizen <janneke@gnu.org>
date Sat, 25 Aug 2012 20:15:42 +0200
parents 5d6c1bb0dd46
children b49f865441a4
line wrap: on
line source

import os
#
from gub import cross
from gub import misc

# FIMXE: weird, we should be cross/odcctools
class Odcctools (cross.AutoBuild): #skews dependencies:, build.SdkBuild):
    source = ('svn:http://iphone-dev.googlecode.com/svn&module=trunk'
              '&branch=odcctools'
              '&revision=278')
    # let's use cached tarball
    source = 'http://lilypond.org/download/gub-sources/odcctools-iphone-dev-278.tar.gz'
    patches = ['odcctools-r211-word.patch',
               'odcctools-config-Wno-long-double.patch']
    dependencies = ['darwin-sdk', 'tools::flex', 'tools::automake']
    def __init__ (self, settings, source):
        cross.AutoBuild.__init__ (self, settings, source)
        if 'x86_64-linux' in self.settings.build_architecture:
            # odcctools does not build with 64 bit compiler
            cross.change_target_package_x86 (self, self.add_linux_x86_env ())
        if 'x86_64-linux' in self.settings.build_architecture:
            self.dependencies += ['linux-x86::glibc']
        self.configure_variables = (cross.AutoBuild.configure_variables
                                        + ' CFLAGS=-D_FORTIFY_SOURCE=0')
    def autoupdate (self):
        # PROMOTEME: run aclocal if ^AM_ macros inside configure.*
        self.system ('cd %(srcdir)s && aclocal')
        cross.AutoBuild.autoupdate (self)
    def stages (self):
        return misc.list_insert_before (cross.AutoBuild.stages (self),
                                        'compile', ['patch_configure'])
    def add_linux_x86_env (self):
        # Do not use 'root', 'usr', 'cross', rather use from settings,
        # that enables changing system root, prefix, etc.
        linux_x86_dir = (self.settings.alltargetdir + '/linux-x86'
                         + self.settings.root_dir)
        linux_x86_bin = (linux_x86_dir
                         + self.settings.prefix_dir
                         + self.settings.cross_dir
                         + '/bin')
        linux_x86_i686_linux_bin = (linux_x86_dir
                                    + self.settings.prefix_dir
                                    + self.settings.cross_dir
                                    + '/i686-linux'
                                    + '/bin')
        tools_dir = (self.settings.alltargetdir + '/tools'
                     + self.settings.root_dir)
        tools_bin = (tools_dir
                     + self.settings.prefix_dir
                     + '/bin')
        return {'PATH': linux_x86_bin + ':' + linux_x86_i686_linux_bin + ':' + tools_bin + ':' + os.environ['PATH'] }
    def patch_configure (self):
        ## remove LD64 support.
        self.file_sub ([('ld64','')], self.builddir () + '/Makefile')
    def build_environment (self):
        return self.add_linux_x86_env ()
    def install_librestrict_stat_helpers (self):
        # librestrict stats PATH to find gnm and gstrip
        self.system ('''
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)sas %(toolchain_prefix)sgas
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)snm %(toolchain_prefix)sgnm
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)sstrip %(toolchain_prefix)sgstrip
mkdir -p %(install_prefix)s%(cross_dir)s/%(target_architecture)s/bin
cd %(install_prefix)s%(cross_dir)s/bin && for i in ar as ld nm ranlib strip; do ln %(toolchain_prefix)s$i ../%(target_architecture)s/bin/$i; done
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)sas ../%(target_architecture)s/bin/gas
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)snm ../%(target_architecture)s/bin/gnm
cd %(install_prefix)s%(cross_dir)s/bin && ln %(toolchain_prefix)sstrip ../%(target_architecture)s/bin/gstrip
''')
    def install (self):
        cross.AutoBuild.install (self)
        self.install_librestrict_stat_helpers ()