@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.7.2
@item Xcode 4.2.1 (Build version 4D502)
@item llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658)
@item yasm 1.2.x
@item xquartz (http://xquartz.macosforge.org/landing/)
@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:

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

The list of architectures is hard coded to @value{HB.name}'s desired product and currently is composed of combining the binaries produced from two xcconfigs: osx106.i386 and osx106.x86_64. The following example shows how to specify a different list of xcconfigs:

@example
./configure --disable-xcode
cd build/
make UB.xcconfigs="osx107.i386 osx107.x86_64" ub.build
make UB.xcconfigs="osx107.i386 osx107.x86_64" ub.combine
@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
