@input texinfo @c -*- Texinfo -*-
@c %**start of header
@setfilename Building.osx.info
@include base/article.texi
@include building/command.texi
@paragraphindent none

@set BG.platform osx
@c %**end of header

@majorheading Build Guide for @value{HB.name} @value{HB.version} on @value{OS.@value{BG.platform}}

@contents
@include building/chapter.introduction.texi

@c %**-------------------------------------------------------------------------
@anchor{prerequisites}
@chapter Prerequisites
Building on @value{OS.osx} is well supported. It is the reference platform for @value{HB.name}. The following are the recommended specifications for this platform; but is not necessarily the only configuration that is possible:

@itemize @bullet
@item Mac Intel hardware
@item @value{OS.osx} 10.5.7
@item Xcode-3.1.2
@item gcc 4.0.1 (Apple Inc. build 5490)
@item yasm 0.8.0.2194 (for i386 and x86_64 architectures)
@end itemize

@include building/prerequisites.bundled.texi
@include building/prerequisites.common.texi

@c %**-------------------------------------------------------------------------
@include building/chapter.quickstart.texi

@c %**-------------------------------------------------------------------------
@anchor{overview}
@chapter Overview
The two general methods to build on @value{OS.osx} are from @b{terminal} or @b{Xcode.app}. The preferred method for automated and repeatable builds is to use the terminal. Otherwise the choice is generally up to the individual. To be extra clear, building from the terminal by default actually invokes @command{xcodebuild} to build the very same targets contained in the Xcode project. Think of it as building with Xcode but without the GUI.

@c %**-------------------------------------------------------------------------
@include building/chapter.via.terminal.texi

@c %**-------------------------------------------------------------------------
@anchor{terminal.ub}
@section Universal Binaries
This section outlines convenience procedures for creating Universal Binaries for all the architectures.

@quotation Note
The dummy (container) build configuration uses @command{--disable-xcode}; but the nested architecture builds will all make full use of Xcode.
@end quotation

Create a dummy (container) build configuration and use it to launch a nested-build for each architecture @i{serially}; optionally you may substitute @command{make ub.build.serial} for @command{make ub.build.parallel} if your machine has the horsepower:

@example
./configure --disable-xcode
cd build/
make ub.build.serial
make ub.combine
@end example

To specify a subset of architectures to be built first create/edit @file{_SRC_/custom.defs} with the following override to build UB for @samp{i386} and @samp{x86_64} before invoking @command{make}:

@example
## prefer i386 (order is important)
UB.archs = i386 x86_64
@end example

@c %**-------------------------------------------------------------------------
@include building/chapter.via.xcode.texi
@include building/chapter.troubleshooting.texi

A note about gdb: We perform an extra execv when starting the application.  This triggers a trap in gdb.  It is harmless.  You should just 'continue' from the trap.
@include building/appendix.repo.texi
