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
|
# 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['OBJCFLAGS'] = os.environ['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['OBJLDFLAGS'] = os.environ['LDFLAGS']
os.environ['CXX']= os.path.join(iphone_platform, 'usr', 'bin', 'llvm-g++-4.2')
os.environ['CPP']= "%s -E" % os.environ['CC']
os.environ['CXXPP']= os.environ['CPP']
os.environ['CPPFLAGS'] = '%s -isysroot %s' % (arch_cflags, 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'
|