EiffelVision Cocoa

Revision as of 21:15, 20 August 2009 by Dfurrer (Talk | contribs) (FAQ)


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.