Skip to content
This repository
Browse code

iOS build fixes.

  • Loading branch information...
commit d330f19292da8f39a78a9e2b0ba08df8094e3bc5 1 parent 09b23cf
authored May 05, 2012 atgreen committed May 05, 2012
1  .pc/applied-patches
@@ -18,3 +18,4 @@ xcode-improvements
18 18
 update-disty
19 19
 v3_0_11
20 20
 bfin
  21
+ios-fix
0  .pc/ios-fix/.timestamp
No changes.
5,068  .pc/ios-fix/ChangeLog
5068 additions, 0 deletions not shown
361  .pc/ios-fix/README
... ...
@@ -0,0 +1,361 @@
  1
+Status
  2
+======
  3
+
  4
+libffi-3.0.XX was released on XXXXXXX.  Check the libffi web page for
  5
+updates: <URL:http://sourceware.org/libffi/>.
  6
+
  7
+
  8
+What is libffi?
  9
+===============
  10
+
  11
+Compilers for high level languages generate code that follow certain
  12
+conventions. These conventions are necessary, in part, for separate
  13
+compilation to work. One such convention is the "calling
  14
+convention". The "calling convention" is essentially a set of
  15
+assumptions made by the compiler about where function arguments will
  16
+be found on entry to a function. A "calling convention" also specifies
  17
+where the return value for a function is found.
  18
+
  19
+Some programs may not know at the time of compilation what arguments
  20
+are to be passed to a function. For instance, an interpreter may be
  21
+told at run-time about the number and types of arguments used to call
  22
+a given function. Libffi can be used in such programs to provide a
  23
+bridge from the interpreter program to compiled code.
  24
+
  25
+The libffi library provides a portable, high level programming
  26
+interface to various calling conventions. This allows a programmer to
  27
+call any function specified by a call interface description at run
  28
+time.  
  29
+
  30
+FFI stands for Foreign Function Interface.  A foreign function
  31
+interface is the popular name for the interface that allows code
  32
+written in one language to call code written in another language. The
  33
+libffi library really only provides the lowest, machine dependent
  34
+layer of a fully featured foreign function interface. A layer must
  35
+exist above libffi that handles type conversions for values passed
  36
+between the two languages.
  37
+
  38
+
  39
+Supported Platforms
  40
+===================
  41
+
  42
+Libffi has been ported to many different platforms.
  43
+For specific configuration details and testing status, please
  44
+refer to the wiki page here:
  45
+
  46
+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.11
  47
+
  48
+At the time of release, the following basic configurations have been
  49
+tested:
  50
+
  51
+|--------------+------------------|
  52
+| Architecture | Operating System |
  53
+|--------------+------------------|
  54
+| Alpha        | Linux            |
  55
+| Alpha        | Tru64            |
  56
+| ARM          | Linux            |
  57
+| ARM          | iOS              |
  58
+| AVR32        | Linux            |
  59
+| Blackfin     | uClinux          |
  60
+| HPPA         | HPUX             |
  61
+| IA-64        | Linux            |
  62
+| M68K         | FreeMiNT         |
  63
+| M68K         | RTEMS            |
  64
+| MIPS         | IRIX             |
  65
+| MIPS         | Linux            |
  66
+| MIPS         | RTEMS            |
  67
+| MIPS64       | Linux            |
  68
+| PowerPC      | AMIGA            |
  69
+| PowerPC      | Linux            |
  70
+| PowerPC      | Mac OSX          |
  71
+| PowerPC      | FreeBSD          |
  72
+| PowerPC64    | Linux            |
  73
+| S390         | Linux            |
  74
+| S390X        | Linux            |
  75
+| SPARC        | Linux            |
  76
+| SPARC        | Solaris          |
  77
+| SPARC64      | Linux            |
  78
+| SPARC64      | FreeBSD          |
  79
+| X86          | FreeBSD          |
  80
+| X86          | Interix          |
  81
+| X86          | kFreeBSD         |
  82
+| X86          | Linux            |
  83
+| X86          | Mac OSX          |
  84
+| X86          | OpenBSD          |
  85
+| X86          | OS/2             |
  86
+| X86          | Solaris          |
  87
+| X86          | Windows/Cygwin   |
  88
+| X86          | Windows/MingW    |
  89
+| X86-64       | FreeBSD          |
  90
+| X86-64       | Linux            |
  91
+| X86-64       | Linux/x32        |
  92
+| X86-64       | OpenBSD          |
  93
+| X86-64       | Windows/MingW    |
  94
+|--------------+------------------|
  95
+
  96
+Please send additional platform test results to
  97
+libffi-discuss@sourceware.org and feel free to update the wiki page
  98
+above.
  99
+
  100
+Installing libffi
  101
+=================
  102
+
  103
+First you must configure the distribution for your particular
  104
+system. Go to the directory you wish to build libffi in and run the
  105
+"configure" program found in the root directory of the libffi source
  106
+distribution.
  107
+
  108
+You may want to tell configure where to install the libffi library and
  109
+header files. To do that, use the --prefix configure switch.  Libffi
  110
+will install under /usr/local by default. 
  111
+
  112
+If you want to enable extra run-time debugging checks use the the
  113
+--enable-debug configure switch. This is useful when your program dies
  114
+mysteriously while using libffi. 
  115
+
  116
+Another useful configure switch is --enable-purify-safety. Using this
  117
+will add some extra code which will suppress certain warnings when you
  118
+are using Purify with libffi. Only use this switch when using 
  119
+Purify, as it will slow down the library.
  120
+
  121
+It's also possible to build libffi on Windows platforms with
  122
+Microsoft's Visual C++ compiler.  In this case, use the msvcc.sh
  123
+wrapper script during configuration like so:
  124
+
  125
+path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\"
  126
+
  127
+For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64".
  128
+You may also need to specify --build appropriately. When building with MSVC
  129
+under a MingW environment, you may need to remove the line in configure
  130
+that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
  131
+present in MingW, and is not required when using MingW-style paths.)
  132
+
  133
+For iOS builds, run generate-ios-source-and-headers.py and then
  134
+libffi.xcodeproj should work.
  135
+
  136
+Configure has many other options. Use "configure --help" to see them all.
  137
+
  138
+Once configure has finished, type "make". Note that you must be using
  139
+GNU make.  You can ftp GNU make from prep.ai.mit.edu:/pub/gnu.
  140
+
  141
+To ensure that libffi is working as advertised, type "make check".
  142
+This will require that you have DejaGNU installed.
  143
+
  144
+To install the library and header files, type "make install".
  145
+
  146
+
  147
+History
  148
+=======
  149
+
  150
+See the ChangeLog files for details.
  151
+
  152
+3.0.12 XXX-XX-XX
  153
+        Add Blackfin support.
  154
