In preparation for a pending semi-major release of unpkg, I needed to compile some source for other architectures and older versions of Mac OS X on my Snow Leopard MacBook Pro. After quite some time DuckDuckGoing and wrestling with gcc, I came across these combinations of environment variables that seem to do the trick. (The following, of course, require the appropriate 10.4 and 10.5 SDKs to be installed in /Developer/SDKs.)
10.4 and PowerPC
CC="gcc-4.0 -arch ppc" \ CXX="g++-4.0 -arch ppc" \ CFLAGS="-mmacosx-version-min=10.4" \ CPPFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -nostdinc \ -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \ -I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/include \ -isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include" \ LDFLAGS="-arch ppc -mmacosx-version-min=10.4 \ -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib \ -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \ -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ ./configure --build=`uname -p`-apple-darwin --host=powerpc-apple-darwin10.4 and i386
CC="gcc-4.0 -arch i386" \ CXX="g++-4.0 -arch i386" \ CFLAGS="-mmacosx-version-min=10.4" \ CPPFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -nostdinc \ -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \ -I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/include \ -isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include" \ LDFLAGS="-arch i386 -mmacosx-version-min=10.4 \ -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib \ -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \ -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" \ ./configure10.5 and x86_64 -- the 10.4 gcc-4.0 can't compile for x86_64, so we have to use 10.5 instead.
CC="gcc-4.2 -arch x86_64" \ CXX="g++-4.2 -arch x86_64" \ CFLAGS="-mmacosx-version-min=10.5" \ CPPFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -nostdinc \ -F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \ -I/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin10/4.2.1/include \ -isystem /Developer/SDKs/MacOSX10.5.sdk/usr/include" \ LDFLAGS="-arch x86_64 -mmacosx-version-min=10.5 \ -L/Developer/SDKs/MacOSX10.5.sdk/usr/lib \ -F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks \ -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk" \ ./configureThen combine the binaries, like so: lipo foo-i386 foo-ppc foo-x86_64 -output foo-fat -create.