summaryrefslogtreecommitdiff
path: root/config/ios.config
blob: cc2e5076363ce2da80847a86eaa2bb289399a11d (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
# 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'
elif target_distro_version == DistroVersion.IOS_6_1:
    v = '6.1'
else:
  raise FatalError("Distro version %s not supported" %(target_distro_version))

if not ios_platform:
    if target_arch == Architecture.X86:
        ios_platform = 'iPhoneSimulator'
    else:
        ios_platform = 'iPhoneOS'

# 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' % ios_platform
    sysroot = os.path.join(iphone_platform, 'SDKs', '%s%s.sdk' %(ios_platform, v))

ccache = use_ccache and 'ccache ' or ''
extra_cflags=''
if target_arch == Architecture.ARMv7:
    arch_cflags = ' -arch armv7 -mcpu=cortex-a8 -pipe'
elif target_arch == Architecture.ARM:
    arch_cflags = ' -arch armv6 -mcpu=arm1176jzf-s -pipe'
elif target_arch == Architecture.X86:
    arch_cflags = ' -arch i386 '
    extra_cflags='-D__IPHONE_OS_VERSION_MIN_REQUIRED=%s0000' % min_version.replace('.', '')
else:
  raise FatalError("Arch not supported")

# Toolchain environment
os.environ['CC']= os.path.join(iphone_platform, 'usr', 'bin', 'llvm-gcc-4.2')
os.environ['OBJC'] = os.environ['CC']
os.environ['LD']= os.path.join(iphone_platform, 'usr', 'bin', 'ld')
os.environ['AR']= os.path.join(iphone_platform, 'usr', 'bin', 'ar')
os.environ['NM']= os.path.join(iphone_platform, 'usr', 'bin', 'nm')
os.environ['NMEDIT']= os.path.join(iphone_platform, 'usr', 'bin', 'nmedit')
os.environ['RANLIB']= os.path.join(iphone_platform, 'usr', 'bin', 'ranlib')
os.environ['AS']= os.path.join(iphone_platform, 'usr', 'bin', 'as')
os.environ['GAS']= '%s %s' % ('gas-preprocessor.pl', os.environ['CC'])
os.environ['CFLAGS'] = '%s -isysroot %s -miphoneos-version-min=%s %s' %(arch_cflags, sysroot, min_version, extra_cflags)
os.environ['LDFLAGS'] = '%s -isysroot %s  -Wl,-iphoneos_version_min,%s -Wl,-undefined,error -Wl,-headerpad_max_install_names' %(arch_cflags, sysroot, min_version)

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 ios_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  %s' % os.environ['CC']
    os.environ['CXX'] = 'ccache  %s' % os.environ['CXX']

# For GLib
os.environ['glib_cv_stack_grows'] = 'yes'
os.environ['glib_cv_uscore'] = 'no'
os.environ['ac_cv_func_posix_getpwuid_r'] = 'yes'
os.environ['ac_cv_func_posix_getgrgid_r'] = 'yes'
os.environ['gt_cv_c_wchar_t'] = 'no'

# For pixman
os.environ['ac_cv_tls'] = 'none'