+
  155
+3.0.11 Apr-11-12
  156
+        Add support for variadic functions (ffi_prep_cif_var).
  157
+	Add Linux/x32 support.
  158
+	Add thiscall, fastcall and MSVC cdecl support on Windows.
  159
+        Add Amiga and newer MacOS support.
  160
+	Add m68k FreeMiNT support.
  161
+	Integration with iOS' xcode build tools.
  162
+	Fix Octeon and MC68881 support.
  163
+	Fix code pessimizations.
  164
+        Lots of build fixes.
  165
+
  166
+3.0.10 Aug-23-11
  167
+        Add support for Apple's iOS.
  168
+	Add support for ARM VFP ABI.
  169
+        Add RTEMS support for MIPS and M68K.
  170
+	Fix instruction cache clearing problems on
  171
+	  ARM and SPARC.
  172
+	Fix the N64 build on mips-sgi-irix6.5.
  173
+	Enable builds with Microsoft's compiler.
  174
+	Enable x86 builds with Oracle's Solaris compiler.
  175
+	Fix support for calling code compiled with Oracle's Sparc
  176
+	  Solaris compiler.
  177
+	Testsuite fixes for Tru64 Unix.
  178
+	Additional platform support.
  179
+
  180
+3.0.9 Dec-31-09
  181
+        Add AVR32 and win64 ports.  Add ARM softfp support.
  182
+	Many fixes for AIX, Solaris, HP-UX, *BSD.
  183
+	Several PowerPC and x86-64 bug fixes.
  184
+	Build DLL for windows.
  185
+
  186
+3.0.8 Dec-19-08
  187
+        Add *BSD, BeOS, and PA-Linux support.
  188
+
  189
+3.0.7 Nov-11-08
  190
+        Fix for ppc FreeBSD.
  191
+	(thanks to Andreas Tobler)
  192
+
  193
+3.0.6 Jul-17-08
  194
+        Fix for closures on sh.
  195
+	Mark the sh/sh64 stack as non-executable.
  196
+	(both thanks to Kaz Kojima)
  197
+
  198
+3.0.5 Apr-3-08
  199
+        Fix libffi.pc file.
  200
+	Fix #define ARM for IcedTea users.
  201
+	Fix x86 closure bug.
  202
+
  203
+3.0.4 Feb-24-08
  204
+        Fix x86 OpenBSD configury.
  205
+
  206
+3.0.3 Feb-22-08
  207
+        Enable x86 OpenBSD thanks to Thomas Heller, and
  208
+	x86-64 FreeBSD thanks to Björn König and Andreas Tobler.
  209
+	Clean up test instruction in README.
  210
+
  211
+3.0.2 Feb-21-08
  212
+        Improved x86 FreeBSD support.
  213
+	Thanks to Björn König.
  214
+
  215
+3.0.1 Feb-15-08
  216
+        Fix instruction cache flushing bug on MIPS.
  217
+	Thanks to David Daney.
  218
+
  219
+3.0.0 Feb-15-08
  220
+        Many changes, mostly thanks to the GCC project.
  221
+	Cygnus Solutions is now Red Hat.
  222
+
  223
+  [10 years go by...]
  224
+
  225
+1.20 Oct-5-98
  226
+	Raffaele Sena produces ARM port.
  227
+
  228
+1.19 Oct-5-98
  229
+	Fixed x86 long double and long long return support.
  230
+	m68k bug fixes from Andreas Schwab.
  231
+	Patch for DU assembler compatibility for the Alpha from Richard
  232
+	Henderson.
  233
+
  234
+1.18 Apr-17-98
  235
+	Bug fixes and MIPS configuration changes.
  236
+
  237
+1.17 Feb-24-98
  238
+	Bug fixes and m68k port from Andreas Schwab. PowerPC port from
  239
+	Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes.
  240
+
  241
+1.16 Feb-11-98
  242
+	Richard Henderson produces Alpha port.
  243
+
  244
+1.15 Dec-4-97
  245
+	Fixed an n32 ABI bug. New libtool, auto* support.
  246
+
  247
+1.14 May-13-97
  248
+	libtool is now used to generate shared and static libraries.
  249
+	Fixed a minor portability problem reported by Russ McManus
  250
+	<mcmanr@eq.gs.com>.
  251
+
  252
+1.13 Dec-2-96
  253
+	Added --enable-purify-safety to keep Purify from complaining
  254
+	about certain low level code.
  255
+	Sparc fix for calling functions with < 6 args.
  256
+	Linux x86 a.out fix.
  257
+
  258
+1.12 Nov-22-96
  259
+	Added missing ffi_type_void, needed for supporting void return 
  260
+	types. Fixed test case for non MIPS machines. Cygnus Support 
  261
+	is now Cygnus Solutions. 
  262
+
  263
+1.11 Oct-30-96
  264
+	Added notes about GNU make.
  265
+
  266
+1.10 Oct-29-96
  267
+	Added configuration fix for non GNU compilers.
  268
+
  269
+1.09 Oct-29-96
  270
+	Added --enable-debug configure switch. Clean-ups based on LCLint 
  271
+	feedback. ffi_mips.h is always installed. Many configuration 
  272
+	fixes. Fixed ffitest.c for sparc builds.
  273
+
  274
+1.08 Oct-15-96
  275
+	Fixed n32 problem. Many clean-ups.
  276
+
  277
+1.07 Oct-14-96
  278
+	Gordon Irlam rewrites v8.S again. Bug fixes.
  279
+
  280
+1.06 Oct-14-96
  281
+	Gordon Irlam improved the sparc port. 
  282
+
  283
+1.05 Oct-14-96
  284
+	Interface changes based on feedback.
  285
+
  286
+1.04 Oct-11-96
  287
+	Sparc port complete (modulo struct passing bug).
  288
+
  289
+1.03 Oct-10-96
  290
+	Passing struct args, and returning struct values works for
  291
+	all architectures/calling conventions. Expanded tests.
  292
+
  293
+1.02 Oct-9-96
  294
+	Added SGI n32 support. Fixed bugs in both o32 and Linux support.
  295
+	Added "make test".
  296
+
  297
+1.01 Oct-8-96
  298
+	Fixed float passing bug in mips version. Restructured some
  299
+	of the code. Builds cleanly with SGI tools.
  300
+
  301
+1.00 Oct-7-96
  302
+	First release. No public announcement.
  303
+
  304
+
  305
+Authors & Credits
  306
+=================
  307
+
  308
+libffi was originally written by Anthony Green <green@moxielogic.com>.
  309
+
  310
+The developers of the GNU Compiler Collection project have made
  311
+innumerable valuable contributions.  See the ChangeLog file for
  312
+details.
  313
+
  314
+Some of the ideas behind libffi were inspired by Gianni Mariani's free
  315
