Mac OS X-specific Build instructions
  
  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.
  
  Install the latest Xcode from Apple.
  
  Use the port command to install any delegate libraries you require, for example:
  
    $magick> sudo port install jpeg
  
  Now lets 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-6.5.9-0.tar.gz $magick> cd ImageMagick-6.5.9
  
  Configure ImageMagick:
  
    $magick> ./configure --prefix=/opt --with-quantum-depth=16 \
      --disable-dependency-tracking --with-x=yes \
      --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/ \
      --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.
  
  To test the ImageMagick GUI, in a new shell, type:
  
    $magick> display -display :0
