]> granicus.if.org Git - graphviz/commitdiff
new Makefile for SnowLeopard prebuilds
authorellson <devnull@localhost>
Tue, 8 Dec 2009 10:29:06 +0000 (10:29 +0000)
committerellson <devnull@localhost>
Tue, 8 Dec 2009 10:29:06 +0000 (10:29 +0000)
macosx/prebuild/Makefile.snowleopard [new file with mode: 0644]

diff --git a/macosx/prebuild/Makefile.snowleopard b/macosx/prebuild/Makefile.snowleopard
new file mode 100644 (file)
index 0000000..61be2c6
--- /dev/null
@@ -0,0 +1,793 @@
+# tools
+
+CURL=curl
+MAKE=make
+TAR=tar
+
+PREFIX=$(HOME)/FIX/leopard
+
+ARCHS=-arch ppc -arch i386 -arch ppc64 -arch x86_64
+
+# package URL
+
+PKGCONFIG_URL=http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
+PNG_URL=http://downloads.sourceforge.net/libpng/libpng-1.2.41.tar.gz
+FREETYPE_URL=http://download.savannah.gnu.org/releases-noredirect/freetype/freetype-2.3.11.tar.gz
+FONTCONFIG_URL=http://fontconfig.org/release/fontconfig-2.8.0.tar.gz
+XFT_URL=http://xorg.freedesktop.org/releases/individual/lib/libXft-2.1.14.tar.gz
+GD_URL=http://www.libgd.org/releases/gd-2.0.36RC1.tar.gz
+PIXMAN_URL=http://cairographics.org/releases/pixman-0.17.2.tar.gz
+CAIRO_URL=http://cairographics.org/releases/cairo-1.8.8.tar.gz
+GETTEXT_URL=ftp://mirrors.kernel.org/gnu/gettext/gettext-0.17.tar.gz
+
+# GLIB 2.21 doesn't build
+#GLIB_URL=http://ftp.gnome.org/pub/gnome/sources/glib/2.21/glib-2.21.2.tar.gz
+# GLIB 2.20 was OK
+#GLIB_URL=http://ftp.gnome.org/pub/gnome/sources/glib/2.20/glib-2.20.1.tar.gz
+# GLIB 2.23 ?
+GLIB_URL=http://ftp.gnome.org/pub/gnome/sources/glib/2.23/glib-2.23.0.tar.gz
+
+PANGO_URL=http://ftp.gnome.org/pub/GNOME/sources/pango/1.26/pango-1.26.1.tar.gz
+GTS_URL=http://downloads.sourceforge.net/gts/gts-0.7.6.tar.gz
+GTK_URL=http://ftp.gnome.org/pub/gnome/sources/gtk+/2.19/gtk+-2.19.1.tar.gz
+ATK_URL=http://ftp.acc.umu.se/pub/gnome/sources/atk/1.29/atk-1.29.3.tar.gz
+TIFF_URL=ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.0beta5.tar.gz
+JPEG_URL=http://www.ijg.org/files/jpegsrc.v7.tar.gz
+
+# libraries
+
+PKGCONFIG=pkg-config
+FREETYPE=libfreetype.la
+FONTCONFIG=libfontconfig.la
+XFT=libXft.la
+GD=libgd.la
+PIXMAN=libpixman-1.la
+PNG=libpng.la
+CAIRO=libcairo.la
+INTL=libintl.la
+GLIB=libglib-2.0.la
+PANGO=libpango-1.0.la
+GTS=libgts.la
+GTK=libgtk+.la
+ATK=libatk-1.0.la
+TIFF=libtiff.la
+JPEG=libjpeg.a
+
+# directories
+dirname=$(basename $(basename $(notdir $(1))))
+PKGCONFIG_DIR=$(call dirname, $(PKGCONFIG_URL))
+FREETYPE_DIR=$(call dirname, $(FREETYPE_URL))
+FONTCONFIG_DIR=$(call dirname, $(FONTCONFIG_URL))
+XFT_DIR=$(call dirname, $(XFT_URL))
+GD_DIR=$(call dirname, $(GD_URL))
+PIXMAN_DIR=$(call dirname, $(PIXMAN_URL))
+PNG_DIR=$(call dirname, $(PNG_URL))
+CAIRO_DIR=$(call dirname, $(CAIRO_URL))
+GETTEXT_DIR=$(call dirname, $(GETTEXT_URL))
+GLIB_DIR=$(call dirname, $(GLIB_URL))
+PANGO_DIR=$(call dirname, $(PANGO_URL))
+GTS_DIR=$(call dirname, $(GTS_URL))
+GTK_DIR=$(call dirname, $(GTK_URL))
+ATK_DIR=$(call dirname, $(ATK_URL))
+TIFF_DIR=$(call dirname, $(TIFF_URL))
+JPEG_DIR=$(call dirname, $(JPEG_URL))
+
+#
+# target
+#
+# --prefix to dump results into $(PREFIX) not /usr/local
+# --disable-dependency-tracking since this is one-off build
+# --enable-static=yes since this builds static libraries
+# --enable-shared=no since this doesn't build dynamic libraries
+# -O2 to optimize code for speed and performance
+# -arch to build 32-bit/64-bit Universal Binaries
+# pkgconfig to look for X11 libraries too
+
+BASE_CONFIG=--prefix=$(PREFIX) --disable-dependency-tracking --enable-static=yes --enable-shared=no PKG_CONFIG="$(PREFIX)/bin/pkg-config" PKG_CONFIG_PATH="$(PREFIX)/lib/pkgconfig:/usr/X11/lib/pkgconfig"
+FLAG_CONFIG=CFLAGS="-O2 $(ARCHS) -I$(PREFIX)/include" LDFLAGS="$(ARCHS) -L$(PREFIX)/lib -framework CoreFoundation -framework CoreServices" 
+
+install: $(PREFIX)/lib/$(PANGO) $(PREFIX)/lib/$(GD) $(PREFIX)/lib/$(GTS)
+
+# gtk dropped, unable to build....
+# $(PREFIX)/lib/$(GTK)
+
+uninstall:
+       $(MAKE) -C $(JPEG_DIR) uninstall
+       $(MAKE) -C $(TIFF_DIR) uninstall
+       $(MAKE) -C $(ATK_DIR) uninstall
+       $(MAKE) -C $(GTK_DIR) uninstall
+       $(MAKE) -C $(GTS_DIR) uninstall
+       $(MAKE) -C $(PANGO_DIR) uninstall
+       $(MAKE) -C $(GLIB_DIR) uninstall
+       $(MAKE) -C $(GETTEXT_DIR) uninstall
+       $(MAKE) -C $(CAIRO_DIR) uninstall
+       $(MAKE) -C $(PIXMAN_DIR) uninstall
+       $(MAKE) -C $(PNG_DIR) uninstall
+       $(MAKE) -C $(GD_DIR) uninstall
+       $(MAKE) -C $(FONTCONFIG_DIR) uninstall
+       $(MAKE) -C $(FREETYPE_DIR) uninstall
+       $(MAKE) -C $(PKGCONFIG_DIR) uninstall
+       
+clean:
+       $(MAKE) -C $(JPEG_DIR) clean
+       $(MAKE) -C $(TIFF_DIR) clean
+       $(MAKE) -C $(ATK_DIR) clean
+       $(MAKE) -C $(GTK_DIR) clean
+       $(MAKE) -C $(GTS_DIR) clean
+       $(MAKE) -C $(PANGO_DIR) clean
+       $(MAKE) -C $(GLIB_DIR) clean
+       $(MAKE) -C $(GETTEXT_DIR) clean
+       $(MAKE) -C $(CAIRO_DIR) clean
+       $(MAKE) -C $(PIXMAN_DIR) clean
+       $(MAKE) -C $(PNG_DIR) clean
+       $(MAKE) -C $(GD_DIR) clean
+       $(MAKE) -C $(FONTCONFIG_DIR) clean
+       $(MAKE) -C $(FREETYPE_DIR) clean
+       $(MAKE) -C $(PKGCONFIG_DIR) clean
+       
+distclean:
+       $(MAKE) -C $(JPEG_DIR) distclean
+       $(MAKE) -C $(TIFF_DIR) distclean
+       $(MAKE) -C $(ATK_DIR) distclean
+       $(MAKE) -C $(GTK_DIR) distclean
+       $(MAKE) -C $(GTS_DIR) distclean
+       $(MAKE) -C $(PANGO_DIR) distclean
+       $(MAKE) -C $(GLIB_DIR) distclean
+       $(MAKE) -C $(GETTEXT_DIR) distclean
+       $(MAKE) -C $(CAIRO_DIR) distclean
+       $(MAKE) -C $(PIXMAN_DIR) distclean
+       $(MAKE) -C $(PNG_DIR) distclean
+       $(MAKE) -C $(GD_DIR) distclean
+       $(MAKE) -C $(FONTCONFIG_DIR) distclean
+       $(MAKE) -C $(FREETYPE_DIR) distclean
+       $(MAKE) -C $(PKGCONFIG_DIR) distclean
+
+#
+# jpeg
+#
+
+$(PREFIX)/lib/$(JPEG): $(JPEG_DIR)/$(JPEG)
+       @echo
+       @echo INSTALLING JPEG...
+       @echo
+       $(MAKE) -C $(JPEG_DIR) install
+
+$(JPEG_DIR)/$(JPEG): $(JPEG_DIR)/Makefile
+       @echo
+       @echo MAKING JPEG...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(JPEG_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(JPEG_DIR)
+       
+$(JPEG_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(JPEG_DIR)/configure
+       @echo
+       @echo CONFIGURING JPEG...
+       @echo
+       cd $(JPEG_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --enable-static=no
+
+$(JPEG_DIR)/configure: | $(JPEG_DIR).tar.gz
+       @echo
+       @echo UNTARRING JPEG...
+       @echo
+       $(TAR) xzf $| 
+       ln -s jpeg-7 $(JPEG_DIR)
+               
+$(JPEG_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING JPEG...
+       @echo
+       $(CURL) --remote-name --location $(JPEG_URL) || rm -f $(JPEG_DIR).tar.gz
+
+#
+# tiff
+#
+
+$(PREFIX)/lib/$(TIFF): $(TIFF_DIR)/libtiff/$(TIFF)
+       @echo
+       @echo INSTALLING TIFF...
+       @echo
+       $(MAKE) -C $(TIFF_DIR) install
+
+$(TIFF_DIR)/libtiff/$(TIFF): $(TIFF_DIR)/Makefile
+       @echo
+       @echo MAKING TIFF...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(TIFF_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(TIFF_DIR)
+       
+$(TIFF_DIR)/Makefile: $(PREFIX)/lib/$(JPEG) | $(PREFIX)/bin/$(PKGCONFIG) $(TIFF_DIR)/configure
+       @echo
+       @echo CONFIGURING TIFF...
+       @echo
+       cd $(TIFF_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --with-jpeg-include-dir=$(PREFIX)/include --with-jpeg-lib-dir=$(PREFIX)/lib
+
+$(TIFF_DIR)/configure: | $(TIFF_DIR).tar.gz
+       @echo
+       @echo UNTARRING TIFF...
+       @echo
+       $(TAR) xzf $| 
+               
+$(TIFF_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING TIFF...
+       @echo
+       $(CURL) --remote-name --location $(TIFF_URL) || rm -f $(TIFF_DIR).tar.gz
+
+#
+# atk
+#
+
+$(PREFIX)/lib/$(ATK): $(ATK_DIR)/atk/$(ATK)
+       @echo
+       @echo INSTALLING ATK...
+       @echo
+       $(MAKE) -C $(ATK_DIR) install
+
+$(ATK_DIR)/atk/$(ATK): $(ATK_DIR)/Makefile
+       @echo
+       @echo MAKING ATK...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(ATK_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(ATK_DIR)
+       
+$(ATK_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(ATK_DIR)/configure
+       @echo
+       @echo CONFIGURING ATK...
+       @echo
+       cd $(ATK_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+
+$(ATK_DIR)/configure: | $(ATK_DIR).tar.gz
+       @echo
+       @echo UNTARRING ATK...
+       @echo
+       $(TAR) xzf $| 
+               
+$(ATK_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING ATK...
+       @echo
+       $(CURL) --remote-name --location $(ATK_URL) || rm -f $(ATK_DIR).tar.gz
+
+#
+# gtk+
+#
+
+$(PREFIX)/lib/$(GTK): $(GTK_DIR)/gtk/$(GTK)
+       @echo
+       @echo INSTALLING GTK...
+       @echo
+       $(MAKE) -C $(GTK_DIR) install
+
+$(GTK_DIR)/gtk/$(GTK): $(GTK_DIR)/Makefile
+       @echo
+       @echo MAKING GTK...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(GTK_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(GTK_DIR)
+       
+$(GTK_DIR)/Makefile: $(PREFIX)/lib/$(PANGO) $(PREFIX)/lib/$(ATK) $(PREFIX)/lib/$(PNG) $(PREFIX)/lib/$(JPEG) $(PREFIX)/lib/$(TIFF) | $(PREFIX)/bin/$(PKGCONFIG) $(GTK_DIR)/configure
+       @echo
+       @echo CONFIGURING GTK...
+       @echo
+       cd $(GTK_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --without-libjasper --without-libjpeg --disable-modules
+
+$(GTK_DIR)/configure: | $(GTK_DIR).tar.gz
+       @echo
+       @echo UNTARRING GTK...
+       @echo
+       $(TAR) xzf $| 
+               
+$(GTK_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING GTK...
+       @echo
+       $(CURL) --remote-name --location $(GTK_URL) || rm -f $(GTK_DIR).tar.gz
+
+#
+# gts
+#
+
+$(PREFIX)/lib/$(GTS): $(GTS_DIR)/src/$(GTS)
+       @echo
+       @echo INSTALLING GTS...
+       @echo
+       $(MAKE) -C $(GTS_DIR) install
+
+$(GTS_DIR)/src/$(GTS): $(GTS_DIR)/Makefile
+       @echo
+       @echo MAKING GTS...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(GTS_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(GTS_DIR)
+       
+$(GTS_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(GTS_DIR)/configure
+       @echo
+       @echo CONFIGURING GTS...
+       @echo
+       cd $(GTS_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+
+$(GTS_DIR)/configure: | $(GTS_DIR).tar.gz
+       @echo
+       @echo UNTARRING GTS...
+       @echo
+       $(TAR) xzf $| 
+               
+$(GTS_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING GTS...
+       @echo
+       $(CURL) --remote-name --location $(GTS_URL) || rm -f $(GTS_DIR).tar.gz
+
+#
+# pango
+#
+# --with-included-modules=yes to embed pango modules within pango itself
+# link also to CoreFoundation and CoreServices because of gettext dependency
+
+$(PREFIX)/lib/$(PANGO): $(PANGO_DIR)/pango/$(PANGO)
+       @echo
+       @echo INSTALLING PANGO...
+       @echo
+       $(MAKE) -C $(PANGO_DIR) install
+
+$(PANGO_DIR)/pango/$(PANGO): $(PANGO_DIR)/Makefile
+       @echo
+       @echo MAKING PANGO...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(PANGO_DIR) clean; fi && \
+       PATH=$(PATH):$(PREFIX)/bin $(MAKE) -C $(PANGO_DIR)
+       
+$(PANGO_DIR)/Makefile: $(PREFIX)/lib/$(CAIRO) $(PREFIX)/lib/$(GLIB) $(PREFIX)/lib/$(FONTCONFIG) $(PREFIX)/lib/$(XFT) $(PREFIX)/lib/$(FREETYPE) | $(PREFIX)/bin/$(PKGCONFIG) $(PANGO_DIR)/configure
+       @echo
+       @echo CONFIGURING PANGO...
+       @echo
+       cd $(PANGO_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --with-included-modules=yes
+
+$(PANGO_DIR)/configure: | $(PANGO_DIR).tar.gz
+       @echo
+       @echo UNTARRING PANGO...
+       @echo
+       $(TAR) xzf $| && (cd $(PANGO_DIR); patch -p1 <../pango.patch)
+               
+$(PANGO_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING PANGO...
+       @echo
+       $(CURL) --remote-name --location $(PANGO_URL) || rm -f $(PANGO_DIR).tar.gz
+
+#
+# glib
+#
+# patch to fix libiconv_open absent in 64-bit
+# run configure + make once to create glib-genmarshal for cross-building support
+# run configure once for each architecture, capturing config.h and glibconfig.h
+# run configure again for Universal Binary, recomposing config.h and glibconfig.h from captured versions
+
+$(PREFIX)/lib/$(GLIB): $(GLIB_DIR)/glib/$(GLIB)
+       @echo
+       @echo INSTALLING GLIB...
+       @echo
+       $(MAKE) -C $(GLIB_DIR) install
+       
+$(GLIB_DIR)/glib/$(GLIB): $(GLIB_DIR)/Makefile
+       @echo
+       @echo MAKING GLIB...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(GLIB_DIR) clean; fi && \
+       $(MAKE) -C $(GLIB_DIR)
+       
+$(GLIB_DIR)/Makefile: $(PREFIX)/lib/$(INTL) | $(PREFIX)/bin/$(PKGCONFIG) $(GLIB_DIR)/configure 
+       @echo
+       @echo CONFIGURING GLIB...
+       @echo
+       cd $(GLIB_DIR) && \
+       OSREL=`uname -r` && \
+       BUILD=`./config.guess` && \
+       rm -f darwin.cache && \
+       echo "glib_cv_long_long_format=ll" >>darwin.cache && \
+       echo "glib_cv_stack_grows=no" >>darwin.cache && \
+       echo "glib_cv_uscore=no" >>darwin.cache && \
+       echo "ac_cv_func_posix_getpwuid_r=yes" >>darwin.cache && \
+       echo "ac_cv_func_posix_getgrgid_r=yes" >>darwin.cache && \
+       echo "ac_cv_func_vsnprintf_c99=yes" >>darwin.cache && \
+       echo "ac_cv_func_printf_unix98=yes" >>darwin.cache && \
+       PATH=$(PREFIX)/bin:gobject:$$PATH && \
+       echo --- GLIB-GENMARSHAL PASS --- && \
+       ./configure $(BASE_CONFIG) CFLAGS="-I$(PREFIX)/include" LDFLAGS="-L$(PREFIX)/lib" && \
+       $(MAKE) -C glib && \
+       $(MAKE) -C gobject glib-genmarshal && \
+       cp darwin.cache darwinian.cache && \
+       echo --- PPC PASS --- && \
+       ./configure --cache-file=darwinian.cache --build=$$BUILD --host=powerpc-apple-darwin$$OSREL $(BASE_CONFIG) CFLAGS="-O2 -arch ppc -I$(PREFIX)/include" LDFLAGS="-arch ppc -L$(PREFIX)/lib" && \
+       cp config.h config.ppc.h && \
+       cp glibconfig.h glibconfig.ppc.h && \
+       cp darwin.cache darwinian.cache && \
+       echo --- I386 PASS --- && \
+       ./configure --cache-file=darwinian.cache --build=$$BUILD --host=i686-apple-darwin$$OSREL $(BASE_CONFIG) CFLAGS="-O2 -arch i386 -I$(PREFIX)/include" LDFLAGS="-arch i386 -L$(PREFIX)/lib" && \
+       cp config.h config.i386.h && \
+       cp glibconfig.h glibconfig.i386.h && \
+       cp darwin.cache darwinian.cache && \
+       echo --- PPC64 PASS --- && \
+       ./configure --cache-file=darwinian.cache --build=$$BUILD --host=powerpc-apple-darwin$$OSREL $(BASE_CONFIG) CFLAGS="-O2 -arch ppc64 -I$(PREFIX)/include" LDFLAGS="-arch ppc64 -L$(PREFIX)/lib" && \
+       cp config.h config.ppc64.h && \
+       cp glibconfig.h glibconfig.ppc64.h && \
+       cp darwin.cache darwinian.cache && \
+       echo --- X86_64 PASS --- && \
+       ./configure --cache-file=darwinian.cache --build=$$BUILD --host=x86_64-apple-darwin$$OSREL $(BASE_CONFIG) CFLAGS="-O2 -arch x86_64 -I$(PREFIX)/include" LDFLAGS="-arch x86_64 -L$(PREFIX)/lib" && \
+       cp config.h config.x86_64.h && \
+       cp glibconfig.h glibconfig.x86_64.h && \
+       cp darwin.cache darwinian.cache && \
+       echo --- UNIVERSAL BINARY PASS --- && \
+       ./configure $(BASE_CONFIG) CFLAGS="-O2 $(ARCHS) -I$(PREFIX)/include" LDFLAGS="$(ARCHS) -L$(PREFIX)/lib" && \
+       rm config.h && \
+       echo "#if defined(__ppc__)" >>config.h && \
+       cat config.ppc.h >>config.h && \
+       echo "#elif defined(__i386__)" >>config.h && \
+       cat config.i386.h >>config.h && \
+       echo "#elif defined(__ppc64__)" >>config.h && \
+       cat config.ppc64.h >>config.h && \
+       echo "#elif defined(__x86_64__)" >>config.h && \
+       cat config.x86_64.h >>config.h && \
+       echo "#endif" >>config.h && \
+       rm glibconfig.h && \
+       echo "#if defined(__ppc__)" >>glibconfig.h && \
+       cat glibconfig.ppc.h >>glibconfig.h && \
+       echo "#elif defined(__i386__)" >>glibconfig.h && \
+       cat glibconfig.i386.h >>glibconfig.h && \
+       echo "#elif defined(__ppc64__)" >>glibconfig.h && \
+       cat glibconfig.ppc64.h >>glibconfig.h && \
+       echo "#elif defined(__x86_64__)" >>glibconfig.h && \
+       cat glibconfig.x86_64.h >>glibconfig.h && \
+       echo "#endif" >>glibconfig.h && \
+       touch stamp-gc-h && \
+       $(MAKE) clean
+       
+$(GLIB_DIR)/configure: | $(GLIB_DIR).tar.gz
+       @echo
+       @echo CONFIGURING GLIB...
+       @echo
+       $(TAR) xzf $| && (cd $(GLIB_DIR); patch -p1 <../glib.patch)
+       
+$(GLIB_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING GLIB...
+       @echo
+       $(CURL) --remote-name --location $(GLIB_URL) || rm -f $(GLIB_DIR).tar.gz
+
+#
+# gettext
+#
+
+$(PREFIX)/lib/$(INTL): $(GETTEXT_DIR)/gettext-runtime/intl/$(INTL)
+       @echo
+       @echo INSTALLING GETTEXT...
+       @echo
+       $(MAKE) -C $(GETTEXT_DIR) install
+       
+$(GETTEXT_DIR)/gettext-runtime/intl/$(INTL): $(GETTEXT_DIR)/Makefile
+       @echo
+       @echo MAKING GETTEXT...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(GETTEXT_DIR) clean; fi && \
+       $(MAKE) -C $(GETTEXT_DIR)
+       
+$(GETTEXT_DIR)/Makefile: | $(GETTEXT_DIR)/configure
+       @echo
+       @echo CONFIGURING GETTEXT...
+       @echo
+       cd $(GETTEXT_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+       
+$(GETTEXT_DIR)/configure: | $(GETTEXT_DIR).tar.gz
+       @echo
+       @echo UNTARRING GETTEXT...
+       @echo
+       $(TAR) xzf $| && (cd $(GETTEXT_DIR); patch -p1 <../gettext.patch)
+       
+$(GETTEXT_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING GETTEXT...
+       @echo
+       $(CURL) --remote-name --location $(GETTEXT_URL) || rm -f $(GETTEXT_DIR).tar.gz
+
+#
+# cairo
+#
+# patch to fence missing ATSUI API in 64-bit
+# patch to require pixman-1 in linking
+
+$(PREFIX)/lib/$(CAIRO): $(CAIRO_DIR)/src/$(CAIRO)
+       @echo
+       @echo INSTALLING CAIRO...
+       @echo
+       $(MAKE) -C $(CAIRO_DIR) install
+       
+$(CAIRO_DIR)/src/$(CAIRO): $(CAIRO_DIR)/Makefile
+       @echo
+       @echo MAKING CAIRO...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(CAIRO_DIR) clean; fi && \
+       $(MAKE) -C $(CAIRO_DIR)
+       
+$(CAIRO_DIR)/Makefile: $(PREFIX)/lib/$(PIXMAN) $(PREFIX)/lib/$(FONTCONFIG) $(PREFIX)/lib/$(PNG) | $(PREFIX)/bin/$(PKGCONFIG) $(CAIRO_DIR)/configure
+       @echo
+       @echo CONFIGURING CAIRO...
+       @echo
+       cd $(CAIRO_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+       
+$(CAIRO_DIR)/configure: | $(CAIRO_DIR).tar.gz
+       @echo
+       @echo UNTARRING CAIRO...
+       @echo
+       $(TAR) xzf $| && (cd $(CAIRO_DIR); patch -p1 <../cairo.patch)
+       
+$(CAIRO_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING CAIRO...
+       @echo
+       $(CURL) --remote-name --location $(CAIRO_URL) || rm -f $(CAIRO_DIR).tar.gz
+
+#
+# libpng
+#
+
+$(PREFIX)/lib/$(PNG): $(PNG_DIR)/$(PNG)
+       @echo
+       @echo INSTALLING PNG...
+       @echo
+       $(MAKE) -C $(PNG_DIR) install
+       
+$(PNG_DIR)/$(PNG): $(PNG_DIR)/Makefile
+       @echo
+       @echo MAKING PNG...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(PNG_DIR) clean; fi && \
+       $(MAKE) -C $(PNG_DIR)
+       
+$(PNG_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(PNG_DIR)/configure 
+       @echo
+       @echo CONFIGURING PNG...
+       @echo
+       cd $(PNG_DIR) && ./configure $(BASE_CONFIG) CFLAGS="$(ARCHS) -I$(PREFIX)/include" LDFLAGS="$(ARCHS) -L$(PREFIX)/lib"
+       
+$(PNG_DIR)/configure: | $(PNG_DIR).tar.gz
+       @echo
+       @echo UNTARRING PNG...
+       @echo
+       $(TAR) xzf $| 
+       
+$(PNG_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING PNG...
+       @echo
+       $(CURL) --remote-name --location $(PNG_URL) || rm -f $(PIXMAN_DIR).tar.gz
+
+#
+# pixman
+#
+# patch to detect endianness, MMX, SSE and SSE2 during Universal Binary build
+# omit -O2 since it bombs Apple gcc
+
+$(PREFIX)/lib/$(PIXMAN): $(PIXMAN_DIR)/pixman/$(PIXMAN)
+       @echo
+       @echo INSTALLING PIXMAN...
+       @echo
+       $(MAKE) -C $(PIXMAN_DIR) install
+       
+$(PIXMAN_DIR)/pixman/$(PIXMAN): $(PIXMAN_DIR)/Makefile
+       @echo
+       @echo MAKING PIXMAN...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(PIXMAN_DIR) clean; fi && \
+       $(MAKE) -C $(PIXMAN_DIR)
+       
+$(PIXMAN_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(PIXMAN_DIR)/configure 
+       @echo
+       @echo CONFIGURING PIXMAN...
+       @echo
+       cd $(PIXMAN_DIR) && ./configure $(BASE_CONFIG) CFLAGS="$(ARCHS) -I$(PREFIX)/include" LDFLAGS="$(ARCHS) -L$(PREFIX)/lib"
+       
+$(PIXMAN_DIR)/configure: | $(PIXMAN_DIR).tar.gz
+       @echo
+       @echo UNTARRING PIXMAN...
+       @echo
+       $(TAR) xzf $| && (cd $(PIXMAN_DIR); patch -p1 <../pixman.patch)
+       
+$(PIXMAN_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING PIXMAN...
+       @echo
+       $(CURL) --remote-name --location $(PIXMAN_URL) || rm -f $(PIXMAN_DIR).tar.gz
+
+#
+# gd
+#
+
+$(PREFIX)/lib/$(GD): $(GD_DIR)/$(GD)
+       @echo
+       @echo INSTALLING GD...
+       @echo
+       $(MAKE) -C $(GD_DIR) install
+       
+$(GD_DIR)/$(GD): $(GD_DIR)/Makefile
+       @echo
+       @echo MAKING GD...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(GD_DIR) clean; fi && \
+       $(MAKE) -C $(GD_DIR)
+       
+$(GD_DIR)/Makefile: $(PREFIX)/lib/$(FONTCONFIG) $(PREFIX)/lib/$(PNG) $(PREFIX)/lib/$(JPEG) | $(GD_DIR)/configure
+       @echo
+       @echo CONFIGURING GD...
+       @echo
+       cd $(GD_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) LIBS="-liconv -lexpat" --with-fontconfig=$(PREFIX)
+       
+$(GD_DIR)/configure: | $(GD_DIR).tar.gz
+       @echo
+       @echo UNTARRING GD...
+       @echo
+       $(TAR) xzf $|
+       
+$(GD_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING GD...
+       @echo
+       $(CURL) --remote-name --location $(GD_URL) || rm -f $(GD_DIR).tar.gz
+       
+#
+# freetype
+#
+
+$(PREFIX)/lib/$(FREETYPE): $(FREETYPE_DIR)/objs/$(FREETYPE)
+       @echo
+       @echo INSTALLING FREETYPE...
+       @echo
+       $(MAKE) -C $(FREETYPE_DIR) install
+       
+$(FREETYPE_DIR)/objs/$(FREETYPE): $(FREETYPE_DIR)/Makefile
+       @echo
+       @echo MAKING FREETYPE...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(FREETYPE_DIR) clean; fi && \
+       $(MAKE) -C $(FREETYPE_DIR)
+       
+$(FREETYPE_DIR)/Makefile: | $(PREFIX)/bin/$(PKGCONFIG) $(FREETYPE_DIR)/configure
+       @echo
+       @echo CONFIGURING FREETYPE...
+       @echo
+       cd $(FREETYPE_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+       
+$(FREETYPE_DIR)/configure: | $(FREETYPE_DIR).tar.gz
+       @echo
+       @echo UNTARRING FREETYPE...
+       @echo
+       $(TAR) xzf $|
+       
+$(FREETYPE_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING FREETYPE...
+       @echo
+       $(CURL) --remote-name --location $(FREETYPE_URL) || rm -f $(FREETYPE_DIR).tar.gz
+
+#
+# xft
+#
+
+$(PREFIX)/lib/$(XFT): $(XFT_DIR)/src/$(XFT)
+       @echo
+       @echo INSTALLING XFT...
+       @echo
+       $(MAKE) -C $(XFT_DIR) install
+       
+$(XFT_DIR)/src/$(XFT): $(XFT_DIR)/Makefile
+       @echo
+       @echo MAKING XFT...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(XFT_DIR) clean; fi && \
+       $(MAKE) -C $(XFT_DIR)
+       
+$(XFT_DIR)/Makefile: $(PREFIX)/lib/$(FONTCONFIG) | $(PREFIX)/bin/$(PKGCONFIG) $(XFT_DIR)/configure
+       @echo
+       @echo CONFIGURING XFT...
+       @echo
+       cd $(XFT_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG)
+       
+$(XFT_DIR)/configure: | $(XFT_DIR).tar.gz
+       @echo
+       @echo UNTARRING XFT...
+       @echo
+       $(TAR) xzf $|
+       
+$(XFT_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING XFT...
+       @echo
+       $(CURL) --remote-name --location $(XFT_URL) || rm -f $(XFT_DIR).tar.gz
+
+#
+# fontconfig
+#
+# patch to produce correct architecture cache files under Universal Binary builds
+# and fix undefined FcDebug symbol under dead stripping
+# make install to skip actual fonts.conf install
+
+$(PREFIX)/lib/$(FONTCONFIG): $(FONTCONFIG_DIR)/src/$(FONTCONFIG)
+       @echo
+       @echo INSTALLING FONTCONFIG...
+       @echo
+       $(MAKE) -C $(FONTCONFIG_DIR)/fontconfig install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-case install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-lang install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-glyphname install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-arch install
+       $(MAKE) -C $(FONTCONFIG_DIR)/src install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-cache install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-cat install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-list install
+       $(MAKE) -C $(FONTCONFIG_DIR)/fc-match install
+       
+$(FONTCONFIG_DIR)/src/$(FONTCONFIG): $(FONTCONFIG_DIR)/Makefile
+       @echo
+       @echo MAKING FONTCONFIG...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(FONTCONFIG_DIR) clean; fi && \
+       $(MAKE) -C $(FONTCONFIG_DIR)
+       
+$(FONTCONFIG_DIR)/Makefile: $(PREFIX)/lib/$(FREETYPE) | $(PREFIX)/bin/$(PKGCONFIG) $(FONTCONFIG_DIR)/configure
+       @echo
+       @echo CONFIGURING FONTCONFIG...
+       @echo
+       cd $(FONTCONFIG_DIR) && ./configure $(BASE_CONFIG) $(FLAG_CONFIG) --with-confdir="/usr/X11/lib/X11/fontconfig" --with-cache-dir="/usr/X11/var/cache/fontconfig" 
+       
+$(FONTCONFIG_DIR)/configure: | $(FONTCONFIG_DIR).tar.gz
+       @echo
+       @echo UNTARRING FONTCONFIG...
+       @echo
+       $(TAR) xzf $| && (cd $(FONTCONFIG_DIR); patch -p1 <../fontconfig.patch)
+       
+$(FONTCONFIG_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING FONTCONFIG...
+       @echo
+       $(CURL) --remote-name --location $(FONTCONFIG_URL) || rm -f $(FONTCONFIG_DIR).tar.gz
+
+#
+# pkgconfig
+#
+# only needed during build, don't need Universal Binary
+
+$(PREFIX)/bin/$(PKGCONFIG): $(PKGCONFIG_DIR)/$(PKGCONFIG)
+       @echo
+       @echo INSTALLING PKGCONFIG...
+       @echo
+       $(MAKE) -C $(PKGCONFIG_DIR) install
+       
+$(PKGCONFIG_DIR)/$(PKGCONFIG): $(PKGCONFIG_DIR)/Makefile
+       @echo
+       @echo MAKING PKGCONFIG...
+       @echo
+       if [[ -e $@ ]]; then $(MAKE) -C $(PKGCONFIG_DIR) clean; fi && \
+       $(MAKE) -C $(PKGCONFIG_DIR)
+       
+$(PKGCONFIG_DIR)/Makefile: | $(PKGCONFIG_DIR)/configure
+       @echo
+       @echo CONFIGURING PKGCONFIG...
+       @echo
+       cd $(PKGCONFIG_DIR) && ./configure --prefix=$(PREFIX) --disable-dependency-tracking
+       
+$(PKGCONFIG_DIR)/configure: | $(PKGCONFIG_DIR).tar.gz
+       @echo
+       @echo UNTARRING PKGCONFIG...
+       @echo
+       $(TAR) xzf $|
+       
+$(PKGCONFIG_DIR).tar.gz:
+       @echo
+       @echo TRANSFERRING PKGCONFIG...
+       @echo
+       $(CURL) --remote-name --location $(PKGCONFIG_URL) || rm -f $(PKGCONFIG_DIR).tar.gz
+
+#
+# phony
+#
+
+.PHONY: install uninstall clean distclean