またVimのビルドした

先日、技術書の添付ディスクないのファイルを開く際、そのファイルがsjisでして、しかもオレオレビルドVimのiconvが無効になっており、という…_:(´ཀ`」 ∠):_

加えて、どうもMac標準のgccとMacPortsとかで入れたgccだと違いがあるようだったので
改めてまとめ直すことにしました。

基本的にはMac環境ですが多分Unix系ならほとんど同じはず…

ソースとパッチをダウンロードして、パッチを当ててからmakeします
ソースはhttp://www.vim.org/sources.php
パッチはftp://ftp.vim.org/pub/vim/patches/7.3/
からダウンロードします

今回はpluginで必要だったのでPythonも有効にします
Pythonは全くわからないで、ただMacPortsから突っ込んだだけです

さて、通常のMac環境ならパッチを当ててmakeするだけでいいのですが
MacPortsでインストールしたgcc48を使ってみようと思います
正直、使ってみたかっただけなのに少し面倒だった…

環境変数はこんな感じに設定してます。
PATHの設定はむずかしい
# MacPorts
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

# For Compiler
export BOOST_ROOT=/opt/local/include/boost
export CPLUS_INCLUDE_PATH=/opt/local/include:/usr/include
export CPLUS_LIBRARY_PATH=/opt/local/lib:/usr/lib
export C_INCLUDE_PATH=/opt/local/include:/usr/include
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:/usr/lib
export LD_LIBRARY_PATH=/opt/local/lib:/usr/lib
export LIBRARY_PATH=/opt/local/lib:/usr/lib

# For make
export CC='/opt/local/bin/gcc-mp-4.8'

このままの環境設定でmakeしてみると
CC="/opt/local/bin/gcc-mp-4.8 -Iproto -DHAVE_CONFIG_H   -I/usr/local/include      " srcdir=. sh ./osdef.sh
gcc-mp-4.8: error: unrecognized command line option '-no-cpp-precomp'
  Hmm, sed is very pessimistic about your system header files.
  But it did not dump core -- strange! Let's continue carefully...
  If this fails, you may want to remove offending lines from osdef.h
  or try with an empty osdef.h file, if your compiler can do without
  function declarations.
/opt/local/bin/gcc-mp-4.8 -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -D_FORTIFY_SOURCE=1       -o objects/buffer.o buffer.c
In file included from vim.h:302:0,
                 from buffer.c:28:
auto/osdef.h:18:12: error: conflicting types for 'printf'
 extern int printf __ARGS((char *, ...));

~以下省略~
-no-cpp-precompっていうstrangeなオプションが入ってるからできんよって言われます
このオプションはAppleのコンパイラでしか使えないとかなんとか
多分、Mac標準のgccでビルドするためについてるんだと思います。

コンパイラも削除して的なことを言っているのでこのオプションを消します。
vim73/src/osdef.shの52行目、-no-cpp-precompの部分を消せば無事にmakeできました
# Mac uses precompiled headers, but we need real headers here.
case `uname` in
    Darwin) $CC -I. -I$srcdir -E -no-cpp-precomp osdef0.c >osdef0.cc;;
    *)  $CC -I. -I$srcdir -E osdef0.c >osdef0.cc;;
esac

以下、全体のビルドの手順
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 
tar -jxvf vim-7.3.tar.bz2

cd vim73

mkdir patches
cd patches
curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-最新パッチ番号]'

cd ..
cat patches/7.3.* | patch -p0 

cd src

./configure --prefix=インストールしたいディレクトリ \
--disable-darwin \
--disable-gpm \
--disable-gtktest \
--disable-gui \
--disable-netbeans \
--disable-selinux \
--disable-sysmouse \
--disable-xsmp \
--disable-xsmp-interact \
--enable-gui=no \
--enable-multibyte \
--enable-python3interp \
--enable-pythoninterp \
--with-compiledby="もぷり" \
--with-features=huge \
--with-python-config-dir=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config \
--with-python3-config-dir=/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config-3.3m \
--without-x

make
make test

make install

ざっと書くとこんな感じになります。
インストール場所や最新のパッチ番号など適宜変更してください

Vimで:versionを実行して確認

:version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Dec 22 2012 07:11:11)
Included patches: 1-762
Compiled by もぷり
Huge version without GUI.  Features included (+) or not (-):
+arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent -clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope +cursorbind
+cursorshape +dialog_con +diff +digraphs -dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +fork() +gettext -hangul_input +iconv
 +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm
+mouse_netterm +mouse_sgr -mouse_sysmouse +mouse_urxvt +mouse_xterm +multi_byte +multi_lang -mzscheme -netbeans_intg +path_extra -perl +persistent_undo +postscript +printer +profile
+python/dyn +python3/dyn +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white
-tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11
-xfontset -xim -xsmp -xterm_clipboard -xterm_save
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/Users/mopp/.libmopp/share/vim"
Compilation: /opt/local/bin/gcc-mp-4.8 -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /opt/local/bin/gcc-mp-4.8   -L/usr/local/lib -o vim       -lm -lncurses  -liconv -lintl

大丈夫のようです

あ、ついてにですがgithubでvimrcを管理しはじめました
https://github.com/mopp/vimrc.git

コメント

このブログの人気の投稿

カーソルキーさん@つかわない インサートモード編

Android で MIME Type 判別

Erlang & Elixir Fest 2019 に参加してきた