MacPorts 版を使ってるけどセルフビルドを試してみたかったので。
MacPorts のポートファイルを見てみたら makefile.machine
を変更することでカスタマイズできそう。makefile.macosx_64bits
を makefile.machine
にコピーして OPTFLAGS=-O
を OPTFLAGS=-O3 -mtune=native
にすることにする。
OPTFLAGS=-O # don't use -DNDEBUG in order to use MacOSX wxWidgets ALLFLAGS=-m64 ${OPTFLAGS} \ -DENV_MACOSX \ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ -D_REENTRANT -DENV_UNIX \ $(LOCAL_FLAGS) CXX=c++ $(ALLFLAGS) CC=cc $(ALLFLAGS) LINK_SHARED=-bundle LOCAL_LIBS=-framework CoreFoundation LOCAL_LIBS_DLL=$(LOCAL_LIBS) OBJ_CRC32=$(OBJ_CRC32_C)
ソースのダウンロードからインストールまでの作業をスクリプトにしておく。/tmp
内のファイルは再起動すれば勝手に消えるのでソースは放置。Automator でインストーラーにしておいた方が楽かな。
#!/bin/bash distname="p7zip_9.20.1" distfile="${distname}_src_all.tar.bz2" cd /tmp rm -rf $distname $distfile curl -LO "http://downloads.sourceforge.net/project/p7zip/p7zip/9.20.1/$distfile" tar jxf $distfile cd $distname sed "2s|.*|OPTFLAGS=-O3 -mtune=native|" makefile.macosx_64bits > makefile.machine make -j4 all3 make install
uninstall
ターゲットが無いようなのでアンインストールは手動?インストールログからアンインストール用に削除対象ファイルを書き出しておく。
rm -rf /usr/local/bin/7z \ /usr/local/bin/7za \ /usr/local/bin/7zr \ /usr/local/lib/p7zip \ /usr/local/man/man1/7z.1 \ /usr/local/man/man1/7za.1 \ /usr/local/man/man1/7zr.1 \ /usr/local/share/doc/p7zip
p7zip のソースで MacPorts 版と圧縮速度を比較してみたけど1秒くらいしか変わらないから最適化の効果はあまり無いかも。
7z は結構好きなんだけどあまり普及していないのが残念。