Compilation on Mac OS X

From Stellarium Wiki
Revision as of 08:17, 23 February 2010 by Dmarcos (Talk | contribs)
Jump to: navigation, search

This document attempts to describe how to build Stellarium from sources on MacOSX. This process ought to improve over time. The set of instructions was written for the 0.10.4 release and using an Intel machine with Leopard (10.5). The process has to be validated for other versions.

Contents

Prepare Mac OS X to build Stellarium

You need a machine with MacOS X 10.4 (latest version 10.4.11) or later

  1. Install the latest version of Apple's Developer Tools: http://developer.apple.com/technology/xcode.html
  2. Install the latest version of cmake: http://www.cmake.org/cmake/resources/software.html
  3. Install the latest version of Qt: Framework from the dmg (4.6.2 at the time these instructions were written) http://qt.nokia.com/downloads
  4. Install macports: http://www.macports.org/install.php
  5. Install subversion making use of macports:
  $ sudo port install subversion

Note:

For MacOSX there are two different versions of Qt:

  • Carbon version: Default download and recommended option. It works for MacOS X 10.5/4/3, and both Intel and PPC architectures. Install this one if you want to create universal binaries
  • Cocoa version: Exclusively for Intel architecture and MacOSX 10.5 and later. You can use this if you aren't going to create universal binaries.

Compiling dependencies to build an universal binary

We have to compile the dependencies with special flags to be able to generate an universal binary. If you don't intend to create an universal package you can skip this and going to the next section: #Building stellarium itself

In case you are compiling in a Leopard or Snow Leopard machine you have to recompile stellarium dependencies making use of the oldest system libraries (in our case those in 10.4 aka Tiger). We need the following compilation flags:

a. We want to generate a single binary for both intel and ppc architectures so:

-arch i386 -arch ppc

b. We want to link with the old framework and system libraries:

-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk/ (Not sure if this is really needed)

Compiling dependencies

- Libiconv: It's important to compile libiconv in the first place because gettext depends on it. Get the latest release from here: http://www.gnu.org/software/libiconv/ Uncompress the file in your favorite directory and configure and compile like this:

 $ ./configure --prefix=/usr CFLAGS='-arch i386 -arch ppc -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk/'
 $ make
 $ make install

- Gettext: Get the latest release from here: http://www.gnu.org/software/gettext/ . Uncompress the file in your favorite directory and configure and compile like this:

 $ ./configure CFLAGS='-arch i386 -arch ppc -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk/'
 $ make
 $ make install

At the moment of writing these steps 4.6.2 is the latest version of Qt. Trolltech provides support from MacOS 10.4 to 10.6 so our binaries will be constrained by this. I went through these instructions in a Leopard machine. To compile in Snow Leopard it's necessary to consider the following notes copied from the Qt 4.6.0 changelog:

  • Gcc 4.2 is used by default. Configure with -platform macx-g++40 to select 4.0.
  • Using the 10.4u SDK requires gcc 4.0.
  • Configuring for the Cocoa port (-cocoa) produces 64-bit binaries by default. Use the -arch flags to override.
  • Building for ppc64 is no longer supported by the gcc tool chain.
  • Building for ppc is still supported.

I haven't tried to generate universal binaries on a Snow Leopard machine. We have to validate these steps.

Building stellarium itself

Create a build directory with your favorite shell (the following directory is just an example, you can pick any name and path you want)

$ mkdir ~/Development
$ cd ~/Development

And in that directory checkout the sources with the svn command

$ svn co https://stellarium.svn.sourceforge.net/svnroot/stellarium/trunk/stellarium stellarium

Time to compile stellarium

We setup the build directory

$ cd stellarium 
$ mkdir -p builds/macosx
$ cd builds/macosx

We run cmake and compile

$ cmake ../..
$ make

Packaging

$ make install
$ make macosx_bundle

IMPORTANT: you should delete or move aside the old /Users/Shared/stellarium/Stellarium.app before each new build.

The macosx_bundle target includes a perl script that makes use of otool and install_name_tool to:

  1. read the link dependencies of Stellarium.app/Contents/MacOS/stellarium
  2. copy those dependencies into the app (.frameworks and .dylibs)
  3. recurse on those copied-in dependencies, stopping at a point where system libraries are called for

We recommend QtCreator as IDE

The core group of developers of stellarium uses QtCreator as main IDE, its integration with Qt and the possibility of having a consistent tool through platforms makes it the most suitable option for our goals.

Troubleshooting

All kinds of things might go wrong!

We will write here the most frequent problems and the possible solutions found by the developers.

Personal tools
Namespaces
Variants
Actions
in this wiki
other languages
Toolbox