Mac OS X-specific Build instructions

In order to install ImageMagick on OSX, you will first need Apple's "Xcode", 
which you can get by going to the AppStore and searching for "Xcode" and 
installing it.

Next, you will need to install the "Xcode Command Line Tools" which includes 
the compiler. You can install those by running the following command in the
Terminal:

    xcode-select --install

Now that you have the necessary tools, you have a choice of how to install 
ImageMagick. The simplest method is to use "homebrew", and that method is shown 
first below. The alternative method is to install from source, which is shown
afterwards.

################################################################################
Method 1: Using "homebrew"
################################################################################

Go to http://brew.sh and copy the one-liner that installs "homebrew".

Paste that into the Terminal and run it.

For the very simplest, fastest, most basic ImageMagick installation, run:

    brew install imagemagick

Test your installation by running:

    identify -version

If you want to add support for extra features, such as HDRI, Perl, JPEG2000, 
pango,fftw, TIFF or rsvg etc. you can find the necessary switches by running:

    brew options imagemagick

then find the options you need and apply them like this:

    brew reinstall imagemagick --with-jp2 --with-quantum-depth-16 --with-pango
 
If you have any problems with "homebrew", simply run:

    brew doctor

and follow the doctor's advice.


################################################################################
Method 2: Compile from source - not necessary if you used "homebrew" method
################################################################################


Perform these steps as an administrator or with the sudo command:
  
Install MacPorts. Download and install http://www.macports.org/ and type the
following commands:
  
    $magick> sudo port -v install freetype +bytecode
    $magick> sudo port -v install librsvg
    $magick> sudo port -v install graphviz +gs +wmf +jbig +jpeg2 +lcms
  
This installs many of the delegate libraries ImageMagick will utilize such as
JPEG and FreeType.
  
Use the port command to install any delegate libraries you require, for example:
  
    $magick> sudo port install jpeg
  
Now let's build ImageMagick:
  
Download the ImageMagick source distribution and verify the distribution
against its message digest.
  
Unpack and change into the top-level ImageMagick directory:
  
    $magick> tar xvfz ImageMagick-7.0.7-0.tar.gz 
    $magick> cd ImageMagick-7.0.7
  
Configure ImageMagick:
  
    $magick> ./configure --prefix=/opt --with-quantum-depth=16 \
      --disable-dependency-tracking --without-perl
  
Build ImageMagick:
  
    $magick> make
  
Install ImageMagick:
  
    $magick> sudo make install
  
To verify your install, type
  
    $magick> /opt/local/bin/identify -list font
  
to list all the fonts ImageMagick knows about.
