Clone in a terminal:
build_mac.py
#!/usr/bin/python

import os
import shutil
import subprocess
import sys


LOCAL_LIBS = [
	"libxml2.2",
	"libgio-2.0.0",
	"libgobject-2.0.0",
	"libglib-2.0.0",
	"libintl.8",
	"libcairo.2",
	"libgdk_pixbuf-2.0.0",
	"libwebkitgtk-1.0.0",
	"libgtk-x11-2.0.0",
	"libsoup-2.4.1",
	"libjavascriptcoregtk-1.0.0",
	"libgdk-x11-2.0.0",
	"libatk-1.0.0",
	"libpangocairo-1.0.0",
	"libXrender.1",
	"libXinerama.1",
	"libXi.6",
	"libXrandr.2",
	"libXcursor.1",
	"libXcomposite.1",
	"libXdamage.1",
	"libpangoft2-1.0.0",
	"libXfixes.3",
	"libX11.6",
	"libXext.6",
	"libpango-1.0.0",
	"libfreetype.6",
	"libfontconfig.1",
	"liblzma.5",
	"libGL.1", # GL
	"libICE.6",
	"libSM.6",
	"libX11-xcb.1",
	"libX11.6",
	"libXau.6",
	"libXcomposite.1",
	"libXcursor.1",
	"libXdamage.1",
	"libXdmcp.6",
	"libXext.6",
	"libXfixes.3",
	"libXi.6",
	"libXinerama.1",
	"libXrandr.2",
	"libXrender.1",
	"libXt.6",
	"libatk-1.0.0",
	"libbz2.1.0",
	"libcairo.2",
	"libdbus-1.3",
	"libdbus-glib-1.2",
	"libenchant.1",
	"libexpat.1",
	"libffi.6",
	"libfontconfig.1",
	"libfreetype.6",
	"libgailutil.18",
	"libgdk-x11-2.0.0",
	"libgdk_pixbuf-2.0.0",
	"libgeoclue.0",
	"libgio-2.0.0",
	"libglib-2.0.0",
	"libgmodule-2.0.0",
	"libgobject-2.0.0",
	"libgstapp-0.10.0",
	"libgstaudio-0.10.0",
	"libgstbase-0.10.0",
	"libgstfft-0.10.0",
	"libgstinterfaces-0.10.0",
	"libgstpbutils-0.10.0",
	"libgstreamer-0.10.0",
	"libgstvideo-0.10.0",
	"libgthread-2.0.0",
	"libgtk-x11-2.0.0",
	"libiconv.2",
	"libicudata.49",
	"libicui18n.49",
	"libicuuc.49",
	"libintl.8",
	"libjavascriptcoregtk-1.0.0",
	"libjpeg.8",
	"liblzma.5",
	"liborc-0.4.0",
	"libpango-1.0.0",
	"libpangocairo-1.0.0",
	"libpangoft2-1.0.0",
	"libpixman-1.0",
	"libpng15.15",
	"libsoup-2.4.1",
	"libsqlite3.0",
	"libwebkitgtk-1.0.0",
	"libxcb-render.0",
	"libxcb-shm.0",
	"libxcb.1",
	"libxml2.2",
	"libxslt.1",
	"libz.1"
]

def run(cmd):
	process = subprocess.Popen (cmd, shell=True)
	process.communicate()[0]
	if not process.returncode == 0:
		print("Error: " + cmd)
		exit(1)
		
def build():
	# Compile birdfont on MacOSX 10.5 (Leopard)
	
	#libbirdfont
	run("rm -rf build/mac/*")
	run("mkdir -p build/mac/libbirdfont")
	run("mkdir -p build/mac/bin")

	run("valac -C --basedir build/mac/libbirdfont/ --enable-experimental-non-null --enable-experimental --define=MAC --library libbirdfont -H build/mac/libbirdfont/birdfont.h libbirdfont/* --pkg libxml-2.0 --pkg gio-2.0  --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0")
	run("cp libbirdfont/*.c build/mac/libbirdfont/")

	run("""gcc -c build/mac/libbirdfont/*.c -shared -fno-common -fPIC -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -I ./build/mac/birdfont""")
	run("mv ./*.o build/mac/libbirdfont/ ")

	run("gcc -dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,1.0,-current_version,1.0,-install_name,/usr/local/lib/libbirdfont.dylib -shared build/mac/libbirdfont/*.o $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -shared -o libbirdfont.dylib")
	run("mv libbirdfont.dylib build/mac/bin/")

	# birdfont
	run("mkdir -p build/mac/birdfont")
	
	run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0  --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")
	run("mv birdfont/*.c build/mac/birdfont/")

	run("""gcc -c ./build/mac/libbirdfont/birdfont.h build/mac/birdfont/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/mac/libbirdfont/""")
	run("mv ./*.o build/mac/birdfont/")

	run("gcc build/mac/birdfont/*.o ./build/mac/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/mac/bin/birdfont")

	# birdfont-export
	run("mkdir -p build/mac/birdfont-export")
	
	run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont-export/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0  --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")
	run("mv birdfont-export/*.c build/mac/birdfont-export/")

	run("""gcc -c ./build/mac/libbirdfont/birdfont.h build/mac/birdfont-export/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/mac/libbirdfont/""")
	run("mv ./*.o build/mac/birdfont-export/")

	run("gcc build/mac/birdfont-export/*.o ./build/mac/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/mac/bin/birdfont-export")

