Darwin: Merge build scripts, redo project, incl. arm64
authorZachary Waldowski <zach@waldowski.me>
Thu, 9 Jan 2014 18:15:06 +0000 (13:15 -0500)
committerZachary Waldowski <zach@waldowski.me>
Wed, 5 Feb 2014 19:28:58 +0000 (14:28 -0500)
.gitignore
build-ios.sh [deleted file]
generate-darwin-source-and-headers.py [new file with mode: 0644]
generate-ios-source-and-headers.py [deleted file]
generate-osx-source-and-headers.py [deleted file]
libffi.xcodeproj/project.pbxproj

index 6af76ac..f20d306 100644 (file)
@@ -18,4 +18,5 @@ libffi*gz
 autom4te.cache
 libffi.xcodeproj/xcuserdata
 libffi.xcodeproj/project.xcworkspace
-ios/
+build_*/
+darwin_*/
diff --git a/build-ios.sh b/build-ios.sh
deleted file mode 100755 (executable)
index 3dea242..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/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"
diff --git a/generate-darwin-source-and-headers.py b/generate-darwin-source-and-headers.py
new file mode 100644 (file)
index 0000000..05b7128
--- /dev/null
@@ -0,0 +1,209 @@
+#!/usr/bin/env python
+import subprocess
+import os
+import errno
+import collections
+import glob
+import argparse
+
+class Platform(object):
+    pass
+
+class simulator_platform(Platform):
+    directory = 'darwin_ios'
+    sdk = 'iphonesimulator'
+    arch = 'i386'
+    triple = 'i386-apple-darwin11'
+    version_min = '-miphoneos-version-min=5.1.1'
+
+    prefix = "#ifdef __i386__\n\n"
+    suffix = "\n\n#endif"
+    src_dir = 'x86'
+    src_files = ['darwin.S', 'ffi.c']
+
+
+class simulator64_platform(Platform):
+    directory = 'darwin_ios'
+    sdk = 'iphonesimulator'
+    arch = 'x86_64'
+    triple = 'x86_64-apple-darwin13'
+    version_min = '-miphoneos-version-min=7.0'
+
+    prefix = "#ifdef __x86_64__\n\n"
+    suffix = "\n\n#endif"
+    src_dir = 'x86'
+    src_files = ['darwin64.S', 'ffi64.c']
+
+
+class device_platform(Platform):
+    directory = 'darwin_ios'
+    sdk = 'iphoneos'
+    arch = 'armv7'
+    triple = 'arm-apple-darwin11'
+    version_min = '-miphoneos-version-min=5.1.1'
+
+    prefix = "#ifdef __arm__\n\n"
+    suffix = "\n\n#endif"
+    src_dir = 'arm'
+    src_files = ['sysv.S', 'trampoline.S', 'ffi.c']
+
+
+class device64_platform(Platform):
+    directory = 'darwin_ios'
+    sdk = 'iphoneos'
+    arch = 'arm64'
+    triple = 'aarch64-apple-darwin13'
+    version_min = '-miphoneos-version-min=7.0'
+
+    prefix = "#ifdef __arm64__\n\n"
+    suffix = "\n\n#endif"
+    src_dir = 'aarch64'
+    src_files = ['sysv.S', 'ffi.c']
+
+
+class desktop32_platform(Platform):
+    directory = 'darwin_osx'
+    sdk = 'macosx'
+    arch = 'i386'
+    triple = 'i386-apple-darwin10'
+    version_min = '-mmacosx-version-min=10.6'
+    src_dir = 'x86'
+    src_files = ['darwin.S', 'ffi.c']
+
+    prefix = "#ifdef __i386__\n\n"
+    suffix = "\n\n#endif"
+
+
+class desktop64_platform(Platform):
+    directory = 'darwin_osx'
+    sdk = 'macosx'
+    arch = 'x86_64'
+    triple = 'x86_64-apple-darwin10'
+    version_min = '-mmacosx-version-min=10.6'
+
+    prefix = "#ifdef __x86_64__\n\n"
+    suffix = "\n\n#endif"
+    src_dir = 'x86'
+    src_files = ['darwin64.S', 'ffi64.c']
+
+
+def mkdir_p(path):
+    try:
+        os.makedirs(path)
+    except OSError as exc:  # Python >2.5
+        if exc.errno == errno.EEXIST:
+            pass
+        else:
+            raise
+
+
+def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
+    mkdir_p(dst_dir)
+    out_filename = filename
+
+    if file_suffix:
+        split_name = os.path.splitext(filename)
+        out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
+
+    with open(os.path.join(src_dir, filename)) as in_file:
+        with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
+            if prefix:
+                out_file.write(prefix)
+
+            out_file.write(in_file.read())
+
+            if suffix:
+                out_file.write(suffix)
+
+
+def list_files(src_dir, pattern=None, filelist=None):
+    if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern))
+    for file in filelist:
+        yield os.path.basename(file)
+
+
+def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None):
+    for filename in list_files(src_dir, pattern=pattern, filelist=filelist):
+        move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix)
+
+
+def copy_src_platform_files(platform):
+    src_dir = os.path.join('src', platform.src_dir)
+    dst_dir = os.path.join(platform.directory, 'src', platform.src_dir)
+    copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix)
+
+
+def build_target(platform, platform_headers):
+    def xcrun_cmd(cmd):
+        return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch)
+
+    tag='%s-%s' % (platform.sdk, platform.arch)
+    build_dir = 'build_%s' % tag
+    mkdir_p(build_dir)
+    env = dict(CC=xcrun_cmd('clang'),
+               LD=xcrun_cmd('ld'),
+               CFLAGS='%s' % (platform.version_min))
+    working_dir = os.getcwd()
+    try:
+        os.chdir(build_dir)
+        subprocess.check_call(['../configure', '-host', platform.triple], env=env)
+    finally:
+        os.chdir(working_dir)
+
+    for src_dir in [build_dir, os.path.join(build_dir, 'include')]:
+        copy_files(src_dir,
+                   os.path.join(platform.directory, 'include'),
+                   pattern='*.h',
+                   file_suffix=platform.arch,
+                   prefix=platform.prefix,
+                   suffix=platform.suffix)
+
+        for filename in list_files(src_dir, pattern='*.h'):
+            platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix))
+
+
+def make_tramp():
+    with open('src/arm/trampoline.S', 'w') as tramp_out:
+        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
+        p.wait()
+
+
+def generate_source_and_headers(generate_osx=True, generate_ios=True):
+    copy_files('src', 'darwin_common/src', pattern='*.c')
+    copy_files('include', 'darwin_common/include', pattern='*.h')
+
+    if generate_ios:
+        make_tramp()
+        copy_src_platform_files(simulator_platform)
+        copy_src_platform_files(simulator64_platform)
+        copy_src_platform_files(device_platform)
+        copy_src_platform_files(device64_platform)
+    if generate_osx:
+        copy_src_platform_files(desktop32_platform)
+        copy_src_platform_files(desktop64_platform)
+
+    platform_headers = collections.defaultdict(set)
+
+    if generate_ios:
+        build_target(simulator_platform, platform_headers)
+        build_target(simulator64_platform, platform_headers)
+        build_target(device_platform, platform_headers)
+        build_target(device64_platform, platform_headers)
+    if generate_osx:
+        build_target(desktop32_platform, platform_headers)
+        build_target(desktop64_platform, platform_headers)
+
+    mkdir_p('darwin_common/include')
+    for header_name, tag_tuples in platform_headers.iteritems():
+        basename, suffix = os.path.splitext(header_name)
+        with open(os.path.join('darwin_common/include', header_name), 'w') as header:
+            for tag_tuple in tag_tuples:
+                header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2]))
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--only-ios', action='store_true', default=False)
+    parser.add_argument('--only-osx', action='store_true', default=False)
+    args = parser.parse_args()
+
+    generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx)
diff --git a/generate-ios-source-and-headers.py b/generate-ios-source-and-headers.py
deleted file mode 100644 (file)
index c2bca73..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-
-import subprocess
-import re
-import os
-import errno
-import collections
-import sys
-
-class Platform(object):
-    pass
-
-sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)')
-
-def sdkinfo(sdkname):
-    ret = {}
-    for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout:
-        kv = line.strip().split(': ', 1)
-        if len(kv) == 2:
-            k,v = kv
-            ret[k] = v
-    return ret
-
-sim_sdk_info = sdkinfo('iphonesimulator')
-device_sdk_info = sdkinfo('iphoneos')
-
-def latest_sdks():
-    latest_sim = None
-    latest_device = None
-    for line in subprocess.Popen(['xcodebuild', '-showsdks'], stdout=subprocess.PIPE).stdout:
-        match = sdk_re.match(line)
-        if match:
-            if 'Simulator' in line:
-                latest_sim = match.group(1)
-            elif 'iOS' in line:
-                latest_device = match.group(1)
-
-    return latest_sim, latest_device
-
-sim_sdk, device_sdk = latest_sdks()
-
-class simulator_platform(Platform):
-    sdk='iphonesimulator'
-    arch = 'i386'
-    name = 'simulator'
-    triple = 'i386-apple-darwin10'
-    sdkroot = sim_sdk_info['Path']
-
-    prefix = "#if !defined(__arm__) && defined(__i386__)\n\n"
-    suffix = "\n\n#endif"
-
-class device_platform(Platform):
-    sdk='iphoneos'
-    name = 'ios'
-    arch = 'armv7'
-    triple = 'arm-apple-darwin10'
-    sdkroot = device_sdk_info['Path']
-
-    prefix = "#ifdef __arm__\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)
-
-    out_filename = filename
-
-    if file_suffix:
-        split_name = os.path.splitext(filename)
-        out_filename =  "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
-
-    with open(os.path.join(src_dir, filename)) as in_file:
-        with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
-            if prefix:
-                out_file.write(prefix)
-
-            out_file.write(in_file.read())
-
-            if suffix:
-                out_file.write(suffix)
-
-headers_seen = collections.defaultdict(set)
-
-def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None):
-    for root, dirs, files in os.walk(src_dir, followlinks=True):
-        relroot = os.path.relpath(root,src_dir)
-
-        def move_dir(arch, prefix='', suffix='', files=[]):
-            for file in files:
-                file_suffix = None
-                if file.endswith('.h'):
-                    if dest_include_dir:
-                        file_suffix = arch
-                        if arch:
-                            headers_seen[file].add(arch)
-                        move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix)
-
-                elif dest_dir:
-                    outroot = os.path.join(dest_dir, relroot)
-                    move_file(root, outroot, file, prefix=prefix, suffix=suffix)
-
-        if relroot == '.':
-            move_dir(arch=arch,
-                     files=files,
-                     prefix=prefix,
-                     suffix=suffix)
-        elif relroot == 'arm':
-            move_dir(arch='arm',
-                     prefix="#ifdef __arm__\n\n",
-                     suffix="\n\n#endif",
-                     files=files)
-        elif relroot == 'x86':
-            move_dir(arch='i386',
-                     prefix="#if !defined(__arm__) && defined(__i386__)\n\n",
-                     suffix="\n\n#endif",
-                     files=files)
-
-def build_target(platform):
-    def xcrun_cmd(cmd):
-        return subprocess.check_output(['xcrun', '-sdk', platform.sdkroot, '-find', cmd]).strip()
-
-    build_dir = 'build_' + platform.name
-    if not os.path.exists(build_dir):
-        os.makedirs(build_dir)
-        env = dict(CC=xcrun_cmd('clang'),
-                   LD=xcrun_cmd('ld'),
-                   CFLAGS='-arch %s -isysroot %s -miphoneos-version-min=4.0' % (platform.arch, platform.sdkroot))
-        working_dir=os.getcwd()
-        try:
-            os.chdir(build_dir)
-            subprocess.check_call(['../configure', '-host', platform.triple], env=env)
-            move_source_tree('.', None, '../ios/include',
-                             arch=platform.arch,
-                             prefix=platform.prefix,
-                             suffix=platform.suffix)
-            move_source_tree('./include', None, '../ios/include',
-                            arch=platform.arch,
-                            prefix=platform.prefix,
-                            suffix=platform.suffix)
-        finally:
-            os.chdir(working_dir)
-
-        for header_name, archs in headers_seen.iteritems():
-            basename, suffix = os.path.splitext(header_name)
-
-def main():
-    move_source_tree('src', 'ios/src', 'ios/include')
-    move_source_tree('include', None, 'ios/include')
-    build_target(simulator_platform)
-    build_target(device_platform)
-
-    for header_name, archs in headers_seen.iteritems():
-        basename, suffix = os.path.splitext(header_name)
-        with open(os.path.join('ios/include', header_name), 'w') as header:
-            for arch in archs:
-                header.write('#include <%s_%s%s>\n' % (basename, arch, suffix))
-
-if __name__ == '__main__':
-    main()
diff --git a/generate-osx-source-and-headers.py b/generate-osx-source-and-headers.py
deleted file mode 100644 (file)
index 64313c1..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env python
-import subprocess
-import re
-import os
-import errno
-import collections
-import sys
-
-class Platform(object):
-    pass
-
-sdk_re = re.compile(r'.*-sdk ([a-zA-Z0-9.]*)')
-
-def sdkinfo(sdkname):
-    ret = {}
-    for line in subprocess.Popen(['xcodebuild', '-sdk', sdkname, '-version'], stdout=subprocess.PIPE).stdout:
-        kv = line.strip().split(': ', 1)
-        if len(kv) == 2:
-            k,v = kv
-            ret[k] = v
-    return ret
-
-desktop_sdk_info = sdkinfo('macosx')
-
-def latest_sdks():
-    latest_desktop = None
-    for line in subprocess.Popen(['xcodebuild', '-showsdks'], stdout=subprocess.PIPE).stdout:
-        match = sdk_re.match(line)
-        if match:
-            if 'OS X' in line:
-                latest_desktop = match.group(1)
-
-    return latest_desktop
-
-desktop_sdk = latest_sdks()
-
-class desktop_platform_32(Platform):
-    sdk='macosx'
-    arch = 'i386'
-    name = 'mac32'
-    triple = 'i386-apple-darwin10'
-    sdkroot = desktop_sdk_info['Path']
-
-    prefix = "#if defined(__i386__) && !defined(__x86_64__)\n\n"
-    suffix = "\n\n#endif"
-
-class desktop_platform_64(Platform):
-    sdk='macosx'
-    arch = 'x86_64'
-    name = 'mac'
-    triple = 'x86_64-apple-darwin10'
-    sdkroot = desktop_sdk_info['Path']
-
-    prefix = "#if !defined(__i386__) && defined(__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)
-
-    out_filename = filename
-
-    if file_suffix:
-        split_name = os.path.splitext(filename)
-        out_filename =  "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
-
-    with open(os.path.join(src_dir, filename)) as in_file:
-        with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
-            if prefix:
-                out_file.write(prefix)
-
-            out_file.write(in_file.read())
-
-            if suffix:
-                out_file.write(suffix)
-
-headers_seen = collections.defaultdict(set)
-
-def move_source_tree(src_dir, dest_dir, dest_include_dir, arch=None, prefix=None, suffix=None):
-    for root, dirs, files in os.walk(src_dir, followlinks=True):
-        relroot = os.path.relpath(root,src_dir)
-
-        def move_dir(arch, prefix='', suffix='', files=[]):
-            for file in files:
-                file_suffix = None
-                if file.endswith('.h'):
-                    if dest_include_dir:
-                        file_suffix = arch
-                        if arch:
-                            headers_seen[file].add(arch)
-                        move_file(root, dest_include_dir, file, arch, prefix=prefix, suffix=suffix)
-
-                elif dest_dir:
-                    outroot = os.path.join(dest_dir, relroot)
-                    move_file(root, outroot, file, prefix=prefix, suffix=suffix)
-
-        if relroot == '.':
-            move_dir(arch=arch,
-                     files=files,
-                     prefix=prefix,
-                     suffix=suffix)
-        elif relroot == 'x86':
-            move_dir(arch='i386',
-                     prefix="#if defined(__i386__) && !defined(__x86_64__)\n\n",
-                     suffix="\n\n#endif",
-                     files=files)
-            move_dir(arch='x86_64',
-                     prefix="#if !defined(__i386__) && defined(__x86_64__)\n\n",
-                     suffix="\n\n#endif",
-                     files=files)
-
-def build_target(platform):
-    def xcrun_cmd(cmd):
-        return subprocess.check_output(['xcrun', '-sdk', platform.sdkroot, '-find', cmd]).strip()
-
-    build_dir = 'build_' + platform.name
-    if not os.path.exists(build_dir):
-        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))
-        working_dir=os.getcwd()
-        try:
-            os.chdir(build_dir)
-            subprocess.check_call(['../configure', '-host', platform.triple], env=env)
-            move_source_tree('.', None, '../osx/include',
-                             arch=platform.arch,
-                             prefix=platform.prefix,
-                             suffix=platform.suffix)
-            move_source_tree('./include', None, '../osx/include',
-                             arch=platform.arch,
-                             prefix=platform.prefix,
-                             suffix=platform.suffix)
-        finally:
-            os.chdir(working_dir)
-
-        for header_name, archs in headers_seen.iteritems():
-            basename, suffix = os.path.splitext(header_name)
-
-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)
-
-    for header_name, archs in headers_seen.iteritems():
-        basename, suffix = os.path.splitext(header_name)
-        with open(os.path.join('osx/include', header_name), 'w') as header:
-            for arch in archs:
-                header.write('#include <%s_%s%s>\n' % (basename, arch, suffix))
-
-if __name__ == '__main__':
-    main()
index 14c39a2..1cf396f 100644 (file)
        objects = {
 
 /* Begin PBXBuildFile section */
-               6C43CBDC1534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBD1534F76F00162364 /* ffi.c */; };
-               6C43CBDD1534F76F00162364 /* sysv.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBF1534F76F00162364 /* sysv.S */; };
-               6C43CBDE1534F76F00162364 /* trampoline.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC01534F76F00162364 /* trampoline.S */; };
-               6C43CBE61534F76F00162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC91534F76F00162364 /* darwin.S */; };
-               6C43CBE81534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCB1534F76F00162364 /* ffi.c */; };
-               6C43CC1F1534F77800162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC051534F77800162364 /* darwin.S */; };
-               6C43CC201534F77800162364 /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC061534F77800162364 /* darwin64.S */; };
-               6C43CC211534F77800162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC071534F77800162364 /* ffi.c */; };
-               6C43CC221534F77800162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC081534F77800162364 /* ffi64.c */; };
-               6C43CC2F1534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
-               6C43CC301534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
-               6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
-               6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
-               6C43CC371534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
-               6C43CC381534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
-               6C43CC391534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
-               6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
-               6C43CC3B1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
-               6C43CC3C1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
-               6C43CC971535032600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8D1535032600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CC981535032600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8E1535032600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CC991535032600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8F1535032600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC901535032600162364 /* ffi_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CC9B1535032600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC911535032600162364 /* fficonfig.h */; };
-               6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC921535032600162364 /* fficonfig_i386.h */; };
-               6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC931535032600162364 /* fficonfig_x86_64.h */; };
-               6C43CC9E1535032600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC941535032600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC951535032600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC961535032600162364 /* ffitarget_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCAD1535039600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA21535039600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA31535039600162364 /* ffi_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCAF1535039600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA41535039600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCB01535039600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA51535039600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCB11535039600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA61535039600162364 /* fficonfig.h */; };
-               6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA71535039600162364 /* fficonfig_armv7.h */; };
-               6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA81535039600162364 /* fficonfig_i386.h */; };
-               6C43CCB41535039600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA91535039600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAA1535039600162364 /* ffitarget_arm.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAB1535039600162364 /* ffitarget_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAC1535039600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; };
+               DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; };
+               DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; };
+               DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; };
+               DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
+               DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
+               DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
+               DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
+               DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
+               DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
+               DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
+               DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
+               DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; };
+               DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; };
+               DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; };
+               DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; };
+               DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; };
+               DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; };
+               DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; };
+               DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; };
+               DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; };
+               DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; };
+               DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; };
+               DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; };
+               DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; };
+               DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; };
+               DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; };
+               DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; };
+               DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; };
+               DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; };
+               DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXCopyFilesBuildPhase section */
+               DB13B1641849DF1E0010F42D /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = "include/$(PRODUCT_NAME)";
+                       dstSubfolderSpec = 16;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
-               6C43CB3D1534E9D100162364 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
-               6C43CBBD1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               6C43CBBF1534F76F00162364 /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = "<group>"; };
-               6C43CBC01534F76F00162364 /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = "<group>"; };
-               6C43CBC91534F76F00162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
-               6C43CBCB1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               6C43CC051534F77800162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
-               6C43CC061534F77800162364 /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
-               6C43CC071534F77800162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
-               6C43CC081534F77800162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
-               6C43CC281534F7BE00162364 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = closures.c; path = src/closures.c; sourceTree = SOURCE_ROOT; };
-               6C43CC2B1534F7BE00162364 /* java_raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = java_raw_api.c; path = src/java_raw_api.c; sourceTree = SOURCE_ROOT; };
-               6C43CC2C1534F7BE00162364 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = prep_cif.c; path = src/prep_cif.c; sourceTree = SOURCE_ROOT; };
-               6C43CC2D1534F7BE00162364 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw_api.c; path = src/raw_api.c; sourceTree = SOURCE_ROOT; };
-               6C43CC2E1534F7BE00162364 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = types.c; path = src/types.c; sourceTree = SOURCE_ROOT; };
-               6C43CC8D1535032600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
-               6C43CC8E1535032600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
-               6C43CC8F1535032600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-               6C43CC901535032600162364 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
-               6C43CC911535032600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
-               6C43CC921535032600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-               6C43CC931535032600162364 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
-               6C43CC941535032600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
-               6C43CC951535032600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-               6C43CC961535032600162364 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
-               6C43CCA21535039600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
-               6C43CCA31535039600162364 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
-               6C43CCA41535039600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
-               6C43CCA51535039600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-               6C43CCA61535039600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
-               6C43CCA71535039600162364 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
-               6C43CCA81535039600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-               6C43CCA91535039600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
-               6C43CCAA1535039600162364 /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = "<group>"; };
-               6C43CCAB1535039600162364 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
-               6C43CCAC1535039600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-               F6F980BA147386130008F121 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+               DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
+               DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
+               DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
+               DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
+               DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = "<group>"; };
+               DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = "<group>"; };
+               DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = "<group>"; };
+               DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = "<group>"; };
+               DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = "<group>"; };
+               DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = "<group>"; };
+               DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
+               DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
+               DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
+               DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = "<group>"; };
+               DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
+               DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
+               DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
+               DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = "<group>"; };
+               DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
+               DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
+               DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
+               DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = "<group>"; };
+               DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = "<group>"; };
+               DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = "<group>"; };
+               DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = "<group>"; };
+               DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = "<group>"; };
+               DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
+               DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
+               DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
+               DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
+               DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
+               DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
+               DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
+               DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
+               DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
+               DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
+               DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
+               DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
+               DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
+               DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
-/* Begin PBXFrameworksBuildPhase section */
-               6C43CB3A1534E9D100162364 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
+/* Begin PBXGroup section */
+               DB13B15B1849DEB70010F42D = {
+                       isa = PBXGroup;
+                       children = (
+                               DBFA713C187F1D8600A76262 /* darwin_common */,
+                               DBFA715C187F1D9B00A76262 /* darwin_ios */,
+                               DBFA7180187F1DA100A76262 /* darwin_osx */,
+                               DB13B1671849DF1E0010F42D /* Products */,
                        );
-                       runOnlyForDeploymentPostprocessing = 0;
+                       sourceTree = "<group>";
                };
