[Openmcl-devel] ffigen4 failing on Mac OS 10.10 (with either SDK)
Christopher Wicklein
chrisw at wicklein.org
Thu Nov 20 08:21:35 PST 2014
Greetings,
My high-level goal is to manage OmniFocus via Scripting Bridge. Starting from the outline at https://lists.clozure.com/pipermail/openmcl-devel/2008-October/004375.html and http://trac.clozure.com/ccl/wiki/BuildFFIGEN, I’ve done as follows:
(1) Install CCL from the App Store (1.10-store-r16266)
(2) Build what I understand to be the latest ffigen (branches/ffigen-apple-gcc-5646/ffigen4.) As an aside, to build ffigen, I incorporated two patches into my personal build process. I’m working around what I remember as multiple definitions of the “inline” functions when building ffigen4 with the standard clang-600.0.54. I’ve omitted the Makefile patch which is used to add my patch to the list of existing patches. Here’s the patch to toplev.h:
--- toplev.h 2007-10-24 12:15:57.000000000 -0500
+++ toplev.h.1 2014-11-19 15:47:43.000000000 -0600
@@ -158,7 +158,7 @@
extern int floor_log2 (unsigned HOST_WIDE_INT);
/* Inline versions of the above for speed. */
-#if GCC_VERSION >= 3004
+#if 0 /* GCC_VERSION >= 3004 */
# if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
# define CLZ_HWI __builtin_clzl
# define CTZ_HWI __builtin_ctzl
(3) Build OmniFocus.h:
sdef /Applications/OmniFocus.app | sdp -fh --basename OmniFocus
mv OmniFocus.h /tmp/
(4) Create /Applications/Clozure CL.app/Contents/Resources/ccl/darwin-x86-headers64/omnifocus/C and put populate.sh there.
#!/bin/bash
rm -rf System Developer usr
SDK="$SDK"
CFLAGS="-m64 -fobjc-abi-version=2 -fblocks -isysroot $SDK -mmacosx-version-min=10.9"; export CFLAGS
/opt/ffigen/bin/h-to-ffi.sh /tmp/OmniFocus.h
Depending on whether I set SDK to "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk” or SDK="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk”, I get two different failure cases. The 10.9 case involves ffigen segfaulting. The 10.10 case involves a recent change adding the type “instancetype" to Objective-C where I think the previous type was simply “id” confusing the compiler.
10.9:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:55,
from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10,
from /tmp/OmniFocus.h:5:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSProcessInfo.h:169: internal compiler error: Segmentation fault: 11
10.10:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/objc/NSObject.h:64: error: expected ‘)’ before ‘instancetype’
Need to create info for type:
<real_type 0xd7c4d0 NSTimeInterval sizes-gimplified DF
size <integer_cst 0x41b04930 type <integer_type 0x41b13070 bit_size_type> constant invariant 64>
unit size <integer_cst 0x41b04960 type <integer_type 0x41b13000 long unsigned int> constant invariant 8>
align 64 symtab 1808 alias set -1 precision 64>
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSDate.h:23: confused by earlier errors, bailing out
Thoughts?
Thanks,
Chris
----
Christopher Wicklein <chrisw at wicklein.org>
More information about the Openmcl-devel
mailing list