Notes on OSX port

From GCompris Wiki

GCompris on OSX.

Image:Gcompris osx_s.png

Table of contents

Compilation modification

  • add sdl.m4 into acinclude.m4. Needs cleaning, sdl.m4 is not used on OSX !
  • add #define NO_IMPORT_PYGOBJECT 1 before #include <pygobject.h>
  • Change on SDL/SDL_mixer détection. My opinion is to use OSX frameworks. SDL_mixer framework looks broken for now: missing SDL/ in headers #include (use of SDL framework.. ).
  • Change #include for SDL* frameworks if we use them.
  • suppress $LIBICONV in gcompris LDADD (multiply defined _locale_charset).
  • Add check if argv[0] is full path beginning with /. If yes, get the install prefix from it. Usefull for GCompris.app relocatable OSX bundle.
  • GNUcap detection looks broken:
gcompris: Dialog=Impossible de trouver le logiciel de simulation électrique « GnuCap ».
Vous pouvez le télécharger à l'adresse:
<http://geda.seul.org/tools/gnucap/>
Pour être détecté, l'exécutable doit être installé dans /usr/bin/gnucap ou /usr/local/bin/gnucap.
Vous pouvez tout de même utiliser cette activité pour construire des schéma électriques mais vous ne pourrez pas les simuler.

J'ai ajouté un test au bon endroit.

  • Même genre de test pourGNUchess.

Native Gtk

  • Works, but with bugs. Some small images abd some colors looks bad. The color selector is broken.
  • Cairo/GTK are not frameworks. GTK is not relocatable (relocatable only on windows).
  • Wait a better version.
  • OSX support status on gtk-devel (http://mail.gnome.org/archives/gtk-devel-list/2007-February/msg00081.html).
  • Gtk OSX Using imendio script

X11/GTK

  • Check inkscape (http://inkscape.org/) and Gimp.app (http://gimp-app.sourceforge.net/) way.
  • Gimp.app links to a Platypus (http://www.sveinbjorn.org/platypus) script (ScriptExec). inkscape seems use the same solution.
  • Inkscape launch a shell script (http://inkscape.svn.sourceforge.net/viewvc/inkscape/inkscape/trunk/packaging/macosx/Resources/script?view=log) set lot of environnement variables to locate correctly libs.

script launcher (Platypus (http://www.sveinbjorn.org/platypus))/ScriptExec

  • Platypus create an exec application (a running .app bundle in fact) with a cocoa executable script launcher in Contents/MacOS and the script to run in Contents/Resources.
  • Gimp.app uses a modified version (http://gimp-app.sourceforge.net/gimp.app.howto.txt) (why?). Anyway this version does not compile with my xcode.
  • Inkscape seems have a already modified version with right extension (http://inkscape.svn.sourceforge.net/viewvc/inkscape/inkscape/trunk/packaging/macosx/ScriptExec/) (xcodeproj). To be tested Direct compilation fails too. Needs to suppress libstdc++.a from External resources. Builds ok and works ok without it.
  • This Xcode compilation gives the bundle executable. (From here (http://gimp-app.sourceforge.net/gimp.app.howto.txt): copy ScriptExec/build/ScriptExec.app/Contents/MacOS/ScriptExec to Gimp.app/Contents/MacOS/Gimp )
  • Need to set XCode to Deployment target, for the compilation to be complete.

Notes on launch script

  • The PANGO_RC_FILES need no " around the filenmae. Looks as a modifiction with svn pango.
  • The actuyal Gimp.app script looks better: Uses /tmp instead of .gcompris-etc to put the modified files at launch.

NSBundle without launch script

Why ?

Because GCompris can get bundle resource path and uses main osx menu if it's run as main execuatble in the bundle.

How

Script is used to:

  • set the DYLD_LIBRARY_PATH (MacOSX) or LD_RUN_PATH (Linux).
  • set the lang correctly.
  • Initialise the files from $resourcePath/etc/gtk-2.0|pango with correct path

Ideas:

  1. Uses of rpath (linux) with "-Wl,-rpath=\$ORIGIN/../lib" in LDFLAGS, and install_name_tool with @executable_path/../lib should solve the DYLD_LIBRARY_PATH/LD_RUN_PATH.
  2. Uses of init function at start to fix the lang.
  3. Uses of init function at start to fix the $resourcePath/etc/gtk-2.0|pango files and set the environnement variables (setenv()).