-               F6F980B7147386130008F121 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
+               DB13B1671849DF1E0010F42D /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               DB13B1661849DF1E0010F42D /* libffi.a */,
+                               DB13B1911849DF510010F42D /* ffi.dylib */,
                        );
-                       runOnlyForDeploymentPostprocessing = 0;
+                       name = Products;
+                       sourceTree = "<group>";
                };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               6C43CBAF1534F76F00162364 /* iOS */ = {
+               DBFA713C187F1D8600A76262 /* darwin_common */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CCA11535039600162364 /* include */,
-                               6C43CBBB1534F76F00162364 /* src */,
+                               DBFA713D187F1D8600A76262 /* include */,
+                               DBFA7142187F1D8600A76262 /* src */,
                        );
-                       name = iOS;
-                       path = ios;
+                       path = "darwin_common";
                        sourceTree = "<group>";
                };
-               6C43CBBB1534F76F00162364 /* src */ = {
+               DBFA713D187F1D8600A76262 /* include */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CBC81534F76F00162364 /* x86 */,
-                               6C43CBBC1534F76F00162364 /* arm */,
+                               DBFA713E187F1D8600A76262 /* ffi.h */,
+                               DBFA713F187F1D8600A76262 /* ffi_common.h */,
+                               DBFA7140187F1D8600A76262 /* fficonfig.h */,
+                               DBFA7141187F1D8600A76262 /* ffitarget.h */,
                        );
