summaryrefslogtreecommitdiff
path: root/config/ios.config
blob: 754a3760d3a3c9ce285841fc9b7de3d1f9728ed2 (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
# This file contains the default configuration to compile for iPhoneOS
# platforms. It contains sensitive enviroment configuration that
# shouldn't be modified unless you know what you are doing.
# PLEASE, DO NOT EDIT THIS FILE

import os
from cerbero.utils import shell
from cerbero.config import Architecture, DistroVersion

# We don't want anything from macports detected in configure and
# used later. System libs are passed through the -isysroot option
allow_system_libs=False

min_version='6.0'

if target_distro_version == DistroVersion.IOS_6_0:
    v = '6.0'
    v1 = '60'
else:
  raise FatalError("Distro version %s not supported" %(target_distro_version))

# For Xcode >= 4.3, the SDK is installed in a completely different path
# FIXME This has not been tested, we should check what is the iOS toolchain path
# for xcode 4.3
sysroot = '/Developer/SDKs/%s%s.sdk' % (platform, v)
if not os.path.exists(sysroot):
    iphone_platform = '/Applications/Xcode.app/Contents/Developer/Platforms/%s.platform/Developer' %platform
    sysroot = os.path.join(iphone_platform, 'SDKs', '%s%s.sdk' %(platform, v))

ccache = use_ccache and 'ccache ' or ''
extra_cflags=''
if target_arch == Architecture.ARMv7:
    str_arch = ' armv7'
elif target_arch == Architecture.ARM:
    str_arch = ' armv6'
elif target_arch == Architecture.X86:
    str_arch = ' i386 '
    extra_cflags='-D__IPHONE_OS_VERSION_MIN_REQUIRED=%s0000' %v1
else:
  raise FatalError("Arch not supported")

# Toolchain environment
os.environ['CC']= os.path.join(iphone_platform, 'usr', 'bin', 'llvm-gcc-4.2')
os.environ['CFLAGS'] = '-arch %s -isysroot %s -miphoneos-version-min=%s %s' %(str_arch, sysroot, min_version, extra_cflags)
os.environ['LDFLAGS'] = '-arch %s -isysroot %s  -Wl,-iphoneos_version_min,%s -Wl,-undefined,error -Wl,-headerpad_max_install_names' %(str_arch, sysroot, min_version)
os.environ['OBJC'] = os.environ['CC']

os.environ['CXX']= os.path.join(iphone_platform, 'usr', 'bin', 'llvm-g++-4.2')
os.environ['CPP']= os.path.join(iphone_platform, 'usr', 'bin', 'llvm-cpp-4.2')
os.environ['CXXPP']= os.environ['CPP']
#os.environ['CPPFLAGS'] = '-arch armv7 -isysroot %s' %(sysroot)
os.environ['CXXFLAGS'] = os.environ['CFLAGS']


if platform == "iPhoneOS":
    simulator_headers = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator%s.sdk/usr/include' % v
    for missing_header in ["bzlib.h", "crt_externs.h"]:
        missing_path = os.path.join(sysroot, "usr", "include", missing_header)
        if not os.path.lexists(missing_path):
            # FIXME This is not smart especially as we need to sudo
            print "We need to create a syslink between %s and %s as they are missing in the device SDK" %(os.path.join(simulator_headers, missing_header), missing_path)
            shell.call("sudo ln -s %s %s" %(os.path.join(simulator_headers, missing_header), missing_path))


if use_ccache:
    os.environ['CC'] += 'ccache gcc'
    os.environ['CXX'] += 'ccache g++'