+gencall library for Silicon Graphics machines.
  316
+
  317
+The closure mechanism was designed and implemented by Kresten Krab
  318
+Thorup.
  319
+
  320
+Major processor architecture ports were contributed by the following
  321
+developers:
  322
+
  323
+alpha		Richard Henderson
  324
+arm		Raffaele Sena
  325
+cris		Simon Posnjak, Hans-Peter Nilsson
  326
+frv		Anthony Green
  327
+ia64		Hans Boehm
  328
+m32r		Kazuhiro Inaoka
  329
+m68k		Andreas Schwab
  330
+mips		Anthony Green, Casey Marshall
  331
+mips64		David Daney
  332
+pa		Randolph Chung, Dave Anglin, Andreas Tobler
  333
+powerpc		Geoffrey Keating, Andreas Tobler, 
  334
+			 David Edelsohn, John Hornkvist
  335
+powerpc64	Jakub Jelinek
  336
+s390		Gerhard Tonn, Ulrich Weigand
  337
+sh		Kaz Kojima
  338
+sh64		Kaz Kojima
  339
+sparc		Anthony Green, Gordon Irlam
  340
+x86		Anthony Green, Jon Beniston
  341
+x86-64		Bo Thorsen
  342
+
  343
+Jesper Skov and Andrew Haley both did more than their fair share of
  344
+stepping through the code and tracking down bugs.
  345
+
  346
+Thanks also to Tom Tromey for bug fixes, documentation and
  347
+configuration help.
  348
+
  349
+Thanks to Jim Blandy, who provided some useful feedback on the libffi
  350
+interface.
  351
+
  352
+Andreas Tobler has done a tremendous amount of work on the testsuite.
  353
+
  354
+Alex Oliva solved the executable page problem for SElinux.
  355
+
  356
+The list above is almost certainly incomplete and inaccurate.  I'm
  357
+happy to make corrections or additions upon request.
  358
+
  359
+If you have a problem, or have found a bug, please send a note to the
  360
+author at green@moxielogic.com, or the project mailing list at
  361
+libffi-discuss@sourceware.org.
595  .pc/ios-fix/libffi.xcodeproj/project.pbxproj
... ...
@@ -0,0 +1,595 @@
  1
+// !$*UTF8*$!
  2
+{
  3
+	archiveVersion = 1;
  4
+	classes = {
  5
+	};
  6
+	objectVersion = 46;
  7
+	objects = {
  8
+
  9
+/* Begin PBXBuildFile section */
  10
+		6C43CBDC1534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBD1534F76F00162364 /* ffi.c */; };
  11
+		6C43CBDD1534F76F00162364 /* sysv.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBBF1534F76F00162364 /* sysv.S */; };
  12
+		6C43CBDE1534F76F00162364 /* trampoline.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC01534F76F00162364 /* trampoline.S */; };
  13
+		6C43CBE61534F76F00162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC91534F76F00162364 /* darwin.S */; };
  14
+		6C43CBE81534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCB1534F76F00162364 /* ffi.c */; };
  15
+		6C43CBE91534F76F00162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCC1534F76F00162364 /* ffi64.c */; };
  16
+		6C43CC1F1534F77800162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC051534F77800162364 /* darwin.S */; };
  17
+		6C43CC201534F77800162364 /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC061534F77800162364 /* darwin64.S */; };
  18
+		6C43CC211534F77800162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC071534F77800162364 /* ffi.c */; };
  19
+		6C43CC221534F77800162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC081534F77800162364 /* ffi64.c */; };
  20
+		6C43CC2F1534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
  21
+		6C43CC301534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
  22
+		6C43CC311534F7BE00162364 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC291534F7BE00162364 /* debug.c */; };
  23
+		6C43CC321534F7BE00162364 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC291534F7BE00162364 /* debug.c */; };
  24
+		6C43CC331534F7BE00162364 /* dlmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2A1534F7BE00162364 /* dlmalloc.c */; };
  25
+		6C43CC341534F7BE00162364 /* dlmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2A1534F7BE00162364 /* dlmalloc.c */; };
  26
+		6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
  27
+		6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
  28
+		6C43CC371534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
  29
+		6C43CC381534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
  30
+		6C43CC391534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
  31
+		6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2D1534F7BE00162364 /* raw_api.c */; };
  32
+		6C43CC3B1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
  33
+		6C43CC3C1534F7BE00162364 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2E1534F7BE00162364 /* types.c */; };
  34
+		6C43CC971535032600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8D1535032600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
  35
+		6C43CC981535032600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8E1535032600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
  36
+		6C43CC991535032600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC8F1535032600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
  37
+		6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC901535032600162364 /* ffi_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
  38
+		6C43CC9B1535032600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC911535032600162364 /* fficonfig.h */; };
  39
+		6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC921535032600162364 /* fficonfig_i386.h */; };
  40
+		6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC931535032600162364 /* fficonfig_x86_64.h */; };
  41
+		6C43CC9E1535032600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC941535032600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
  42
+		6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC951535032600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
  43
+		6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CC961535032600162364 /* ffitarget_x86_64.h */; settings = {ATTRIBUTES = (Public, ); }; };
  44
+		6C43CCAD1535039600162364 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA21535039600162364 /* ffi.h */; settings = {ATTRIBUTES = (Public, ); }; };
  45
+		6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA31535039600162364 /* ffi_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
  46
+		6C43CCAF1535039600162364 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA41535039600162364 /* ffi_common.h */; settings = {ATTRIBUTES = (Public, ); }; };
  47
+		6C43CCB01535039600162364 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA51535039600162364 /* ffi_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
  48
+		6C43CCB11535039600162364 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA61535039600162364 /* fficonfig.h */; };
  49
+		6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA71535039600162364 /* fficonfig_armv7.h */; };
  50
+		6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA81535039600162364 /* fficonfig_i386.h */; };
  51
+		6C43CCB41535039600162364 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCA91535039600162364 /* ffitarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
  52
+		6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAA1535039600162364 /* ffitarget_arm.h */; settings = {ATTRIBUTES = (Public, ); }; };
  53
+		6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAB1535039600162364 /* ffitarget_armv7.h */; settings = {ATTRIBUTES = (Public, ); }; };
  54
+		6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C43CCAC1535039600162364 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Public, ); }; };
  55
+/* End PBXBuildFile section */
  56
+
  57
+/* Begin PBXFileReference section */
  58
+		6C43CB3D1534E9D100162364 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
  59
+		6C43CBBD1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
  60