-                       path = src;
+                       path = include;
                        sourceTree = "<group>";
                };
-               6C43CBBC1534F76F00162364 /* arm */ = {
+               DBFA7142187F1D8600A76262 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CBBD1534F76F00162364 /* ffi.c */,
-                               6C43CBBF1534F76F00162364 /* sysv.S */,
-                               6C43CBC01534F76F00162364 /* trampoline.S */,
+                               DBFA7143187F1D8600A76262 /* closures.c */,
+                               DBFA7145187F1D8600A76262 /* dlmalloc.c */,
+                               DBFA7147187F1D8600A76262 /* prep_cif.c */,
+                               DBFA7148187F1D8600A76262 /* raw_api.c */,
+                               DBFA7149187F1D8600A76262 /* types.c */,
                        );
-                       path = arm;
+                       path = src;
                        sourceTree = "<group>";
                };
-               6C43CBC81534F76F00162364 /* x86 */ = {
+               DBFA715C187F1D9B00A76262 /* darwin_ios */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CBC91534F76F00162364 /* darwin.S */,
-                               6C43CBCB1534F76F00162364 /* ffi.c */,
+                               DBFA715D187F1D9B00A76262 /* include */,
+                               DBFA716A187F1D9B00A76262 /* src */,
                        );
-                       path = x86;
+                       path = "darwin_ios";
                        sourceTree = "<group>";
                };
