MacPorts と Universal Binary

Universal Binary をビルドしたい場合、ライブラリも Universal Binary でないといけない、……らしい*1。なので、MacPorts でインストールするライブラリも Universal Binary のやつにしたい。
まず分かったのは、「univeral」バリアントを入れればいいということ。で、sudo port install のたびに +universal を付けるのは面倒なので /opt/local/etc/macports/variants.conf にこう書いておく、というのも分かった:

+universal

ところが、これだけだと、"-arch ppc -arch i386" な*2 Universal Binary になってしまう。どうせなら*3、"-arch ppc -arch i386 -arch ppc64 -arch x86_64" な Universal Binary にしたい。
『MacPorts Guide』には、macports.conf の「universal_archs」で「ppc i386 ppc64 x86_64」を指定しなさい、みたく書いてあるが、やってみたところ効果なし。どうやら割と最近入った機能らしく1.6.0 にはまだ入っていないっぽい
途方に暮れて*4grep -FR -- '-arch' /opt/local」としたところ、/opt/local/share/macports/Tcl/port1.0/portconfigure.tcl なるものを発見。で、恐る恐る修正:

--- portconfigure.tcl.bak
+++ portconfigure.tcl
@@ -87,10 +87,10 @@
 }
 options configure.universal_args        configure.universal_cflags configure.universal_cppflags configure.universal_cxxflags configure.universal_ldflags configure.universal_env
 default configure.universal_args        --disable-dependency-tracking
-default configure.universal_cflags      {"-isysroot $sysroot -arch i386 -arch ppc"}
+default configure.universal_cflags      {"-isysroot $sysroot -arch i386 -arch ppc -arch x86_64 -arch ppc64"}
 default configure.universal_cppflags    {}
-default configure.universal_cxxflags    {"-isysroot $sysroot -arch i386 -arch ppc"}
-default configure.universal_ldflags     {"-arch i386 -arch ppc"}
+default configure.universal_cxxflags    {"-isysroot $sysroot -arch i386 -arch ppc -arch x86_64 -arch ppc64"}
+default configure.universal_ldflags     {"-arch i386 -arch ppc -arch x86_64 -arch ppc64"}

 # Select a distinct compiler (C, C preprocessor, C++)
 options configure.ccache configure.distcc configure.cc configure.cxx configure.cpp configure.objc configure.f77 configure.f90 configure.fc configure.javac configure.compiler

こんなんでいいのかなぁ、と自分でも疑問に思いつつ、どうやら問題ない様子。

*1:Mac には日が浅いので自信がない。

*2:なんて呼ぶのがいいんだろう?

*3:貧乏性か?

*4:ムシャクシャしてやった。今は反省している