cygwin で doxygen-1.5.2 をコンパイルしてインストールするよのまとめ
id:CCG さんより トラックバック を受けて、以前書いたエントリ をまとめなおしてパッチにしました!
結論
下のパッチを当てると ./configure && make && make install でインストールを完了できます!
パッチ
doxygen-1.5.2_cygwin.patch とかでファイルとして保存して使ってください!
diff -uNr doxygen-1.5.2/configure doxygen-1.5.2.new/configure
--- doxygen-1.5.2/configure 2007-04-04 03:45:31.000000000 +0900
+++ doxygen-1.5.2.new/configure 2007-05-31 02:11:16.861358700 +0900
@@ -214,10 +214,7 @@
UNIX_SV:4.2*)
f_platform=unixware-g++
;;
- Cygwin:*)
- f_platform=win32-g++
- ;;
- CYGWIN:*)
+ Cygwin*|CYGWIN*)
f_platform=win32-g++
;;
*MiNT:*)
diff -uNr doxygen-1.5.2/src/doxygen.pro.in doxygen-1.5.2.new/src/doxygen.pro.in
--- doxygen-1.5.2/src/doxygen.pro.in 2007-02-21 03:27:35.000000000 +0900
+++ doxygen-1.5.2.new/src/doxygen.pro.in 2007-05-31 01:51:43.810462200 +0900
@@ -26,7 +26,7 @@
win32-borland:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL
-win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
+win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5 -liconv
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools ../libpng ../libmd5 .
#win32-g++:INCLUDEPATH -= ../libpng
diff -uNr doxygen-1.5.2/src/portable.cpp doxygen-1.5.2.new/src/portable.cpp
--- doxygen-1.5.2/src/portable.cpp 2007-03-14 01:58:17.000000000 +0900
+++ doxygen-1.5.2.new/src/portable.cpp 2007-05-31 01:58:38.140388700 +0900
@@ -373,7 +373,7 @@
size_t portable_iconv (void *cd, const char** inbuf, size_t *inbytesleft,
char** outbuf, size_t *outbytesleft)
{
-#if (defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION==0x0109))
+#if (defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION>=0x0109))
#define CASTNEEDED(x) (x)
#else
#define CASTNEEDED(x) (char **)(x)
パッチの当て方
以下のリンクから doxygen のソース tar をダウンロードします。 http://ftp.stack.nl/pub/users/dimitri/doxygen-1.5.2.src.tar.gz
tar と patch ファイルを同じディレクトリにおきます。
$ ls -lF
-rwxr-xr-x 1 yagita None 3599976 Apr 28 22:31 doxygen-1.5.2.src.tar.gz*
-rw-r--r-- 1 yagita None 1790 May 31 02:15 doxygen-1.5.2_cygwin.patch
doxygen-1.5.2.src.tar.gz を展開します。
$ tar zxf doxygen-1.5.2.src.tar.gz
パッチをあてます。
$ patch -p0 < doxygen-1.5.2_cygwin.patch
patching file doxygen-1.5.2/configure
patching file doxygen-1.5.2/src/doxygen.pro.in
patching file doxygen-1.5.2/src/portable.cpp
コンパイル & インストールします。
$ cd doxygen-1.5.2
$ ./configure && make && make install
やったことまとめ
こんな風にやりましたが、もっといい方法があったら情報ください!
configure win32-g++ ってするのがめんどくさー
どうやら uname -s の結果を使って cygwin だったら〜を判定しようとしてる風だったので configure をパッチのように修正しました。
libiconv をリンク対象として追加
以前のエントリ を書いてるときには気づいてなかったのですが、doxygen.exe をコンパイルする Makefile である、Makefile.doxygen ファイルの生成元である doxygen.pro.in ファイルがあり、そちらで -liconv を追加するようにしました。これは CCG さんのエントリで気づきました。サンクス!
portable.cpp のコンパイルエラー回避
cygwin 環境で /usr/include/iconv.h をみると以下のように定義されていたのと、iconv() の第二引数は const char ** だったのでパッチのように修正しました。
#define _LIBICONV_VERSION 0x010B /* version number: (major<<8) + minor */