-               6C43CBF01534F77800162364 /* OS X */ = {
+               DBFA715D187F1D9B00A76262 /* include */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC8C1535032600162364 /* include */,
-                               6C43CBFC1534F77800162364 /* src */,
+                               DBFA715E187F1D9B00A76262 /* ffi_arm64.h */,
+                               DBFA715F187F1D9B00A76262 /* ffi_armv7.h */,
+                               DBFA7160187F1D9B00A76262 /* ffi_i386.h */,
+                               DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */,
+                               DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */,
+                               DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */,
+                               DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */,
+                               DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */,
+                               DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */,
+                               DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */,
+                               DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */,
+                               DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */,
                        );
-                       name = "OS X";
-                       path = osx;
+                       path = include;
                        sourceTree = "<group>";
                };
-               6C43CBFC1534F77800162364 /* src */ = {
+               DBFA716A187F1D9B00A76262 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC041534F77800162364 /* x86 */,
+                               DBFA716B187F1D9B00A76262 /* aarch64 */,
+                               DBFA716E187F1D9B00A76262 /* arm */,
+                               DBFA7172187F1D9B00A76262 /* x86 */,
                        );
                        path = src;
                        sourceTree = "<group>";
                };
-               6C43CC041534F77800162364 /* x86 */ = {
+               DBFA716B187F1D9B00A76262 /* aarch64 */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC051534F77800162364 /* darwin.S */,
-                               6C43CC061534F77800162364 /* darwin64.S */,
-                               6C43CC071534F77800162364 /* ffi.c */,
-                               6C43CC081534F77800162364 /* ffi64.c */,
+                               DBFA716C187F1D9B00A76262 /* ffi_arm64.c */,
+                               DBFA716D187F1D9B00A76262 /* sysv_arm64.S */,
                        );
