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
以上
[[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
以上