Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

The Backyard - IconvForWoe32 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!libiconv-1.11.1

[[libiconv|http://www.gnu.org/software/libiconv/]]の最新版(1.11.1)はそのままの状態ではVC++6ではコンパイルエラーとなる。

以下でビルド後のバイナリおよびビルドに必要な手順を示す。

!!Visual C++ 6でビルドしたlibiconv 1.11.1

http://arton.no-ip.info/data/libiconv-1.11.1-bin.zip

*DLLに埋め込まれたバージョン番号が1.11.0.0となっているのは元のリソースがそうなっているからで、利用したソースアーカイブ自体は1.11.1を利用している。

!!ビルドのために必要な修正

MSVC用config.hにEXEEXTを設定する。EXEEXTはsrclib(missing)のビルド時に参照されるが、トップレベルでのnmaakeへの引数はsrclibのビルド時には伝播されないため、直接定義する。

diff -u config.h.msvc.org config.h.msvc
--- config.h.msvc.org Thu Jul 20 04:10:22 2006
+++ config.h.msvc Sun Dec 31 12:57:36 2006
@@ -715,3 +715,4 @@
  # define DLL_VARIABLE
  #endif
  
+#define EXEEXT "exe"

srclibの修正

cd srclib

width.cをコンパイル対象に追加

diff -u Makefile.msvc.org Makefile.msvc
--- Makefile.msvc.org Sat Jan 24 18:11:24 2004
+++ Makefile.msvc Sun Dec 31 03:26:20 2006
@@ -90,7 +90,8 @@
    xmalloc.obj xstrdup.obj \
    \
    relocatable.obj \
-  setenv.obj unsetenv.obj
+  setenv.obj unsetenv.obj \
+  width.obj

  all : icrt.lib

@@ -120,6 +121,9 @@

  unsetenv.obj : unsetenv.c
$(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c
+
+width.obj : width.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c width.c
  
  icrt.lib : $(OBJECTS)
   -$(RM) icrt.lib

stdint.hが存在しないので、unitypes.hを修正して直接定義する。

diff -u unitypes.h.org unitypes.h
--- unitypes.h.org Fri May 20 01:58:24 2005
+++ unitypes.h Sun Dec 31 03:10:10 2006
@@ -20,7 +20,10 @@
  #define _UNITYPES_H
  
  /* Get uint8_t, uint16_t, uint32_t.  */
-#include <stdint.h>
+/* #include <stdint.h> */
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
  
  /* Type representing a Unicode character.  */
  typedef uint32_t ucs4_t;

unsetenv.cがunistd.hをincludeしないように修正する。

diff -u unsetenv.c.org unsetenv.c
--- unsetenv.c.org Sun Jun 18 00:51:52 2006
+++ unsetenv.c Sun Dec 31 03:03:49 2006
@@ -27,7 +27,9 @@

  #include <stdlib.h>
  #include <string.h>
+#if HAVE_UNISTD_H
  #include <unistd.h>
+#endif

  #if !_LIBC
  # define __environ environ

上記修正後、トップレベルディレクトリに戻り、nmakeを実行する。コマンドラインで指定が次第な定義はNO_NLS。以下ではDLLを生成するための指定を示す。

nmake -f Makefile.msvc DLL=1 MFLAGS=-MD NO_NLS=1

以上