Hugin Compiling OSX
- 1 Introduction
- 2 Building environment
- 3 Install necessary libraries
- 4 Build Hugin
- 5 Important Note on the produced Bundle
- 6 Building Enblend (using Fink or MacPorts)
- 7 Bulding Autopano-Sift-C
- Directory structure where everything is built and installed:
- MacPorts: /opt/local
- Fink: /sw
- Main commands to install/update/uninstall/deactivate packages:
- MacPorts: sudo port [install][update][uninstall][search] <package1> <package2> <packagex>
- Fink: sudo apt-get [install][update][uninstall][search] <package1> <package2> <packagex>
Note: This Howto does not describe how to build a portable universal application. You can use the Build a MacOSX Universal Hugin bundle with Xcode
Note: In case you encounter problems, report them on the Hugin mailing list.
Download and install XCode
Download and install the XCode Tools version for your MacOSX version: Xcode 2.5.x for MacOSX 10.4.x or below, Xcode 3.1.x for 10.5.x (Leopard) and Xcode 3.2.x for 10.6.x (Snow Leopard). You will not use the Xcode development environment itself, but the MacOSX system comes without the GNU compiler, builder, linker and so on.
Note: This tutorial describes how to build Hugin with MacPorts. This should more or less be the same for Fink. All references to /opt/local that are mentioned here for MacPorts should be changed with /sw for Fink. You may find Fink Commander helpful. Unfortunately it seems unsupported / unmaintained. The Fink FAQ may help. Can somebody please describe here how to install Fink and Fink Commander?
If you don't have it already, install MacPorts, which provides the port command, from MacPorts, giving you compilable package access to thousands of pieces of open source software. If you already have macports (formerly darwinports) installed, update it to at least version 1.7.0:
sudo port selfupdate
Make sure you have synced the latest port files:sudo port -d sync
Snow Leopard remarks: - edit your "/opt/local/etc/macports/macports.conf" and set "universal_archs" to "x86_64 i386" (off course without the double quotes).
Install cmake from MacPorts:
$ sudo port install cmake
Alternatively, you can download a prepackaged installer from CMake.
You need to get and install Mercurial from MacPorts as the Hugin development trunk is in a Marcurial repository.
Note: Hugin used to be in a SVN repository but since mid May 2010 it has been moved to Mercurial
You need to get and install Subversion from MacPorts. If you fancy a nice GUI you can download the Open-Source SVNX. You still need svn installed as it is only a graphical shell and I won't explain SVNX here (I only used it once, I still like the terminal). Note: Subversion comes preinstalled in Leopard and Snow Leopard. In Leopard, it is quite old, so you'll want to compile the newer version from MacPorts. In Snow Leopard, the pre-installed version is the quite current 1.6.5, and should be fine.
Install necessary libraries
Use port to install the necessary libraries and commands for Hugin:
sudo port install boost tiff jpeg libpng wxWidgets subversion openexr exiv2 glew mercurial
Wait as all of these source packages (and it's dependencies) are downloaded and compiled, and installed into /opt/local. Go get a frappe, walk the dog, and total the first 1000 prime numbers in binary.
You can either build from the latest "tarball"release from SourceForge, which is currently 2.9.17 or from the latest version in SVN (preferred). The current MacPorts version is too old:
svn co https://panotools.svn.sourceforge.net/svnroot/panotools panotools
To build and install the SVN version you first need to edit the bootstrap file and change:
$ cd DirectoryWherePanotoolsIs/panotools/trunk/libpano $ nano bootstrap (or do it with your preferred editor)
Alternatively, this command-line should work just as well (untested):
Now you can build the library:
$ ./bootstrap --with-jpeg=/opt/local/ --with-tiff=/opt/local/ --with-png=/opt/local/ --without-java $ export CFLAGS="-I/opt/local/include -L/opt/local/lib" $ ./configure
Snow Leopard: If you are on Snow Leopard you have to do an extra step. Open the "libtool" file with an editor and change all occurrences of "-dynamiclib" to "-dynamiclib -arch i386" (4 occurrences).
$ make $ sudo make install
By default the library is installed into /usr/local/lib.
Hugin requires wxWidgets, the GUI toolkit currently employed by Hugin, to be at version >= 2.8.7. The current version of wxWidgets at MacPorts is 2.8.8.
Fix a problem on Tiger (10.4.x): Tiger comes with WxWindows version 2.5. The Hugin cmake will search OS paths first and will find Tiger's own version 2.5 instead of your freshly compiled 2.8. You need to get Tiger's 2.5 version out of the way as you won't be able to build Hugin succesfully as long as it is in place.
$ sudo mv /usr/bin/wx-config /usr/bin/wx-config-2.5 $ sudo mv /usr/include/wx-2.5 /usr/include/wx-2.5-macTiger
Fix a problem on Leopard (10.5.x): Leopard comes with WxWindows version 2.8.4. The Hugin cmake will search OS paths first and will find Leopard's own version 2.8.4 instead of your freshly compiled 2.8.8 or above. You need to get Tiger's 2.8.4 version out of the way. Hugin will build succesfully with 2.8.4 and will run. However version 2.8.4 still contains some bugs that will cause "bleeding through" in the graphical CP windows. This means that when things change in wxwidgets objects, sometimes (most of the times) the CP window displays through your current GUI screen.
sudo mv /usr/bin/wx-config /usr/bin/wx-config-2.8.4 sudo mv /usr/include/wx-2.8 /usr/include/wx-2.8-macLeopard
Snow Leopard (10.6.x)
Snow Leopard comes with WxWindows 2.8.8 so no changes are required.
Fix a (hopefully temporary) issue with Macport's threaded Boost library not providing generic link names for libboost_thread:
$ cd /opt/local/lib $ sudo ln -s libboost_thread-mt.a libboost_thread.a $ sudo ln -s libboost_thread-mt.dylib libboost_thread.dylib $ cd -
Get Hugin from Mercurial
Check out the hugin sources from the Mercurial repository, like:
hg clone http://hugin.hg.sourceforge.net:8000/hgroot/hugin/hugin hugin
If you are asked to accept the ssh key from the SourceForge server, do accept it permanently (p). Otherwise the configuring process using cmake will fail.
On subsequent updates you simply cd into the hugin directory and issue the following two commands:
hg pull hg update
Create hugin build directory
Create another directory alongside the newly created hugin/ for the build files (a cool feature of CMake: it doesn't need to pollute your source directory with build files!):
mkdir hugin_build; cd hugin_build
Note: You can give this directory any name you want, but hugin_build is chosen for it's clarity.
Before we configure hugin we need to set the build environment:
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig export CFLAGS="-I/opt/local/include -L/opt/local/lib" export CXXFLAGS=$CFLAGS
Configure hugin using cmake from inside the build directory you created:
Compile Hugin and friends:
make sudo make install
Watch the pretty colors go by. Give the dog another quick spin around the block; you're finished. Look for the new bundle Hugin.app in usr/local/Applications/ or in usr/local/bin/. Copy or link it to /Applications, or your preferred location, and commence testing.
Important Note on the produced Bundle
Since the produced Hugin.app bundle links dynamically to libraries outside of the bundle, it is not yet portable, i.e. cannot be copied or shared unless the other machine has the same collection of libraries available in the same places. This is to facilitate development and testing (re-compile external libraries and test without re-building). Building a fully portable universal binary version at the command line is planned. You can use the Build a MacOSX Universal Hugin bundle with Xcode to build a universal portable bundle.
Building Enblend (using Fink or MacPorts)
follow these updated instructions
Follow these instructions