News: Stay up to date

The Étoilé community is an active group of developers, designers, testers and users. New work is being done every day. Visit often to find out what we've been up to.


Installing Étoilé on FreeBSD

Posted on 14 August 2011 by David Chisnall

I just installed Étoilé in a new FreeBSD (9, BETA-1) VM, so I thought I'd document exactly what I did. A copy of these instructions (which I'll try to keep up to date as dependencies change) is in subversion as INSTALL.FreeBSD.

First, install subversion, if it isn't already installed. You'll need this to actually get the code.

With FreeBSD 9, the system libobjc is gone. This makes life easier, because we can't accidentally use the wrong one. Both clang and GCC are installed, and the version of clang should be recent enough to use for everything. With FreeBSD 10, GCC will be gone.

If you are using FreeBSD 8, then install LLVM/clang from source (see for instructions).

Installing GNUstep

Make a directory to use for building all of the GNUstep stuff:

$ mkdir gs
$ cd gs

First we need to build and install the Objective-C runtime. This has to be done before installing GNUstep Make.

$ svn co svn:// libobjc
$ cd libobjc

We're going to build with the simple Makefile, rather than with the GNUmakefile. This will use the system C/C++ compilers, which are still gcc/g++ on FreeBSD 9, so we need to specify clang.

$ CC=clang CXX=clang++ make
$ sudo make install

For the rest, we need to use GNUstep Make, which requires GNU make. Install the gmake package if it isn't already installed. First we need GNUstep Make. Unfortunately, GNUstep Make does not follow the 'sane defaults' philosophy, so we need to specify a huge number of additional options when configuring it:

$ svn co svn:// make
$ cd make
$ ./configure --prefix=/ --enable-objc-nonfragile-abi --enable-native-objc-exceptions --with-layout=gnustep --enable-debug-by-default CC=clang CXX=clang++

Note that I used --prefix=/. This gives you a clean GNUstep install, with /Local and /System directories, but it is only sensible if you have a single system partition. If you have a small / and a large /usr, then you would be better off using /usr/GNUstep or similar. When I do this, I then add symbolic links, so /Local -> /usr/local/GNUstep/Local, but that's optional.

I used --enable-debug-by-default so that everything is compiled in debug mode in the future.

$ sudo -E gmake install

Note that now we use gmake instead of make. Most GNUstep things require GNUstep make. If you forget to use it and use make, you'll get some errors. With the GNUstep layout, you need to source the file. This will do it now and make sure it's done every time you log in:

$ . /System/Library/Makefiles/
$ echo . /System/Library/Makefiles/ >> ~/.profile

Now we need to install the GNUstep Base library. This provides the Foundation framework. You need to make sure that you have libffi and libxml2 installed from ports for this to work. You should also install icu. This is not technically required, but lots of stuff in -base won't work properly without it.

Base doesn't use the CC and CXX options we set for -make, for some reason.

$ svn co svn:// base
$ cd base
$ ./configure --disable-mixedabi CC=clang CXX=clang++ 
$ gmake -j 8 && sudo -E gmake install

The -j8 here is for parallel building. If you don't have a multicore machine, feel free to reduce this. The --disable-mixedabi flag is optional. If you use it, then it assumes that everything will be built using the non-fragile ABI (a safe assumption for Étoilé, since LanguageKit requires it) and avoids some indirection and padding every class with a spare class. This makes the code slightly smaller and faster, but breaks compatibility with code compiled with the legacy ABI (including everything compiled with GCC).

Now we can install GNUstep-gui (AppKit). This requires a few libraries to handle images, so make sure you install these ports: jpeg, tiff, png. For spell checking, install aspell. For speech synthesis, install flite.

$ svn co svn:// gui
$ cd gui
$ gmake -j 8 && sudo -E gmake install

-gui is only half of the puzzle. It uses the GNUstep back library to handle all of the windowing-system-specific details. Here you'll need the libXt and cairo ports

$ svn co svn:// back
$ cd back
$ gmake -j 8 && sudo -E gmake install

You should now have a working GNUstep install and you can start with installing Étoilé.

Installing Étoilé

First, you need to make sure that all of the Étoilé dependencies are satisfied.

LanguageKit: llvm, clang (unfortunately, you can't use the one in the base system, because it doesn't export all of the required headers) PopplerKit: poppler CoreObject: postgresql-server, postgresql-client LanguageKit: gmp OgreKit: oniguruma5 MediaKit (not currently enabled in the default build, but should be soon): ffmpeg Azalea: libXft etoile_system: dbus Corner: libXScrnSaver DocGenerator: graphviz

Now, you should just be able to check out Étoilé from subversion and build it:

$ svn co svn://
$ cd Etoile
$ gmake && sudo -E gmake install