EiffelVision Cocoa
Contents
Overview
This project was created with the goal of running Eiffel Studio natively on the Mac and succeeds the previous Carbon based EiffelVision implementation.
Build instructions
- Get the latest EiffelStudio for the Mac. If you have MacPorts installed you can do this by typing
port install eiffelstudio65
- Check out the latest source code from the trunk
svn co https://svn.origo.ethz.ch/eiffelstudio/trunk
- Set your EIFFEL_SRC and ISE_LIBRARY to the directory
export EIFFEL_SRC=/directory/to/your/checkout/trunk/Src export EIFFEL_SRC=$ISE_LIBRARY
- Locate EiffelStudio's config.sh file (probably /Applications/MacPorts/Eiffel65/studio/spec/macosx-x86/include/config.sh) and add the flag -ObjC to the definition of the ccflags, like this:
ccflags='-ObjC -pipe -no-cpp-precomp -fno-common -fPIC'
- Compile the C-parts of the library
cd $ISE_LIBRARY/experimental/library/objc_base/Clib finish_freezing -library cd $ISE_LIBRARY/experimental/library/cocoa/Clib finish_freezing -library
- Now open the .ecf file of your project and add the following line to your target:
<variable name="vision_implementation" value="cocoa"/>
alternatively you can add another target which will allow you to easily compile both, a GTK+ and a Cocoa version of your application:
<target name="cocoa" extends="classic"> <variable name="vision_implementation" value="cocoa"/> </target>
If you want to compile Eiffel Studio there is already a target called "bench_cocoa" which you can select.
- Use ec -experiment (or estudio -experiment) to compile
FAQ
Problem
C compilation yields syntax errors:
Compiling C code in C190 In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12, from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12, from ns6299.c:27, from big_file_C191_c.c:54: /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: stray '@' in program /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: syntax error before 'NSString' /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:126: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:127: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:129: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:130: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:137: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:138: error: syntax error before '*' token In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:6, from /System/Library/Frameworks/Foundation.framework/Headers/NSAffineTransform.h:5, from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:13, from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12, from ns6299.c:27, from big_file_C191_c.c:54: /System/Library/Frameworks/Foundation.framework/Headers/NSZone.h:8: error: stray '@' in program
Solution
Make sure your config.sh was changed to allow compiling Objective-C (see step 4 above).
Problem
C compilation yields an linker error (symbols not found):
Compiling C code in C1 Compiling C code in E1 Undefined symbols: "_bridge_void_general", referenced from: _bridge_void_general$non_lazy_ptr in Cobj160.o "_bridge_void_ptr_ptr", referenced from: _bridge_void_ptr_ptr$non_lazy_ptr in Cobj160.o ld: symbol(s) not found collect2: ld returned 1 exit status make: *** [ec] Error 1
Solution
Make sure you compiled the C-parts of the libraries (see step 5 above).
Contact
If you run into any problems or have any other feedback I'll be happy to hear from you.