-                       path = x86;
+                       path = aarch64;
                        sourceTree = "<group>";
                };
-               6C43CC3D1534F7C400162364 /* src */ = {
+               DBFA716E187F1D9B00A76262 /* arm */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC281534F7BE00162364 /* closures.c */,
-                               6C43CC2B1534F7BE00162364 /* java_raw_api.c */,
-                               6C43CC2C1534F7BE00162364 /* prep_cif.c */,
-                               6C43CC2D1534F7BE00162364 /* raw_api.c */,
-                               6C43CC2E1534F7BE00162364 /* types.c */,
-                       );
-                       name = src;
-                       path = ios;
+                               DBFA716F187F1D9B00A76262 /* ffi_armv7.c */,
+                               DBFA7170187F1D9B00A76262 /* sysv_armv7.S */,
+                               DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */,
+                       );
+                       path = arm;
                        sourceTree = "<group>";
                };
-               6C43CC8C1535032600162364 /* include */ = {
+               DBFA7172187F1D9B00A76262 /* x86 */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC8D1535032600162364 /* ffi.h */,
-                               6C43CC8E1535032600162364 /* ffi_common.h */,
-                               6C43CC8F1535032600162364 /* ffi_i386.h */,
-                               6C43CC901535032600162364 /* ffi_x86_64.h */,
-                               6C43CC911535032600162364 /* fficonfig.h */,
-                               6C43CC921535032600162364 /* fficonfig_i386.h */,
-                               6C43CC931535032600162364 /* fficonfig_x86_64.h */,
-                               6C43CC941535032600162364 /* ffitarget.h */,
-                               6C43CC951535032600162364 /* ffitarget_i386.h */,
-                               6C43CC961535032600162364 /* ffitarget_x86_64.h */,
+                               DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */,
+                               DBFA7174187F1D9B00A76262 /* darwin_i386.S */,
+                               DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */,
+                               DBFA7176187F1D9B00A76262 /* ffi_i386.c */,
                        );