+		6C43CBBF1534F76F00162364 /* sysv.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv.S; sourceTree = "<group>"; };
  61
+		6C43CBC01534F76F00162364 /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = "<group>"; };
  62
+		6C43CBC91534F76F00162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
  63
+		6C43CBCB1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
  64
+		6C43CBCC1534F76F00162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
  65
+		6C43CC051534F77800162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
  66
+		6C43CC061534F77800162364 /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
  67
+		6C43CC071534F77800162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
  68
+		6C43CC081534F77800162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
  69
+		6C43CC281534F7BE00162364 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = closures.c; path = src/closures.c; sourceTree = SOURCE_ROOT; };
  70
+		6C43CC291534F7BE00162364 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = debug.c; path = src/debug.c; sourceTree = SOURCE_ROOT; };
  71
+		6C43CC2A1534F7BE00162364 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dlmalloc.c; path = src/dlmalloc.c; sourceTree = SOURCE_ROOT; };
  72
+		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; };
  73
+		6C43CC2C1534F7BE00162364 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = prep_cif.c; path = src/prep_cif.c; sourceTree = SOURCE_ROOT; };
  74
+		6C43CC2D1534F7BE00162364 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw_api.c; path = src/raw_api.c; sourceTree = SOURCE_ROOT; };
  75
+		6C43CC2E1534F7BE00162364 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = types.c; path = src/types.c; sourceTree = SOURCE_ROOT; };
  76
+		6C43CC8D1535032600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
  77
+		6C43CC8E1535032600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
  78
+		6C43CC8F1535032600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
  79
+		6C43CC901535032600162364 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
  80
+		6C43CC911535032600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
  81
+		6C43CC921535032600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
  82
+		6C43CC931535032600162364 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
  83
+		6C43CC941535032600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
  84
+		6C43CC951535032600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
  85
+		6C43CC961535032600162364 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
  86
+		6C43CCA21535039600162364 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
  87
+		6C43CCA31535039600162364 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
  88
+		6C43CCA41535039600162364 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
  89
+		6C43CCA51535039600162364 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
  90
+		6C43CCA61535039600162364 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
  91
+		6C43CCA71535039600162364 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
  92
+		6C43CCA81535039600162364 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
  93
+		6C43CCA91535039600162364 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
  94
+		6C43CCAA1535039600162364 /* ffitarget_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm.h; sourceTree = "<group>"; };
  95
+		6C43CCAB1535039600162364 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
  96
+		6C43CCAC1535039600162364 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
  97
+		F6F980BA147386130008F121 /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
  98
+/* End PBXFileReference section */
  99
+
  100
+/* Begin PBXFrameworksBuildPhase section */
  101
+		6C43CB3A1534E9D100162364 /* Frameworks */ = {
  102
+			isa = PBXFrameworksBuildPhase;
  103
+			buildActionMask = 2147483647;
  104
+			files = (
  105
+			);
  106
+			runOnlyForDeploymentPostprocessing = 0;
  107
+		};
  108
+		F6F980B7147386130008F121 /* Frameworks */ = {
  109
+			isa = PBXFrameworksBuildPhase;
  110
+			buildActionMask = 2147483647;
  111
+			files = (
  112
+			);
  113
+			runOnlyForDeploymentPostprocessing = 0;
  114
+		};
  115
+/* End PBXFrameworksBuildPhase section */
  116
+
  117
+/* Begin PBXGroup section */
  118
+		6C43CBAF1534F76F00162364 /* iOS */ = {
  119
+			isa = PBXGroup;
  120
+			children = (
  121
+				6C43CCA11535039600162364 /* include */,
  122
+				6C43CBBB1534F76F00162364 /* src */,
  123
+			);
  124
+			name = iOS;
  125
+			path = ios;
  126
+			sourceTree = "<group>";
  127
+		};
  128
+		6C43CBBB1534F76F00162364 /* src */ = {
  129
+			isa = PBXGroup;
  130
+			children = (
  131
+				6C43CBC81534F76F00162364 /* x86 */,
  132
+				6C43CBBC1534F76F00162364 /* arm */,
  133
+			);
  134
+			path = src;
  135
+			sourceTree = "<group>";
  136
+		};
  137
+		6C43CBBC1534F76F00162364 /* arm */ = {
  138
+			isa = PBXGroup;
  139
+			children = (
  140
+				6C43CBBD1534F76F00162364 /* ffi.c */,
  141
+				6C43CBBF1534F76F00162364 /* sysv.S */,
  142
+				6C43CBC01534F76F00162364 /* trampoline.S */,
  143
+			);
  144
+			path = arm;
  145
+			sourceTree = "<group>";
  146
+		};
  147
+		6C43CBC81534F76F00162364 /* x86 */ = {
  148
+			isa = PBXGroup;
  149
+			children = (
  150
+				6C43CBC91534F76F00162364 /* darwin.S */,
  151
+				6C43CBCB1534F76F00162364 /* ffi.c */,
  152
+				6C43CBCC1534F76F00162364 /* ffi64.c */,
  153
+			);
  154
+			path = x86;
  155
+			sourceTree = "<group>";
  156
+		};
  157
+		6C43CBF01534F77800162364 /* OS X */ = {
  158
+			isa = PBXGroup;
  159
+			children = (
  160
+				6C43CC8C1535032600162364 /* include */,
  161
+				6C43CBFC1534F77800162364 /* src */,
  162
+			);
  163
+			name = "OS X";
  164
+			path = osx;
  165
+			sourceTree = "<group>";
  166
+		};
  167
+		6C43CBFC1534F77800162364 /* src */ = {
  168
+			isa = PBXGroup;
  169
+			children = (
  170
+				6C43CC041534F77800162364 /* x86 */,
  171
+			);
  172
+			path = src;
  173
+			sourceTree = "<group>";
  174
+		};
  175
+		6C43CC041534F77800162364 /* x86 */ = {
  176
+			isa = PBXGroup;
  177
+			children = (
  178
+				6C43CC051534F77800162364 /* darwin.S */,
  179
+				6C43CC061534F77800162364 /* darwin64.S */,
  180
+				6C43CC071534F77800162364 /* ffi.c */,
  181
+				6C43CC081534F77800162364 /* ffi64.c */,
  182
+			);
  183
+			path = x86;
  184
+			sourceTree = "<group>";
  185
+		};
  186
+		6C43CC3D1534F7C400162364 /* src */ = {
  187
+			isa = PBXGroup;
  188
+			children = (
  189
+				6C43CC281534F7BE00162364 /* closures.c */,
  190
+				6C43CC291534F7BE00162364 /* debug.c */,
  191
+				6C43CC2A1534F7BE00162364 /* dlmalloc.c */,
  192
+				6C43CC2B1534F7BE00162364 /* java_raw_api.c */,
  193
+				6C43CC2C1534F7BE00162364 /* prep_cif.c */,
  194
+				6C43CC2D1534F7BE00162364 /* raw_api.c */,
  195
+				6C43CC2E1534F7BE00162364 /* types.c */,
  196
+			);
  197
+			name = src;
  198
+			path = ios;
  199
+			sourceTree = "<group>";
  200
+		};
  201
