Table of Contents
What is libiconv
FreeBSDなどには、汎用の文字コードの変換ライブラリとして 'iconv'というライブラリがあります。 これは、複数の文字コードセット、文字コードエンコーディング間の 変換を行なうものです。 Unicode系の文字エンコーディングのUTF-8とかUTF-16を 取り扱うには必須ともいえるものでしょう。
OS/2上で'iconv'ライブラリが必要になったので、 LGPLでリリースされている Bruno Haible氏の 'libiconv'を OS/2に移植しました (2)。 現在のバージョンでサポートされている 文字セット、エンコーディングについては こちらの表をご覧ください。
移植
移植といっても、ソース自体は何も変更はありません。 元のパッケージでは、configureで構成するものでしたが、 Windows用のMakefile、ヘッダが含まれていましたので、 それらを元に手作業でOS/2用のMakefile、ヘッダファイルを 作成しただけです。
パッケージにはテストプログラムが付属しています。 これについてもWindows用のBATファイルがありましたので、 それらを元にOS/2用のCMDファイルを作成しました。
追加したファイルは以下の通りで、 アーカイブにまとめてあります。
FILES.os2 | ファイル一覧 |
README.os2 | OS/2版の説明 |
Makefile.os2 | OS/2用のMakefiles |
src/Makefile.os2 | |
man/Makefile.os2 | |
tests/Makefile.os2 | |
include/iconv.h.os2 | pre-configured include files |
src/config.h.os2 | |
src/iconv.def.os2 | OS/2 DLL用のモジュール定義ファイル |
tests/check-stateful.cmd | OS/2用のテストスクリプト |
tests/check-stateless.cmd | |
tests/check-translit.cmd |
ビルド
提供しているMakefile.os2でmakeするには、 EMX/GCC (0.9d, fix03)とGNUユーティリティの "cp"、"rm"、"diff"、"cat"、"uniq" が必要です。 トップディレクトリから再帰makeをかけるには、Xfree86/2の x11make.exe make.cmd, indir.cmdが必要です。 個別ディレクトリでmakeするなら、通常のGNU makeだけで充分です。
最初に、 Bruno Haible氏の ところから、 'libiconv' を入手し、適当なディレクトリに展開します (2)。 そのディレクトリで上の アーカイブを展開してください。 追加ファイルだけですので、 既存のファイルを書き換えたりすることはありません。
OS/2版のライブラリを作成するには、 トップディレクトリ、またはsrcディレクトリで
make -f Makefile.os2 all
を実行します。
テストを実行する場合には、 トップディレクトリ、またはtestsディレクトリで
make -f Makefile.os2 check
を実行します。
出来上がったライブラリを(EMX環境に)インストールするには、
make -f Makefile.os2 install instroot="X:\emx"
とします。あるいは、手作業で、
- includeディレクトリで
-
cp iconv.h X:\emx\include
- srcディレクトリで
-
cp iconv.dll X:\emx\dll
cp iconv.a X:\emx\lib
cp iconv.lib X:\emx\lib
- manディレクトリで
-
cp iconv.3 iconv_close.3 iconv_open.3 X:\emx\man\man3
としてください。
DLLは、"-Zmt -Zcrtdll"で作成しています。 ですから、libiconvを使うには、メインプログラム側も "-Zmt -Zcrtdll"オプション(省略形は -Zmtd)を付けて 作成されている必要があります。 他のオプションで作成したい方は、Makefile.os2を書き換えてください。
libiconvを使ったプログラムを開発する場合には、 メインプログラム側で、"iconv.h"をインルードする必要があります。 ライブラリは、.a、.libの両方を用意していますので、 オブジェクト形式に合わせてご利用ください。
バイナリ
makeが面倒な人向けに、 作成したバイナリ もおいておきます。 ヘッダ、インポートライブラリ、DLLが含まれています。
補遺
-
ドキュメント、ソースコード上では、作者のメイルアドレスが akira@sra.co.jpとなっていますが、 退職して無効アドレスになっています。現在のアドレスは akira@p08.itscom.net ですので、連絡等はこちらにどうぞ。 ですが、現時点では手元にOS/2環境がありませんので、 修正要望等には応じることができません。悪しからず。
-
libiconvは当初は Bruno Haible氏の 独自開発でしたが、現在ではGNUに移されてGNUのライブラリとして 保守されています。OS/2移植は初期のバージョンのもので、 libiconvはその後バージョンアップを繰り返してきているため、 現在のものには対応していません。