-                       path = include;
+                       path = x86;
+                       sourceTree = "<group>";
+               };
+               DBFA7180187F1DA100A76262 /* darwin_osx */ = {
+                       isa = PBXGroup;
+                       children = (
+                               DBFA7181187F1DA100A76262 /* include */,
+                               DBFA7188187F1DA100A76262 /* src */,
+                       );
+                       path = "darwin_osx";
                        sourceTree = "<group>";
                };
-               6C43CCA11535039600162364 /* include */ = {
+               DBFA7181187F1DA100A76262 /* include */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CCA21535039600162364 /* ffi.h */,
-                               6C43CCA31535039600162364 /* ffi_armv7.h */,
-                               6C43CCA41535039600162364 /* ffi_common.h */,
-                               6C43CCA51535039600162364 /* ffi_i386.h */,
-                               6C43CCA61535039600162364 /* fficonfig.h */,
-                               6C43CCA71535039600162364 /* fficonfig_armv7.h */,
-                               6C43CCA81535039600162364 /* fficonfig_i386.h */,
-                               6C43CCA91535039600162364 /* ffitarget.h */,
-                               6C43CCAA1535039600162364 /* ffitarget_arm.h */,
-                               6C43CCAB1535039600162364 /* ffitarget_armv7.h */,
-                               6C43CCAC1535039600162364 /* ffitarget_i386.h */,
+                               DBFA7182187F1DA100A76262 /* ffi_i386.h */,
+                               DBFA7183187F1DA100A76262 /* ffi_x86_64.h */,
+                               DBFA7184187F1DA100A76262 /* fficonfig_i386.h */,
+                               DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */,
+                               DBFA7186187F1DA100A76262 /* ffitarget_i386.h */,
+                               DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */,
                        );
                        path = include;
                        sourceTree = "<group>";
                };