+		6C43CC8C1535032600162364 /* include */ = {
  202
+			isa = PBXGroup;
  203
+			children = (
  204
+				6C43CC8D1535032600162364 /* ffi.h */,
  205
+				6C43CC8E1535032600162364 /* ffi_common.h */,
  206
+				6C43CC8F1535032600162364 /* ffi_i386.h */,
  207
+				6C43CC901535032600162364 /* ffi_x86_64.h */,
  208
+				6C43CC911535032600162364 /* fficonfig.h */,
  209
+				6C43CC921535032600162364 /* fficonfig_i386.h */,
  210
+				6C43CC931535032600162364 /* fficonfig_x86_64.h */,
  211
+				6C43CC941535032600162364 /* ffitarget.h */,
  212
+				6C43CC951535032600162364 /* ffitarget_i386.h */,
  213
+				6C43CC961535032600162364 /* ffitarget_x86_64.h */,
  214
+			);
  215
+			path = include;
  216
+			sourceTree = "<group>";
  217
+		};
  218
+		6C43CCA11535039600162364 /* include */ = {
  219
+			isa = PBXGroup;
  220
+			children = (
  221
+				6C43CCA21535039600162364 /* ffi.h */,
  222
+				6C43CCA31535039600162364 /* ffi_armv7.h */,
  223
+				6C43CCA41535039600162364 /* ffi_common.h */,
  224
+				6C43CCA51535039600162364 /* ffi_i386.h */,
  225
+				6C43CCA61535039600162364 /* fficonfig.h */,
  226
+				6C43CCA71535039600162364 /* fficonfig_armv7.h */,
  227
+				6C43CCA81535039600162364 /* fficonfig_i386.h */,
  228
+				6C43CCA91535039600162364 /* ffitarget.h */,
  229
+				6C43CCAA1535039600162364 /* ffitarget_arm.h */,
  230
+				6C43CCAB1535039600162364 /* ffitarget_armv7.h */,
  231
+				6C43CCAC1535039600162364 /* ffitarget_i386.h */,
  232
+			);
  233
+			path = include;
  234
+			sourceTree = "<group>";
  235
+		};
  236
+		F6B0839514721EE50031D8A1 = {
  237
+			isa = PBXGroup;
  238
+			children = (
  239
+				6C43CC3D1534F7C400162364 /* src */,
  240
+				6C43CBAF1534F76F00162364 /* iOS */,
  241
+				6C43CBF01534F77800162364 /* OS X */,
  242
+				F6F980C6147386260008F121 /* Products */,
  243
+			);
  244
+			sourceTree = "<group>";
  245
+		};
  246
+		F6F980C6147386260008F121 /* Products */ = {
  247
+			isa = PBXGroup;
  248
+			children = (
  249
+				F6F980BA147386130008F121 /* libffi.a */,
  250
+				6C43CB3D1534E9D100162364 /* libffi.a */,
  251
+			);
  252
+			name = Products;
  253
+			path = ../..;
  254
+			sourceTree = BUILT_PRODUCTS_DIR;
  255
+		};
  256
+/* End PBXGroup section */
  257
+
  258
+/* Begin PBXHeadersBuildPhase section */
  259
+		6C43CB3B1534E9D100162364 /* Headers */ = {
  260
+			isa = PBXHeadersBuildPhase;
  261
+			buildActionMask = 2147483647;
  262
+			files = (
  263
+				6C43CC971535032600162364 /* ffi.h in Headers */,
  264
+				6C43CC981535032600162364 /* ffi_common.h in Headers */,
  265
+				6C43CC991535032600162364 /* ffi_i386.h in Headers */,
  266
+				6C43CC9A1535032600162364 /* ffi_x86_64.h in Headers */,
  267
+				6C43CC9E1535032600162364 /* ffitarget.h in Headers */,
  268
+				6C43CC9F1535032600162364 /* ffitarget_i386.h in Headers */,
  269
+				6C43CCA01535032600162364 /* ffitarget_x86_64.h in Headers */,
  270
+				6C43CC9B1535032600162364 /* fficonfig.h in Headers */,
  271
+				6C43CC9C1535032600162364 /* fficonfig_i386.h in Headers */,
  272
+				6C43CC9D1535032600162364 /* fficonfig_x86_64.h in Headers */,
  273
+			);
  274
+			runOnlyForDeploymentPostprocessing = 0;
  275
+		};
  276
+		F6F980B8147386130008F121 /* Headers */ = {
  277
+			isa = PBXHeadersBuildPhase;
  278
+			buildActionMask = 2147483647;
  279
+			files = (
  280
+				6C43CCAD1535039600162364 /* ffi.h in Headers */,
  281
+				6C43CCAE1535039600162364 /* ffi_armv7.h in Headers */,
  282
+				6C43CCAF1535039600162364 /* ffi_common.h in Headers */,
  283
+				6C43CCB01535039600162364 /* ffi_i386.h in Headers */,
  284
+				6C43CCB41535039600162364 /* ffitarget.h in Headers */,
  285
+				6C43CCB51535039600162364 /* ffitarget_arm.h in Headers */,
  286
+				6C43CCB61535039600162364 /* ffitarget_armv7.h in Headers */,
  287
+				6C43CCB71535039600162364 /* ffitarget_i386.h in Headers */,
  288
+				6C43CCB11535039600162364 /* fficonfig.h in Headers */,
  289
+				6C43CCB21535039600162364 /* fficonfig_armv7.h in Headers */,
  290
+				6C43CCB31535039600162364 /* fficonfig_i386.h in Headers */,
  291
+			);
  292
+			runOnlyForDeploymentPostprocessing = 0;
  293
+		};
  294
+/* End PBXHeadersBuildPhase section */
  295
+
  296
+/* Begin PBXNativeTarget section */
  297
+		6C43CB3C1534E9D100162364 /* libffi OS X */ = {
  298
+			isa = PBXNativeTarget;
  299
+			buildConfigurationList = 6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */;
  300
+			buildPhases = (
  301
+				6C43CC401534FF3B00162364 /* Generate Source and Headers */,
  302
+				6C43CB391534E9D100162364 /* Sources */,
  303
+				6C43CB3A1534E9D100162364 /* Frameworks */,
  304
+				6C43CB3B1534E9D100162364 /* Headers */,
  305
+			);
  306
+			buildRules = (
  307
+			);
  308
+			dependencies = (
  309
+			);
  310
+			name = "libffi OS X";
  311
+			productName = "ffi OS X";
  312
+			productReference = 6C43CB3D1534E9D100162364 /* libffi.a */;
  313
+			productType = "com.apple.product-type.library.static";
  314
+		};
  315
