Information on building 3rd-party libraries needed for Mac OS X GRacket. Get these packages (or newer, if compatible): pkg-config-0.25.tar.gz [PowerPC: pkg-config-0.23.tar.gz] libpng-1.5.7.tar.gz pixman-0.24.2.tar.gz [PowerPC: pixman-0.21.6.tar.gz] cairo-1.10.2.tar.gz gettext-0.18.1.1.tar.gz [PowerPC: gettext-0.17.tar.gz] libffi-3.0.10.tar.gz [PowerPC: skip] glib-2.31.14.tar.gz [PowerPC: glib-2.22.4.tar.gz] pango-1.29.5.tar.gz [PowerPC: pango-1.28.0.tar.gz] gmp-5.0.5.tar.gz mpfr-3.1.1.tar.gz libjpeg62 (maybe in binary form) PSMTabBarControl, probably from https://github.com/dorianj/PSMTabBarControl [PowerPC: maccode.googlecode.com] and handled differently; note that the version at from maccode has a bug on dealloc() and uses methods that are now deprecated Patches: cairo/src/cairo-path-fixed.c:1295: [from Cairo repo, 3/18/11] /* This check is valid because the current implementation of * _cairo_path_fixed_is_box () only accepts rectangles like: * move,line,line,line[,line|close[,close|move]]. */ buf = cairo_path_head (path); if (buf->num_ops > 4) return TRUE; glib/glib/gconvert.c:61: comment out #error near #if defined(USE_LIBICONV_GNU) && !defined (_LIBICONV_H) pango/pango/modules.c:573: change to // read_modules (); pango/modules/basic/basic-atsui.c, pango/pangocairo-atsuifont.c, pango/pangoatsui.h, pango/pangoatsui.c: apply "atsui.patch" (32-bit only) pango/modules/basic/basic-coretext.c, pango/pangocairo-coretextfont.c: apply "coretext.patch" (64-bit only) gettext/gettext-tools/gnulib-lib/stpncpy.c:28: may need to comment out // # define __stpncpy stpncpy PowerPC: PSMTabBarControl/PSMTabBarControl.m:216: change to // copy _cells because removing a cell // can modify the array (which is not allowed) NSArray *copyOfCells = [NSArray arrayWithArray: _cells]; NSEnumerator *enumerator = [copyOfCells objectEnumerator]; gcc-4.0: gmp/gmp.h:424: __gnu_inline__ => __weak__ Configures (where is some temporary area): pkg-config: --prefix= libpng: --prefix= pixman: --prefix= Cairo: PATH=/bin:... --disable-xlib --disable-ft --disable-fc --prefix= gettext: --prefix= libffi: --prefix= glib: PATH=/bin:... CFLAGS=-I/include LDFLAGS=-L/lib --prefix= [PowerPC: after configure, set "allow_undefined_flag" to "" in "libtool"; add "-lresolv" to link command for "libgio"] Pango: PATH=/bin:... --without-x --with-included-modules=yes --with-dynamic-modules=no --prefix= [PowerPC: same as glib for "libtool"; use PATH for `make', too] gmp: --prefix= mpfr: CFLAGS=-I/include LDFLAGS=-L/lib --prefix= To support 10.4, add CC=gcc-4.0 CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" for all packages. Note: PATH above ensures that pkg-config binaries are used to find things in rather than some other area, such as /opt/local. Be sure to use two-level namespaces for all libraries. While two-level namespaces are the default on Mac OS X, some packages turn on flat namespaces, at least on PowerPC. Use `otol -vh' and look for "TWOLEVEL" in the output to check that a library uses two-level namespaces. XCode: Build PSMTabBarControl. You only need the Framework target, and in Release mode (which is "Build for Archiving" in Xcode 4.5). Use `ditto' to reduce the framework to one architecture. Install: racket install-libs.rkt /lib * using `racket' for the target installation * do not include a trailing slash * double-check installed libraries to ensure that they do not have in their shared-library paths Also copy "PSMTabBarControl.framework" into the installation's "lib" directory. You can flatten all the auto-version soft links (moving "PSMTabBarControl" and "Resources" to immediately inside "PSMTabBarControl), and you can use `ditto' to prune the binary to just the platform that you're using. -------------------------------------------------- # This script isn't right, because the versions are out of date # and libffi isn't included, but maybe it clarifies some of # the instructions above DESTDIR= WORKDIR= ARCHDIR= cd "$WORKDIR" tar zxf "$ARCHDIR"pkg-config-0.23.tar.gz tar zxf "$ARCHDIR"libpng-1.4.0.tar.gz tar zxf "$ARCHDIR"pixman-0.21.6.tar.gz tar zxf "$ARCHDIR"cairo-1.10.2.tar.gz tar zxf "$ARCHDIR"gettext-0.17.tar.gz tar zxf "$ARCHDIR"glib-2.22.4.tar.gz tar zxf "$ARCHDIR"pango-1.28.0.tar.gz cd pkg-config-0.23/ ./configure --prefix="$DESTDIR" make make install cd ../libpng-1.4.0/ ./configure --prefix="$DESTDIR" make make install cd .. cd pixman-0.21.6/ ./configure --prefix="$DESTDIR" make make install cd ../cairo-1.10.2/ env PATH="$DESTDIR"/bin:"$PATH" ./configure --disable-xlib --disable-ft --disable-fc --prefix="$DESTDIR" make make install cd ../gettext-0.17/ ./configure --prefix="$DESTDIR" make make install cd ../glib cd ../glib-2.22.4/ env PATH="$DESTDIR"/bin:"$PATH" CFLAGS=-I"$DESTDIR"/include LDFLAGS=-L"$DESTDIR"/lib ./configure --prefix="$DESTDIR" make make install cd ../pango-1.28.0/ env PATH="$DESTDIR"/bin:"$PATH" ./configure --without-x --with-included-modules=yes --with-dynamic-modules=no --prefix="$DESTDIR" make make install