Snow Leopardでdrawterm

MacBook (Core 2 duo 2GHz/Black)をTigerからSnow Leopardにしてみた。そのついでにHDD(TOSHIBA MK1234GSX)もSSD、しかもIntel X25-M G2に換装した。4万円の出費は痛かったけど、快適、快適(NetBook買えちゃう値段だよね)。参考までにXbenchの結果はMacBook AirApple SSDを上回っている。

Disk Test	209.39	
	Sequential	132.29	
		Uncached Write	135.55	83.23 MB/sec [4K blocks]
		Uncached Write	130.69	73.95 MB/sec [256K blocks]
		Uncached Read	89.46	26.18 MB/sec [4K blocks]
		Uncached Read	248.18	124.73 MB/sec [256K blocks]
	Random	501.91	
		Uncached Write	599.31	63.44 MB/sec [4K blocks]
		Uncached Write	240.31	76.93 MB/sec [256K blocks]
		Uncached Read	1851.05	13.12 MB/sec [4K blocks]
		Uncached Read	625.20	116.01 MB/sec [256K blocks]

そこで、素から環境構築しているんだけど、gccが64bitなのにkernelは32 bitだとかでうまくコンパイルできないものがちらほらと。なんでもMacBookはデフォルトでは64 bit kernelではなく32bit kernelになるそうで、uname -mとか-pしてもx86_64ではなくi386と返ってくる。

というわけで、前置きが長くなったけど、今回はSnow leopardでdrawtermを動かすという話。drawtermのOS X版は、GUIの実装としてCarbonかX11を選択できる。まずCarbon版のコンパイルに挑戦したのだが、QuickTime.frameworkのUniversal Binaryになぜか64 bitバイナリが含まれていなくて断念。なんで? そもそもCarbonじゃなくてCocoa + QTKitを使えってことか?

$ file /System/Library/Frameworks/QuickTime.framework/QuickTime 
/System/Library/Frameworks/QuickTime.framework/QuickTime: Mach-O universal binary with 2 architectures
/System/Library/Frameworks/QuickTime.framework/QuickTime (for architecture i386):Mach-O dynamically linked shared library i386
/System/Library/Frameworks/QuickTime.framework/QuickTime (for architecture ppc7400):	Mach-O dynamically linked shared library ppc

ということで、32bitでコンパイルすればOK。

$ hg diff
diff -r cc3b7765aa6a Make.osx
--- a/Make.osx	Tue Aug 25 22:50:54 2009 -0700
+++ b/Make.osx	Mon Sep 07 00:46:39 2009 +0900
@@ -1,14 +1,14 @@
 # Mac OS X
 PTHREAD=	# for Mac
 AR=ar
-AS=as
+AS=as -arch i386
 RANLIB=ranlib
 CC=gcc
-CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE $(PTHREAD) -O2
+CFLAGS=-m32 -Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE $(PTHREAD) -O2
 O=o
 OS=posix
 GUI=osx
-LDADD=-ggdb -framework Carbon -framework QuickTime
+LDADD=-arch i386 -ggdb -framework Carbon -framework QuickTime
 LDFLAGS=$(PTHREAD)
 TARG=drawterm
 AUDIO=none

一方、X11版はarchを強制的にamd64に変更すればコンパイルできた。

$ hg diff
diff -r cc3b7765aa6a Make.osx-x11
--- a/Make.osx-x11	Tue Aug 25 22:50:54 2009 -0700
+++ b/Make.osx-x11	Mon Sep 07 00:40:22 2009 +0900
@@ -17,5 +17,5 @@
 all: default
 
 libmachdep.a:
-	arch=`uname -m|sed 's/i.86/386/;s/Power Macintosh/power/'`; \
+	arch=amd64; \
 	(cd posix-$$arch &&  make)

なお、X11の3ボタンマウスエミュレーションは有効にすること。