+		F6F980B9147386130008F121 /* libffi iOS */ = {
  316
+			isa = PBXNativeTarget;
  317
+			buildConfigurationList = F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */;
  318
+			buildPhases = (
  319
+				6C43CC3E1534F8E200162364 /* Generate Trampoline */,
  320
+				6C43CC3F1534FF1B00162364 /* Generate Source and Headers */,
  321
+				F6F980B6147386130008F121 /* Sources */,
  322
+				F6F980B7147386130008F121 /* Frameworks */,
  323
+				F6F980B8147386130008F121 /* Headers */,
  324
+			);
  325
+			buildRules = (
  326
+			);
  327
+			dependencies = (
  328
+			);
  329
+			name = "libffi iOS";
  330
+			productName = ffi;
  331
+			productReference = F6F980BA147386130008F121 /* libffi.a */;
  332
+			productType = "com.apple.product-type.library.static";
  333
+		};
  334
+/* End PBXNativeTarget section */
  335
+
  336
+/* Begin PBXProject section */
  337
+		F6B0839714721EE50031D8A1 /* Project object */ = {
  338
+			isa = PBXProject;
  339
+			attributes = {
  340
+				LastUpgradeCheck = 0430;
  341
+			};
  342
+			buildConfigurationList = F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */;
  343
+			compatibilityVersion = "Xcode 3.2";
  344
+			developmentRegion = English;
  345
+			hasScannedForEncodings = 0;
  346
+			knownRegions = (
  347
+				en,
  348
+			);
  349
+			mainGroup = F6B0839514721EE50031D8A1;
  350
+			productRefGroup = F6B0839514721EE50031D8A1;
  351
+			projectDirPath = "";
  352
+			projectRoot = "";
  353
+			targets = (
  354
+				F6F980B9147386130008F121 /* libffi iOS */,
  355
+				6C43CB3C1534E9D100162364 /* libffi OS X */,
  356
+			);
  357
+		};
  358
+/* End PBXProject section */
  359
+
  360
+/* Begin PBXShellScriptBuildPhase section */
  361
+		6C43CC3E1534F8E200162364 /* Generate Trampoline */ = {
  362
+			isa = PBXShellScriptBuildPhase;
  363
+			buildActionMask = 2147483647;
  364
+			files = (
  365
+			);
  366
+			inputPaths = (
  367
+			);
  368
+			name = "Generate Trampoline";
  369
+			outputPaths = (
  370
+			);
  371
+			runOnlyForDeploymentPostprocessing = 0;
  372
+			shellPath = /usr/bin/python;
  373
+			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()";
  374
+		};
  375
+		6C43CC3F1534FF1B00162364 /* Generate Source and Headers */ = {
  376
+			isa = PBXShellScriptBuildPhase;
  377
+			buildActionMask = 2147483647;
  378
+			files = (
  379
+			);
  380
+			inputPaths = (
  381
+			);
  382
+			name = "Generate Source and Headers";
  383
+			outputPaths = (
  384
+			);
  385
+			runOnlyForDeploymentPostprocessing = 0;
  386
+			shellPath = /bin/sh;
  387
+			shellScript = "/usr/bin/python generate-ios-source-and-headers.py";
  388
+		};
  389
+		6C43CC401534FF3B00162364 /* Generate Source and Headers */ = {
  390
+			isa = PBXShellScriptBuildPhase;
  391
+			buildActionMask = 2147483647;
  392
+			files = (
  393
+			);
  394
+			inputPaths = (
  395
+			);
  396
+			name = "Generate Source and Headers";
  397
+			outputPaths = (
  398
+			);
  399
+			runOnlyForDeploymentPostprocessing = 0;
  400
+			shellPath = /bin/sh;
  401
+			shellScript = "/usr/bin/python generate-osx-source-and-headers.py";
  402
+		};
  403
+/* End PBXShellScriptBuildPhase section */
  404
+
  405
+/* Begin PBXSourcesBuildPhase section */
  406
+		6C43CB391534E9D100162364 /* Sources */ = {
  407
+			isa = PBXSourcesBuildPhase;
  408
+			buildActionMask = 2147483647;
  409
+			files = (
  410
+				6C43CC1F1534F77800162364 /* darwin.S in Sources */,
  411
+				6C43CC201534F77800162364 /* darwin64.S in Sources */,
  412
+				6C43CC211534F77800162364 /* ffi.c in Sources */,
  413
+				6C43CC221534F77800162364 /* ffi64.c in Sources */,
  414
+				6C43CC301534F7BE00162364 /* closures.c in Sources */,
  415
+				6C43CC321534F7BE00162364 /* debug.c in Sources */,
  416
+				6C43CC341534F7BE00162364 /* dlmalloc.c in Sources */,
  417
+				6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */,
  418
+				6C43CC381534F7BE00162364 /* prep_cif.c in Sources */,
  419
+				6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */,
  420
+				6C43CC3C1534F7BE00162364 /* types.c in Sources */,
  421
+			);
  422
+			runOnlyForDeploymentPostprocessing = 0;
  423
+		};
  424
+		F6F980B6147386130008F121 /* Sources */ = {
  425
+			isa = PBXSourcesBuildPhase;
  426
+			buildActionMask = 2147483647;
  427
+			files = (
  428
+				6C43CBDC1534F76F00162364 /* ffi.c in Sources */,
  429
+				6C43CBDD1534F76F00162364 /* sysv.S in Sources */,
  430
+				6C43CBDE1534F76F00162364 /* trampoline.S in Sources */,
  431
+				6C43CBE61534F76F00162364 /* darwin.S in Sources */,
  432
+				6C43CBE81534F76F00162364 /* ffi.c in Sources */,
  433
+				6C43CBE91534F76F00162364 /* ffi64.c in Sources */,
  434
+				6C43CC2F1534F7BE00162364 /* closures.c in Sources */,
  435
+				6C43CC311534F7BE00162364 /* debug.c in Sources */,
  436
+				6C43CC331534F7BE00162364 /* dlmalloc.c in Sources */,
  437
+				6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */,
  438
+				6C43CC371534F7BE00162364 /* prep_cif.c in Sources */,
  439
+				6C43CC391534F7BE00162364 /* raw_api.c in Sources */,
  440
+				6C43CC3B1534F7BE00162364 /* types.c in Sources */,
  441
+			);
  442
+			runOnlyForDeploymentPostprocessing = 0;
  443
+		};
  444
+/* End PBXSourcesBuildPhase section */
  445
+
  446
+/* Begin XCBuildConfiguration section */
  447
