+++ /dev/null
-#!/bin/sh
-
-PLATFORM_IOS=/Developer/Platforms/iPhoneOS.platform/
-PLATFORM_IOS_SIM=/Developer/Platforms/iPhoneSimulator.platform/
-SDK_IOS_VERSION="4.2"
-MIN_IOS_VERSION="3.0"
-OUTPUT_DIR="universal-ios"
-
-build_target () {
- local platform=$1
- local sdk=$2
- local arch=$3
- local triple=$4
- local builddir=$5
-
- mkdir -p "${builddir}"
- pushd "${builddir}"
- export CC="${platform}"/Developer/usr/bin/gcc-4.2
- export CFLAGS="-arch ${arch} -isysroot ${sdk} -miphoneos-version-min=${MIN_IOS_VERSION}"
- ../configure --host=${triple} && make
- popd
-}
-
-# Build all targets
-build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv6 arm-apple-darwin10 armv6-ios
-build_target "${PLATFORM_IOS}" "${PLATFORM_IOS}/Developer/SDKs/iPhoneOS${SDK_IOS_VERSION}.sdk/" armv7 arm-apple-darwin10 armv7-ios
-build_target "${PLATFORM_IOS_SIM}" "${PLATFORM_IOS_SIM}/Developer/SDKs/iPhoneSimulator${SDK_IOS_VERSION}.sdk/" i386 i386-apple-darwin10 i386-ios-sim
-
-# Create universal output directories
-mkdir -p "${OUTPUT_DIR}"
-mkdir -p "${OUTPUT_DIR}/include"
-mkdir -p "${OUTPUT_DIR}/include/armv6"
-mkdir -p "${OUTPUT_DIR}/include/armv7"
-mkdir -p "${OUTPUT_DIR}/include/i386"
-
-# Create the universal binary
-lipo -create armv6-ios/.libs/libffi.a armv7-ios/.libs/libffi.a i386-ios-sim/.libs/libffi.a -output "${OUTPUT_DIR}/libffi.a"
-
-# Copy in the headers
-copy_headers () {
- local src=$1
- local dest=$2
-
- # Fix non-relative header reference
- sed 's/<ffitarget.h>/"ffitarget.h"/' < "${src}/include/ffi.h" > "${dest}/ffi.h"
- cp "${src}/include/ffitarget.h" "${dest}"
-}
-
-copy_headers armv6-ios "${OUTPUT_DIR}/include/armv6"
-copy_headers armv7-ios "${OUTPUT_DIR}/include/armv7"
-copy_headers i386-ios-sim "${OUTPUT_DIR}/include/i386"
-
-# Create top-level header
-(
-cat << EOF
-#ifdef __arm__
- #include <arm/arch.h>
- #ifdef _ARM_ARCH_6
- #include "include/armv6/ffi.h"
- #elif _ARM_ARCH_7
- #include "include/armv7/ffi.h"
- #endif
-#elif defined(__i386__)
- #include "include/i386/ffi.h"
-#endif
-EOF
-) > "${OUTPUT_DIR}/ffi.h"
import os
import errno
import collections
-#developer_path =
-
class Platform(object):
pass
sdk = 'iphonesimulator'
arch = 'i386'
short_arch = arch
- triple = 'i386-apple-darwin10'
+ triple = 'i386-apple-darwin11'
sdkroot = sim_sdk_info['Path']
- version_min = '5.0'
+ version_min = '5.1.1'
- prefix = "#if !defined(__arm__) && !defined(__arm64__) && !defined(__x86_64__) && defined(__i386__)\n\n"
+ prefix = "#ifdef __i386__\n\n"
suffix = "\n\n#endif"
short_arch = arch
triple = 'x86_64-apple-darwin13'
sdkroot = sim_sdk_info['Path']
- version_min = '5.0'
+ version_min = '7.0'
- prefix = "#if !defined(__arm__) && !defined(__arm64__) && !defined(__i386__) && defined(__x86_64__)\n\n"
+ prefix = "#ifdef __x86_64__\n\n"
suffix = "\n\n#endif"
sdk = 'iphoneos'
arch = 'armv7'
short_arch = 'arm'
- triple = 'arm-apple-darwin10'
+ triple = 'arm-apple-darwin11'
sdkroot = device_sdk_info['Path']
- version_min = '5.0'
+ version_min = '5.1.1'
- prefix = "#if !defined(__arm64__) && defined(__arm__)\n\n"
+ prefix = "#ifdef __arm__\n\n"
suffix = "\n\n#endif"
sdkroot = device_sdk_info['Path']
version_min = '7.0'
- prefix = "#if !defined(__arm__) && defined(__arm64__)\n\n"
+ prefix = "#ifdef __arm64__\n\n"
suffix = "\n\n#endif"
suffix=suffix)
elif relroot == 'arm':
move_dir(arch='arm',
- prefix="#if !defined(__arm64__) && defined(__arm__)\n\n",
+ prefix="#ifdef __arm__\n\n",
suffix="\n\n#endif",
files=['sysv.S', 'trampoline.S', 'ffi.c'])
elif relroot == 'aarch64':
move_dir(arch='arm64',
- prefix="#if !defined(__arm__) && defined(__arm64__)\n\n",
+ prefix="#ifdef __arm64__\n\n",
suffix="\n\n#endif",
files=['sysv.S', 'ffi.c'])
elif relroot == 'x86':
move_dir(arch='i386',
- prefix="#if !defined(__arm__) && !defined(__arm64__) && !defined(__x86_64__) && defined(__i386__)\n\n",
+ prefix="#ifdef __i386__\n\n",
suffix="\n\n#endif",
files=['darwin.S', 'ffi.c'])
move_dir(arch='x86_64',
- prefix="#if !defined(__arm__) && !defined(__arm64__) && !defined(__i386__) && defined(__x86_64__)\n\n",
+ prefix="#ifdef __x86_64__\n\n",
suffix="\n\n#endif",
files=['darwin64.S', 'ffi64.c'])
import subprocess
import re
import os
+import errno
import collections
ret[k] = v
return ret
+
+def mkdir_p(path):
+ try:
+ os.makedirs(path)
+ except OSError as exc: # Python >2.5
+ if exc.errno == errno.EEXIST:
+ pass
+ else:
+ raise
+
desktop_sdk_info = sdkinfo('macosx')
desktop_sdk = latest_sdks()
-class desktop_platform_32(Platform):
+class desktop32_platform(Platform):
sdk = 'macosx'
arch = 'i386'
name = 'mac32'
- triple = 'i386-apple-darwin10'
+ triple = 'i386-apple-darwin11'
sdkroot = desktop_sdk_info['Path']
+ version_min = '10.7'
- prefix = "#if defined(__i386__) && !defined(__x86_64__)\n\n"
+ prefix = "#ifdef __i386__\n\n"
suffix = "\n\n#endif"
-class desktop_platform_64(Platform):
+class desktop64_platform(Platform):
sdk = 'macosx'
arch = 'x86_64'
name = 'mac'
- triple = 'x86_64-apple-darwin10'
+ triple = 'x86_64-apple-darwin11'
sdkroot = desktop_sdk_info['Path']
+ version_min = '10.7'
- prefix = "#if !defined(__i386__) && defined(__x86_64__)\n\n"
+ prefix = "#ifdef __x86_64__\n\n"
suffix = "\n\n#endif"
def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
- if not os.path.exists(dst_dir):
- os.makedirs(dst_dir)
-
+ mkdir_p(dst_dir)
out_filename = filename
if file_suffix:
suffix=suffix)
elif relroot == 'x86':
move_dir(arch='i386',
- prefix="#if defined(__i386__) && !defined(__x86_64__)\n\n",
+ prefix="#ifdef __i386__\n\n",
suffix="\n\n#endif",
files=['darwin.S', 'ffi.c'])
move_dir(arch='x86_64',
- prefix="#if !defined(__i386__) && defined(__x86_64__)\n\n",
+ prefix="#ifdef __x86_64__\n\n",
suffix="\n\n#endif",
files=['darwin64.S', 'ffi64.c'])
os.makedirs(build_dir)
env = dict(CC=xcrun_cmd('clang'),
LD=xcrun_cmd('ld'),
- CFLAGS='-arch %s -isysroot %s -mmacosx-version-min=10.6' % (platform.arch, platform.sdkroot))
+ CFLAGS='-arch %s -isysroot %s -mmacosx-version-min=%s' % (platform.arch, platform.sdkroot, platform.version_min))
working_dir = os.getcwd()
try:
os.chdir(build_dir)
def main():
move_source_tree('src', 'osx/src', 'osx/include')
move_source_tree('include', None, 'osx/include')
- build_target(desktop_platform_32)
- build_target(desktop_platform_64)
+ build_target(desktop32_platform)
+ build_target(desktop64_platform)
for header_name, archs in headers_seen.iteritems():
basename, suffix = os.path.splitext(header_name)