Setting up a MacOS X system for building GHC (HEAD)
If your host OS X environment indicates that GCC is a wrapper for clang, (easily detected by looking at output of /usr/bin/gcc --version in the terminal),
then please make sure you have an up to date release of GHC, Currently 7.8.3.
With the relatively recent Xcode (at the time of this edit, the current version is Xcode-10.1), it is recommended to use Clang rather than GCC, by prepending the configure command with it: CC=clang ./configure or ./configure CC=clang
Get the most recent version of Apple's Xcode tools that you can. Your OS X CD has a version on it. You may be able to download a newer version from the Apple Developer Connection website. You may need to sign up for a free membership in the Apple Developer Connection, and downloading may still cost a little money. In later versions of OS X (10.6 / 10.7), Apple added the "App Store". Xcode is available within the App Store for "Free".
Successful builds of older GHC sources have been reported using Xcode 3.0, 2.4 and 2.4.1 on Intel Macs. Xcode 2.2.1 is known not to work out of the box on Intel Macs, and Xcode 3.0 is known not to work out of the box on PowerPC Macs (#2887 (closed)). Versions prior to 3.1 may build GHC successfully, but choke on certain libraries.
Secondly, you need an installation of GHC for use as your bootstrap compiler environment.
There are 4 different choices. Choose the one you are most comfortable with! The options below should be a GHC version >= 7.8.3.
Install the Haskell Platform. If your OS X version predates 10.8, This build (currently of GHC 7.8.3) is known to support as far back as OS X 10.6
NB: You need to use a binary distribution of GHC 7.4.1 (or later) as your bootstrap compiler.
Additional Haskell tools
Make sure you have up to date versions of alex and happy installed and visible in your shell path. cabal update ; cabal install alex happy will install the most recent release for you.
If you are trying out using GHC head ( currently GHC 7.9 ) for software dev, you will need cabal and cabal install Head (current Cabal Head is 1.21, or a release version >= 1.22, currently cabal versions >= 1.21 are only on the github master for cabal and cabal-install).
By default GHC tries to link to a system installed GMP lib, but depending on how you wish to distribute the resulting applications,
its worth considering either using one of the non GMP integer libs.
If you're OK with static linking GMP into the GHC RTS,
you can add the line
to you mk/build.mk file (which hosts all your other build system config preferences also.)
Supporting Older OS X versions with your build
Running a command like export MACOSX_DEPLOYMENT_TARGET=10.7 before building will imply setting -mmacosx-version-min=version for clang and friends, and will result in a GHC build that can run on any OS X >= version (where version can be older than the host machine's OS X version).
Note that this the deployment target does not affect library availability. This means that builds performed on Sierra (macOS 10.12) systems (which have clock_gettime), will be incompatible with previous OS X releases (see #12858 (closed)). If you need to build a binary distribution on Sierra which is compatible with previous releases, it's best to simply disable clock_gettime support at configuration time, such as by setting the environment variables as follows
export MACOSX_DEPLOYMENT_TARGET=10.7 # Only Sierra onwards supports clock_gettime. See #12858. export ac_cv_func_clock_gettime=no
Thirdly, if you want to build the development version of GHC from the Git repositories, you also need to install the GNU auto tools. You can build them yourself or use any of brew, fink, or macports:
Without docbook2x, the build fails after attempting network access for a required DTD. Without psutils, the build fails when trying to build the PostScript file used to generate haddock.pdf.
DocBook is a fairly large system unto itself and configuring it to build the documentation in its various formats can be a maze. Verifying that your SGML_CATALOG_FILES and XML_CATALOG_FILES environment variables are pointed at the right places will fix most problems. (What should they point to? After brew install docbook-xsl they are both empty.)
the following environment variables setting (using FISH shell syntax) results in a working ghc build that has working html docs and supports any OSX versions >= the specified deployment target!
set -xl XML_CATALOG_FILES /usr/local/etc/xml/catalogset -xl MACOSX_DEPLOYMENT_TARGET 10.7