+		6C43CB4B1534E9D100162364 /* Debug */ = {
  448
+			isa = XCBuildConfiguration;
  449
+			buildSettings = {
  450
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
  451
+				DSTROOT = /tmp/ffi.dst;
  452
+				FRAMEWORK_SEARCH_PATHS = (
  453
+					"$(inherited)",
  454
+					"\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
  455
+				);
  456
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
  457
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
  458
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  459
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
  460
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
  461
+				ONLY_ACTIVE_ARCH = YES;
  462
+				PRODUCT_NAME = ffi;
  463
+				SDKROOT = macosx;
  464
+			};
  465
+			name = Debug;
  466
+		};
  467
+		6C43CB4C1534E9D100162364 /* Release */ = {
  468
+			isa = XCBuildConfiguration;
  469
+			buildSettings = {
  470
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
  471
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  472
+				DSTROOT = /tmp/ffi.dst;
  473
+				FRAMEWORK_SEARCH_PATHS = (
  474
+					"$(inherited)",
  475
+					"\"$(SYSTEM_APPS_DIR)/Xcode.app/Contents/Developer/Library/Frameworks\"",
  476
+				);
  477
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
  478
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
  479
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  480
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
  481
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
  482
+				PRODUCT_NAME = ffi;
  483
+				SDKROOT = macosx;
  484
+			};
  485
+			name = Release;
  486
+		};
  487
+		F6B083AB14721EE50031D8A1 /* Debug */ = {
  488
+			isa = XCBuildConfiguration;
  489
+			buildSettings = {
  490
+				ALWAYS_SEARCH_USER_PATHS = NO;
  491
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
  492
+				COPY_PHASE_STRIP = NO;
  493
+				GCC_C_LANGUAGE_STANDARD = gnu99;
  494
+				GCC_DYNAMIC_NO_PIC = NO;
  495
+				GCC_OPTIMIZATION_LEVEL = 0;
  496
+				GCC_PREPROCESSOR_DEFINITIONS = (
  497
+					"DEBUG=1",
  498
+					"$(inherited)",
  499
+				);
  500
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
  501
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
  502
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  503
+				GCC_WARN_UNUSED_VALUE = NO;
  504
+				GCC_WARN_UNUSED_VARIABLE = YES;
  505
+				HEADER_SEARCH_PATHS = ios/include;
  506
+				SDKROOT = iphoneos;
  507
+			};
  508
+			name = Debug;
  509
+		};
  510
+		F6B083AC14721EE50031D8A1 /* Release */ = {
  511
+			isa = XCBuildConfiguration;
  512
+			buildSettings = {
  513
+				ALWAYS_SEARCH_USER_PATHS = NO;
  514
+				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
  515
+				COPY_PHASE_STRIP = YES;
  516
+				GCC_C_LANGUAGE_STANDARD = gnu99;
  517
+				GCC_PREPROCESSOR_DEFINITIONS = "";
  518
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
  519
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
  520
+				GCC_WARN_UNUSED_VALUE = NO;
  521
+				GCC_WARN_UNUSED_VARIABLE = YES;
  522
+				HEADER_SEARCH_PATHS = ios/include;
  523
+				SDKROOT = iphoneos;
  524
+				VALIDATE_PRODUCT = YES;
  525
+			};
  526
+			name = Release;
  527
+		};
  528
+		F6F980C2147386130008F121 /* Debug */ = {
  529
+			isa = XCBuildConfiguration;
  530
+			buildSettings = {
  531
+				ARCHS = (
  532
+					armv6,
  533
+					armv7,
  534
+				);
  535
+				DSTROOT = /tmp/ffi.dst;
  536
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
  537
+				GCC_THUMB_SUPPORT = NO;
  538
+				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
  539
+				OTHER_LDFLAGS = "-ObjC";
  540
+				PRODUCT_NAME = ffi;
  541
+				SKIP_INSTALL = YES;
  542
+			};
  543
+			name = Debug;
  544
+		};
  545
+		F6F980C3147386130008F121 /* Release */ = {
  546
+			isa = XCBuildConfiguration;
  547
+			buildSettings = {
  548
+				ARCHS = (
  549
+					armv6,
  550
+					armv7,
  551
+				);
  552
+				DSTROOT = /tmp/ffi.dst;
  553
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
  554
+				GCC_THUMB_SUPPORT = NO;
  555
+				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
  556
+				OTHER_LDFLAGS = "-ObjC";
  557
+				PRODUCT_NAME = ffi;
  558
+				SKIP_INSTALL = YES;
  559
+			};
  560
+			name = Release;
  561
+		};
  562
+/* End XCBuildConfiguration section */
  563
+
  564
+/* Begin XCConfigurationList section */
  565
+		6C43CB4A1534E9D100162364 /* Build configuration list for PBXNativeTarget "libffi OS X" */ = {
  566
+			isa = XCConfigurationList;
  567
+			buildConfigurations = (
  568
+				6C43CB4B1534E9D100162364 /* Debug */,
  569
+				6C43CB4C1534E9D100162364 /* Release */,
  570
+			);
  571
+			defaultConfigurationIsVisible = 0;
  572
+			defaultConfigurationName = Release;
  573
+		};
  574
+		F6B0839A14721EE50031D8A1 /* Build configuration list for PBXProject "libffi" */ = {
  575
+			isa = XCConfigurationList;
  576
+			buildConfigurations = (
  577
+				F6B083AB14721EE50031D8A1 /* Debug */,
  578
+				F6B083AC14721EE50031D8A1 /* Release */,
  579
+			);
  580
+			defaultConfigurationIsVisible = 0;
  581
+			defaultConfigurationName = Release;
  582
+		};
  583
+		F6F980C4147386130008F121 /* Build configuration list for PBXNativeTarget "libffi iOS" */ = {
  584
+			isa = XCConfigurationList;
  585
+			buildConfigurations = (
  586
+				F6F980C2147386130008F121 /* Debug */,
  587
+				F6F980C3147386130008F121 /* Release */,
  588
+			);
  589
+			defaultConfigurationIsVisible = 0;
  590
+			defaultConfigurationName = Release;
  591
+		};
  592
+/* End XCConfigurationList section */
  593
+	};
  594
+	rootObject = F6B0839714721EE50031D8A1 /* Project object */;
  595
+}
5  ChangeLog
... ...
@@ -1,3 +1,8 @@
  1
+2012-05-05  Nicolas Lelong
  2
+
  3
+	* libffi.xcodeproj/project.pbxproj: Fixes.
  4
+	* README: Update for iOS builds.
  5
+
1 6
 2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
2 7
 
3 8
 	* configure.ac: Add Blackfin/sysv support
3  README
@@ -130,8 +130,7 @@ under a MingW environment, you may need to remove the line in configure
130 130
 that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
131 131
 present in MingW, and is not required when using MingW-style paths.)
132 132
 
