102 lines
3.7 KiB
Plaintext
102 lines
3.7 KiB
Plaintext
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.
|