EiffelVision Cocoa
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
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 above).
Contact
If you run into any problems or have any other feedback I'll be happy to hear from you.