libiconv-1.9.2.tar.gzに CP932と EUCJP-MS対応パッチ(libiconv-1.9.2-cp932.patch.gz)を当てて、Windows環境でバイナリを作る。
tar.gzの展開とパッチ当てはまぁ適当に。
Linux環境だと configureでやるであろう環境設定をパッチで済ます。*1
libiconv-1.9.2-cp932.win32.patch
内容的にはハードコートされている「ENABLE_RELOCATABLE=1」を「ENABLE_RELOCATABLE=0」に書き換えるのがメインで、気休めに最適化オプションを「O1」から「Ox」に。*2
後は VS2005のコマンドプロンプトから nmakeを実行すれば lib/iconv.libと lib/iconv.dllができあがる。
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1
マクロのの意味は以下の通り
- DLL: 1で DLL作成を指示
- MFLAGS: -MTでランタイムライブラリのタイプを「マルチスレッドスタティックリンク」に
- NO_NLS: 1で Native Language Supportを使わないように。これを指定しないと libintlやら gettextやらを見に行って面倒なことに。
2012/02/09追記
x64版も作るようにしたのでメモ。
と言っても特別なことはしていなく、以下のようなバッチを組んだだけ。
1995-1.batcall "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86 clean
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x86 install
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86_amd64
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64 clean
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64
nmake -f Makefile.msvc -D DLL=1 -D MFLAGS=-MT -D NO_NLS=1 PREFIX=x64 install
これで lib/x86と lib/x64にそれぞれ 32bit版と 64bit版のインポートライブラリと .dllができあがる。
ついでに x64/include,x86/includeに iconv.hも。
2014/09/10追記
2011年に 1.14が登場しているのに 2004年の 1.9.2を対象としているのは 1.12以降のバージョンは mingwでのビルド前提で nmakeをサポートしていないため。