Snow Leopardでdrawterm
MacBook (Core 2 duo 2GHz/Black)をTigerからSnow Leopardにしてみた。そのついでにHDD(TOSHIBA MK1234GSX)もSSD、しかもIntel X25-M G2に換装した。4万円の出費は痛かったけど、快適、快適(NetBook買えちゃう値段だよね)。参考までにXbenchの結果はMacBook AirのApple 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ボタンマウスエミュレーションは有効にすること。