133  
-For iOS builds, run generate-ios-source-and-headers.py and then
134  
-libffi.xcodeproj should work.
  133
+For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
135 134
 
136 135
 Configure has many other options. Use "configure --help" to see them all.
137 136
 
16  libffi.xcodeproj/project.pbxproj
@@ -12,17 +12,12 @@
12 12
 		6C43CBDE1534F76F00162364 /* trampoline.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC01534F76F00162364 /* trampoline.S */; };
13 13
 		6C43CBE61534F76F00162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBC91534F76F00162364 /* darwin.S */; };
14 14
 		6C43CBE81534F76F00162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCB1534F76F00162364 /* ffi.c */; };
15  
-		6C43CBE91534F76F00162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CBCC1534F76F00162364 /* ffi64.c */; };
16 15
 		6C43CC1F1534F77800162364 /* darwin.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC051534F77800162364 /* darwin.S */; };
17 16
 		6C43CC201534F77800162364 /* darwin64.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC061534F77800162364 /* darwin64.S */; };
18 17
 		6C43CC211534F77800162364 /* ffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC071534F77800162364 /* ffi.c */; };
19 18
 		6C43CC221534F77800162364 /* ffi64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC081534F77800162364 /* ffi64.c */; };
20 19
 		6C43CC2F1534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
21 20
 		6C43CC301534F7BE00162364 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC281534F7BE00162364 /* closures.c */; };
22  
-		6C43CC311534F7BE00162364 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC291534F7BE00162364 /* debug.c */; };
23  
-		6C43CC321534F7BE00162364 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC291534F7BE00162364 /* debug.c */; };
24  
-		6C43CC331534F7BE00162364 /* dlmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2A1534F7BE00162364 /* dlmalloc.c */; };
25  
-		6C43CC341534F7BE00162364 /* dlmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2A1534F7BE00162364 /* dlmalloc.c */; };
26 21
 		6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
27 22
 		6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2B1534F7BE00162364 /* java_raw_api.c */; };
28 23
 		6C43CC371534F7BE00162364 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C43CC2C1534F7BE00162364 /* prep_cif.c */; };
@@ -61,14 +56,11 @@
61 56
 		6C43CBC01534F76F00162364 /* trampoline.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline.S; sourceTree = "<group>"; };
62 57
 		6C43CBC91534F76F00162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
63 58
 		6C43CBCB1534F76F00162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
64  
-		6C43CBCC1534F76F00162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
65 59
 		6C43CC051534F77800162364 /* darwin.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin.S; sourceTree = "<group>"; };
66 60
 		6C43CC061534F77800162364 /* darwin64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64.S; sourceTree = "<group>"; };
67 61
 		6C43CC071534F77800162364 /* ffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi.c; sourceTree = "<group>"; };
68 62
 		6C43CC081534F77800162364 /* ffi64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64.c; sourceTree = "<group>"; };
69 63
 		6C43CC281534F7BE00162364 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = closures.c; path = src/closures.c; sourceTree = SOURCE_ROOT; };
70  
-		6C43CC291534F7BE00162364 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = debug.c; path = src/debug.c; sourceTree = SOURCE_ROOT; };
71  
-		6C43CC2A1534F7BE00162364 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dlmalloc.c; path = src/dlmalloc.c; sourceTree = SOURCE_ROOT; };
72 64
 		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; };
73 65
 		6C43CC2C1534F7BE00162364 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = prep_cif.c; path = src/prep_cif.c; sourceTree = SOURCE_ROOT; };
74 66
 		6C43CC2D1534F7BE00162364 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw_api.c; path = src/raw_api.c; sourceTree = SOURCE_ROOT; };
@@ -149,7 +141,6 @@
149 141
 			children = (
150 142
 				6C43CBC91534F76F00162364 /* darwin.S */,
151 143
 				6C43CBCB1534F76F00162364 /* ffi.c */,
152  
-				6C43CBCC1534F76F00162364 /* ffi64.c */,
153 144
 			);
154 145
 			path = x86;
155 146
 			sourceTree = "<group>";
@@ -187,8 +178,6 @@
187 178
 			isa = PBXGroup;
188 179
 			children = (
189 180
 				6C43CC281534F7BE00162364 /* closures.c */,
190  
-				6C43CC291534F7BE00162364 /* debug.c */,
191  
-				6C43CC2A1534F7BE00162364 /* dlmalloc.c */,
192 181
 				6C43CC2B1534F7BE00162364 /* java_raw_api.c */,
193 182
 				6C43CC2C1534F7BE00162364 /* prep_cif.c */,
194 183
 				6C43CC2D1534F7BE00162364 /* raw_api.c */,
@@ -412,8 +401,6 @@
412 401
 				6C43CC211534F77800162364 /* ffi.c in Sources */,
413 402
 				6C43CC221534F77800162364 /* ffi64.c in Sources */,
414 403
 				6C43CC301534F7BE00162364 /* closures.c in Sources */,
415  
-				6C43CC321534F7BE00162364 /* debug.c in Sources */,
416  
-				6C43CC341534F7BE00162364 /* dlmalloc.c in Sources */,
417 404
 				6C43CC361534F7BE00162364 /* java_raw_api.c in Sources */,
418 405
 				6C43CC381534F7BE00162364 /* prep_cif.c in Sources */,
419 406
 				6C43CC3A1534F7BE00162364 /* raw_api.c in Sources */,
@@ -430,10 +417,7 @@
430 417
 				6C43CBDE1534F76F00162364 /* trampoline.S in Sources */,
431 418
 				6C43CBE61534F76F00162364 /* darwin.S in Sources */,
432 419
 				6C43CBE81534F76F00162364 /* ffi.c in Sources */,
433  
-				6C43CBE91534F76F00162364 /* ffi64.c in Sources */,
434 420
 				6C43CC2F1534F7BE00162364 /* closures.c in Sources */,
435  
-				6C43CC311534F7BE00162364 /* debug.c in Sources */,
436  
-				6C43CC331534F7BE00162364 /* dlmalloc.c in Sources */,
437 421
 				6C43CC351534F7BE00162364 /* java_raw_api.c in Sources */,
438 422
 				6C43CC371534F7BE00162364 /* prep_cif.c in Sources */,
439 423
 				6C43CC391534F7BE00162364 /* raw_api.c in Sources */,
101  patches/ios-fix
... ...
@@ -0,0 +1,101 @@
  1
+Index: libffi/ChangeLog
  2
+===================================================================
  3
+--- libffi.orig/ChangeLog
  4
++++ libffi/ChangeLog
  5
+@@ -1,3 +1,8 @@
  6
++2012-05-05  Nicolas Lelong
  7
++
  8
++	* libffi.xcodeproj/project.pbxproj: Fixes.
  9
++	* README: Update for iOS builds.