def copy_libs ():
	# clean
	run("rm -rf build/mac/birdfont.app")
	
	# copy files 
	run("mkdir -p build/mac/birdfont.app")
	run("mkdir -p build/mac/birdfont.app/Contents")
	run("mkdir -p build/mac/birdfont.app/Contents/MacOs")
	run("mkdir -p build/mac/birdfont.app/Contents/Resources")

	run("cp build/mac/bin/* build/mac/birdfont.app/Contents/MacOs")
	run("cp mac/birdfont.sh build/mac/birdfont.app/Contents/MacOs")
	run("cp mac/Info.plist build/mac/birdfont.app/Contents/")
	run("cp -r layout build/mac/birdfont.app/Contents/MacOs")
	run("cp -r icons build/mac/birdfont.app/Contents/MacOs")
	run("cp mac/birdfont.icns build/mac/birdfont.app/Contents/Resources")
	
	for lib in LOCAL_LIBS:
		run("cp /opt/local/lib/" + lib + ".dylib mac/Info.plist build/mac/birdfont.app/Contents/MacOs")
			
	run("cp /usr/lib/libgcc_s.1.dylib ./build/mac/birdfont.app/Contents/MacOs")

	# library path for libbirdfont	
	for program in ['libbirdfont.dylib', 'birdfont', 'birdfont-export']:
		for lib in LOCAL_LIBS:
			run("install_name_tool -change /opt/local/lib/" + lib + ".dylib @executable_path/" + lib 
				+ ".dylib build/mac/birdfont.app/Contents/MacOs/" + program)
	
	for program in LOCAL_LIBS:
		for lib in LOCAL_LIBS:
			run("install_name_tool -change /opt/local/lib/" + lib + ".dylib @executable_path/" + lib 
				+ ".dylib build/mac/birdfont.app/Contents/MacOs/" + program + ".dylib")
				
	run("install_name_tool -change /usr/lib/libgcc_s.1.dylib @executable_path/libgcc_s.1.dylib "
		+ "build/mac/birdfont.app/Contents/MacOs/libbirdfont.dylib")

	run("install_name_tool -change /usr/local/lib/libbirdfont.dylib @executable_path/libbirdfont.dylib "
		+ "build/mac/birdfont.app/Contents/MacOs/libbirdfont.dylib")	

	# library path for birdfont	
	for lib in LOCAL_LIBS:
		run("install_name_tool -change /opt/local/lib/" + lib + ".dylib @executable_path/" + lib 
			+ ".dylib build/mac/birdfont.app/Contents/MacOs/birdfont")
		
	run("install_name_tool -change /usr/lib/libgcc_s.1.dylib @executable_path/libgcc_s.1.dylib "
		+ "build/mac/birdfont.app/Contents/MacOs/birdfont")

	run("install_name_tool -change /usr/local/lib/libbirdfont.dylib @executable_path/libbirdfont.dylib "
		+ "build/mac/birdfont.app/Contents/MacOs/birdfont")	

	run("install_name_tool -change /usr/local/lib/libbirdfont.dylib @executable_path/libbirdfont.dylib "
		+ "build/mac/birdfont.app/Contents/MacOs/birdfont-export")

	# pango
	run("cp /opt/local/lib/pango/1.6.0/modules/pango-* ./build/mac/birdfont.app/Contents/MacOs")
	
	# configuration
	run("cp -r /opt/local/etc build/mac/birdfont.app/Contents/MacOs/")

	run("pango-querymodules | sed -e 's:/opt/local/lib/pango/1.6.0/modules/::g'> etc/pango/pango.modules")
)

	print ("Done.")


build()
copy_libs ()

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112