-               F6B0839514721EE50031D8A1 = {
+               DBFA7188187F1DA100A76262 /* src */ = {
                        isa = PBXGroup;
                        children = (
-                               6C43CC3D1534F7C400162364 /* src */,
-                               6C43CBAF1534F76F00162364 /* iOS */,
-                               6C43CBF01534F77800162364 /* OS X */,
-                               F6F980C6147386260008F121 /* Products */,
+                               DBFA7189187F1DA100A76262 /* x86 */,
                        );
+                       path = src;
                        sourceTree = "<group>";
                };
-               F6F980C6147386260008F121 /* Products */ = {
+               DBFA7189187F1DA100A76262 /* x86 */ = {
                        isa = PBXGroup;
                        children = (
-                               F6F980BA147386130008F121 /* libffi.a */,
-                               6C43CB3D1534E9D100162364 /* libffi.a */,
+                               DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */,
+                               DBFA718B187F1DA100A76262 /* darwin_i386.S */,
+                               DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */,
+                               DBFA718D187F1DA100A76262 /* ffi_i386.c */,
                        );
-                       name = Products;
-                       path = ../..;
-                       sourceTree = BUILT_PRODUCTS_DIR;
+                       path = x86;
+                       sourceTree = "<group>";
                };
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
-               6C43CB3B1534E9D100162364 /* Headers */ = {
+               DB13B18F1849DF510010F42D /* Headers */ = {
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               6C43CC971535032600162364 /* ffi.h in Headers */,
-                               6C43CC981535032600162364 /* ffi_common.h in Headers */,
-                               6C43CC991535032600162364 /* ffi_i386.h in Headers */,
-                               6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */,
-                               6C43CC9E1535032600162364 /* ffitarget.h in Headers */,
-                               6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */,
-                               6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */,
-                               6C43CC9B1535032600162364 /* fficonfig.h in Headers */,
-                               6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */,
-                               6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
-               F6F980B8147386130008F121 /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               6C43CCAD1535039600162364 /* ffi.h in Headers */,
-                               6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */,
-                               6C43CCAF1535039600162364 /* ffi_common.h in Headers */,
-                               6C43CCB01535039600162364 /* ffi_i386.h in Headers */,
-                               6C43CCB41535039600162364 /* ffitarget.h in Headers */,
-                               6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */,
-                               6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */,
-                               6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */,
-                               6C43CCB11535039600162364 /* fficonfig.h in Headers */,
-                               6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */,
-                               6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */,
+                               DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */,
+                               DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */,
+                               DBFA714A187F1D8600A76262 /* ffi.h in Headers */,
+                               DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */,
+                               DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */,
+                               DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */,
+                               DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */,
+                               DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */,
+                               DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */,
+                               DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
-               6C43CB3C1534E9D100162364 /* libffi OS X */ = {
+               DB13B1651849DF1E0010F42D /* libffi-iOS */ = {
                        isa = PBXNativeTarget;
-                       buildConfigurationList = 6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */;
+                       buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */;
                        buildPhases = (
-                               6C43CC401534FF3B00162364 /* Generate Source and Headers */,
-                               6C43CB391534E9D100162364 /* Sources */,
-                               6C43CB3A1534E9D100162364 /* Frameworks */,
-                               6C43CB3B1534E9D100162364 /* Headers */,
+                               DB13B3051849E01C0010F42D /* ShellScript */,
+                               DB13B1621849DF1E0010F42D /* Sources */,
+                               DB13B1641849DF1E0010F42D /* CopyFiles */,
                        );
                        buildRules = (
                        );
                        dependencies = (
                        );
-                       name = "libffi OS X";
-                       productName = "ffi OS X";
-                       productReference = 6C43CB3D1534E9D100162364 /* libffi.a */;
+                       name = "libffi-iOS";
+                       productName = ffi;
+                       productReference = DB13B1661849DF1E0010F42D /* libffi.a */;
                        productType = "com.apple.product-type.library.static";
                };
-               F6F980B9147386130008F121 /* libffi iOS */ = {
+               DB13B1901849DF510010F42D /* libffi-Mac */ = {
                        isa = PBXNativeTarget;
-                       buildConfigurationList = F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */;
+                       buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */;
                        buildPhases = (
-                               6C43CC3E1534F8E200162364 /* Generate Trampoline */,
-                               6C43CC3F1534FF1B00162364 /* Generate Source and Headers */,
-                               F6F980B6147386130008F121 /* Sources */,
-                               F6F980B7147386130008F121 /* Frameworks */,
-                               F6F980B8147386130008F121 /* Headers */,
+                               DB13B3061849E0490010F42D /* ShellScript */,
+                               DB13B18D1849DF510010F42D /* Sources */,
+                               DB13B18F1849DF510010F42D /* Headers */,
                        );
                        buildRules = (
                        );
                        dependencies = (
                        );
-                       name = "libffi iOS";
+                       name = "libffi-Mac";
                        productName = ffi;
-                       productReference = F6F980BA147386130008F121 /* libffi.a */;
-                       productType = "com.apple.product-type.library.static";
+                       productReference = DB13B1911849DF510010F42D /* ffi.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
                };
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
-               F6B0839714721EE50031D8A1 /* Project object */ = {
+               DB13B15C1849DEB70010F42D /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0430;
+                               LastUpgradeCheck = 0510;
                        };
-                       buildConfigurationList = F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */;
+                       buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */;
                        compatibilityVersion = "Xcode 3.2";
                        developmentRegion = English;
                        hasScannedForEncodings = 0;
                        knownRegions = (
                                en,
                        );
-                       mainGroup = F6B0839514721EE50031D8A1;
-                       productRefGroup = F6B0839514721EE50031D8A1;
+                       mainGroup = DB13B15B1849DEB70010F42D;
+                       productRefGroup = DB13B1671849DF1E0010F42D /* Products */;
                        projectDirPath = "";
                        projectRoot = "";
                        targets = (
-                               F6F980B9147386130008F121 /* libffi iOS */,
-                               6C43CB3C1534E9D100162364 /* libffi OS X */,
+                               DB13B1651849DF1E0010F42D /* libffi-iOS */,
+                               DB13B1901849DF510010F42D /* libffi-Mac */,
                        );
                };
 /* End PBXProject section */
 
 /* Begin PBXShellScriptBuildPhase section */
-               6C43CC3E1534F8E200162364 /* Generate Trampoline */ = {
-                       isa = PBXShellScriptBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                       );
-                       inputPaths = (
-                       );
-                       name = "Generate Trampoline";
-                       outputPaths = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-                       shellPath = /usr/bin/python;
-                       shellScript = "import subprocess\nimport re\nimport os\nimport errno\nimport sys\n\ndef main():\n    with open('src/arm/trampoline.S', 'w') as tramp_out:\n        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)\n        p.wait()\n\nif __name__ == '__main__':\n    main()";
-               };
-               6C43CC3F1534FF1B00162364 /* Generate Source and Headers */ = {
+               DB13B3051849E01C0010F42D /* ShellScript */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                        );
-                       name = "Generate Source and Headers";
                        outputPaths = (
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "/usr/bin/python generate-ios-source-and-headers.py";
+                       shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-ios";
                };
-               6C43CC401534FF3B00162364 /* Generate Source and Headers */ = {
+               DB13B3061849E0490010F42D /* ShellScript */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                        );
-                       name = "Generate Source and Headers";
                        outputPaths = (
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "/usr/bin/python generate-osx-source-and-headers.py";
+                       shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx";
                };
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
-               6C43CB391534E9D100162364 /* Sources */ = {
+               DB13B1621849DF1E0010F42D /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               6C43CC1F1534F77800162364 /* darwin.S in Sources */,
-                               6C43CC201534F77800162364 /* darwin64.S in Sources */,
-                               6C43CC211534F77800162364 /* ffi.c in Sources */,
-                               6C43CC221534F77800162364 /* ffi64.c in Sources */,
-                               6C43CC301534F7BE00162364 /* closures.c in Sources */,
-                               6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */,
-                               6C43CC381534F7BE00162364 /* prep_cif.c in Sources */,
-                               6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */,
-                               6C43CC3C1534F7BE00162364 /* types.c in Sources */,
+                               DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */,
+                               DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */,
+                               DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */,
+                               DBFA714E187F1D8600A76262 /* closures.c in Sources */,
+                               DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */,
+                               DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */,
+                               DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */,
+                               DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */,
+                               DBFA7158187F1D8600A76262 /* raw_api.c in Sources */,
+                               DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */,
+                               DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */,
+                               DBFA715A187F1D8600A76262 /* types.c in Sources */,
+                               DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               F6F980B6147386130008F121 /* Sources */ = {
+               DB13B18D1849DF510010F42D /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               6C43CBDC1534F76F00162364 /* ffi.c in Sources */,
-                               6C43CBDD1534F76F00162364 /* sysv.S in Sources */,
-                               6C43CBDE1534F76F00162364 /* trampoline.S in Sources */,
-                               6C43CBE61534F76F00162364 /* darwin.S in Sources */,
-                               6C43CBE81534F76F00162364 /* ffi.c in Sources */,
-                               6C43CC2F1534F7BE00162364 /* closures.c in Sources */,
-                               6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */,
-                               6C43CC371534F7BE00162364 /* prep_cif.c in Sources */,
-                               6C43CC391534F7BE00162364 /* raw_api.c in Sources */,
-                               6C43CC3B1534F7BE00162364 /* types.c in Sources */,
+                               DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */,
+                               DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */,
+                               DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */,
+                               DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */,
+                               DBFA715B187F1D8600A76262 /* types.c in Sources */,
+                               DBFA7159187F1D8600A76262 /* raw_api.c in Sources */,
+                               DBFA714F187F1D8600A76262 /* closures.c in Sources */,
+                               DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
 /* End PBXSourcesBuildPhase section */
 
 /* Begin XCBuildConfiguration section */
-               6C43CB4B1534E9D100162364 /* Debug */ = {
+               DB13B1601849DEB70010F42D /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               DSTROOT = /tmp/ffi.dst;
-                               FRAMEWORK_SEARCH_PATHS = (
+                               HEADER_SEARCH_PATHS = (
                                        "$(inherited)",
-                                       "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+                                       "darwin_common/include",
                                );
-                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-                               GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.6;
                                ONLY_ACTIVE_ARCH = YES;
-                               PRODUCT_NAME = ffi;
-                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
-               6C43CB4C1534E9D100162364 /* Release */ = {
+               DB13B1611849DEB70010F42D /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
-                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-                               DSTROOT = /tmp/ffi.dst;
-                               FRAMEWORK_SEARCH_PATHS = (
+                               HEADER_SEARCH_PATHS = (
                                        "$(inherited)",
-                                       "\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
+                                       "darwin_common/include",
                                );
-                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-                               GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.6;
-                               PRODUCT_NAME = ffi;
-                               SDKROOT = macosx;
                        };
                        name = Release;
                };
-               F6B083AB14721EE50031D8A1 /* Debug */ = {
+               DB13B1871849DF1E0010F42D /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
                                COPY_PHASE_STRIP = NO;
+                               DSTROOT = /tmp/ffi.dst;
                                GCC_C_LANGUAGE_STANDARD = gnu99;
                                GCC_DYNAMIC_NO_PIC = NO;
                                GCC_OPTIMIZATION_LEVEL = 0;
                                        "$(inherited)",
                                );
                                GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VALUE = NO;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = ios/include;
+                               HEADER_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "darwin_ios/include",
+                               );
+                               IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
+                               OTHER_LDFLAGS = "-ObjC";
+                               PRODUCT_NAME = ffi;
                                SDKROOT = iphoneos;
+                               SKIP_INSTALL = YES;
                        };
                        name = Debug;
                };
-               F6B083AC14721EE50031D8A1 /* Release */ = {
+               DB13B1881849DF1E0010F42D /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+                               ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
                                COPY_PHASE_STRIP = YES;
+                               DSTROOT = /tmp/ffi.dst;
+                               ENABLE_NS_ASSERTIONS = NO;
                                GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_PREPROCESSOR_DEFINITIONS = "";
-                               GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
-                               GCC_WARN_UNUSED_VALUE = NO;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               HEADER_SEARCH_PATHS = ios/include;
+                               HEADER_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "darwin_ios/include",
+                               );
+                               IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+                               "IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
+                               OTHER_LDFLAGS = "-ObjC";
+                               PRODUCT_NAME = ffi;
                                SDKROOT = iphoneos;
+                               SKIP_INSTALL = YES;
                                VALIDATE_PRODUCT = YES;
                        };
                        name = Release;
                };
-               F6F980C2147386130008F121 /* Debug */ = {
+               DB13B1B11849DF520010F42D /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = (
-                                       armv6,
-                                       armv7,
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DYLIB_COMPATIBILITY_VERSION = 1;
+                               DYLIB_CURRENT_VERSION = 1;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
                                );
-                               DSTROOT = /tmp/ffi.dst;
-                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_THUMB_SUPPORT = NO;
-                               IPHONEOS_DEPLOYMENT_TARGET = 4.0;
-                               OTHER_LDFLAGS = "-ObjC";
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               HEADER_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "darwin_osx/include",
+                               );
+                               MACOSX_DEPLOYMENT_TARGET = 10.6;
+                               ONLY_ACTIVE_ARCH = YES;
+                               OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
                                PRODUCT_NAME = ffi;
-                               SKIP_INSTALL = YES;
+                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
-               F6F980C3147386130008F121 /* Release */ = {
+               DB13B1B21849DF520010F42D /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ARCHS = (
-                                       armv6,
-                                       armv7,
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               COPY_PHASE_STRIP = YES;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               DYLIB_COMPATIBILITY_VERSION = 1;
+                               DYLIB_CURRENT_VERSION = 1;
+                               ENABLE_NS_ASSERTIONS = NO;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               HEADER_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "darwin_osx/include",
                                );
-                               DSTROOT = /tmp/ffi.dst;
-                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_THUMB_SUPPORT = NO;
-                               IPHONEOS_DEPLOYMENT_TARGET = 4.0;
-                               OTHER_LDFLAGS = "-ObjC";
+                               MACOSX_DEPLOYMENT_TARGET = 10.6;
+                               OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
                                PRODUCT_NAME = ffi;
-                               SKIP_INSTALL = YES;
+                               SDKROOT = macosx;
                        };
                        name = Release;
                };
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-               6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */ = {
+               DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               6C43CB4B1534E9D100162364 /* Debug */,
-                               6C43CB4C1534E9D100162364 /* Release */,
+                               DB13B1601849DEB70010F42D /* Debug */,
+                               DB13B1611849DEB70010F42D /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */ = {
+               DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               F6B083AB14721EE50031D8A1 /* Debug */,
-                               F6B083AC14721EE50031D8A1 /* Release */,
+                               DB13B1871849DF1E0010F42D /* Debug */,
+                               DB13B1881849DF1E0010F42D /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */ = {
+               DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               F6F980C2147386130008F121 /* Debug */,
-                               F6F980C3147386130008F121 /* Release */,
+                               DB13B1B11849DF520010F42D /* Debug */,
+                               DB13B1B21849DF520010F42D /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
 /* End XCConfigurationList section */
        };
-       rootObject = F6B0839714721EE50031D8A1 /* Project object */;
+       rootObject = DB13B15C1849DEB70010F42D /* Project object */;
 }