Blob Blame History Raw
IlmBase on MacOS X
------------------

Building IlmBase on MacOS X is just like building it on GNU/Linux. 
Follow the instructions in the README file under BUILDLING ILMBASE,
but see below re: shared libraries.


Missing gnu automake tools on  Mac OS X 10.8+
------------------
Later versions of OS X ,10.8+, do not, by default have all the necessary 
tools for building. In particular,  Autoconf and Automake may be missing. 

The following commands will download and install the necessary components:

cd ~/myDevLoc
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.64.tar.gz
tar xzf autoconf-2.64.tar.gz
cd autoconf-2.64
./configure --prefix=~/myDevLoc/autotools-bin
make; make install

cd ~/myDevLoc
curl -OL http://ftpmirror.gnu.org/automake/automake-1.12.tar.gz
tar xzf automake-1.12.tar.gz
cd automake-1.12
./configure --prefix=~/myDevLoc/autotools-bin
make; make install

cd ~/myDevLoc
curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.tar.gz
tar xzf libtool-2.4.tar.gz
cd libtool-2.4
./configure --prefix=~/myDevLoc/autotools-bin
make; make install


You may want to export the installation path for your convenience.
Finally, make sure that you have installed the command line tools for XCode.


Universal Builds on Mac OS X
------------------
OS X supports multiple architectures. By default, IlmBase will be built
for the system doing the building. For example, if you build IlmBase on
an Intel system, the libraries will be built for Intel.

You can specify building for a different architecture, or multiple architectures,
by passing the "--enable-osx-arch" flag to configure. Building for multiple
architectures requires that "--disable-dependency-tracking" be passed as well.

For example, to build for Intel and PowerPC:

./configure --enable-osx-arch="i386 ppc" --disable-dependency-tracking.

To build "4-way universal" for 32-bit and 64-bit Intel and PowerPC:

./configure --enable-osx-arch="i386 ppc x86_64 ppc64" --disable-dependency-tracking.

For more information on universal builds, see:

http://developer.apple.com/documentation/Porting/Conceptual/PortingUNIX/compiling/chapter_4_section_3.html

Earlier releases of IlmBase included an "--enable-osx-universal-binaries" 
switch, which specifies a two-way universal build: Intel and PowerPC, 32-bit only. 
This is still available, but deprecated in favor of the more flexible 
"--enable-osx-arch" and "--enable-osx-sdk" switches.


Choosing an SDK on Mac OS X
------------------
OS X allows you to specify one of several SDKs, or sysroots. This allows you to 
target systems other than the system that your build machine runs.

For example, if you are building on Mac OS X 10.4, but you need access to features 
that were introduced in Mac OS X 10.5, you can build against the Mac OS X 10.5 
versions of system libraries and headers.

You can choose to build IlmBase with a specific SDK using the "--enable-osx-sdk" 
switch. For example:

./configure --enable-osx-sdk=MacOSX10.5.sdk

If you are building on Mac OS X 10.4 and want to build universal, you will need to 
specify the universal version of the 10.4 SDK: MacOSX10.4u.sdk. Otherwise, you probably 
don't need to specify an SDK.

For more information on sysroots, see:

http://developer.apple.com/documentation/DeveloperTools/gcc-4.2.1/gcc/Directory-Options.html


Shared libraries
----------------

IlmBase requires the "flat namespace" option when built as a shared
library.  You may have problems trying to use IlmBase shared libraries
with applications that expect OS X's two-level namespace.  We have not
tested the shared libs extensively, though they appear to work with
exrdisplay and exrheader, but use them at your own risk.  We will
support two-level namespace shared libs in a future release.