Notes on OSX port

From GCompris
Revision as of 11:37, 21 March 2007 by Yves (talk | contribs) (How)
Jump to: navigation, search

GCompris on OSX.

Gcompris osx s.png

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

X11/GTK

  • Check inkscape and Gimp.app way.
  • Gimp.app links to a Platypus script (ScriptExec). inkscape seems use the same solution.
  • Inkscape launch a shell script set lot of environnement variables to locate correctly libs.

script launcher (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 (why?). Anyway this version does not compile with my xcode.
  • Inkscape seems have a already modified version with right extension (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: 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()).