Gauche:WishListから移動。
YOKOTA Hiroshi(2007/11/25 13:32:03 PST): 現在の MinGW バイナリは構築時に Cygwin も必要とするなど準備が面倒なのでUnix上にクロスコンパイラを用意してそちらで構築するようにしてみました。
以下のパッチを当てて
$ ./configure --build=i686-pc-linux-gnu --host=i686-pc-mingw32msvc --prefix=/target/Gauche
等とするとクロスコンパイルでバイナリを作成します。 このパッチはなるべく汎用に書いたつもりなので他のクロスコンパイルにも使えると思います。構築にはあらかじめ構築する環境で動作するGaucheがインストールされている必要があります。
このパッチには
が含まれます。
なお、この修正では gauche-config や gauche-package にはあまり変更を加えていないので外部モジュールのクロスコンパイルはまだできません。外部モジュールのクロスコンパイルにはこれらのスクリプトをクロスコンパイル対応に書きなおす必要があります。また、記述を簡単にするためにGNU make依存の構文を使用しています。必要ならこれも修正する必要があります。
注意:現在のmingw32-runtime-3.13のsnprintf()にはバグがあり、long int変数の表示がおかしくなります。以下のパッチを当てて再構築して下さい。
--- mingw-runtime-3.13-20070825-1/mingwex/gdtoa/mingw_snprintf.c.orig 2007-08-24 19:57:04.000000000 +0900
+++ mingw-runtime-3.13-20070825-1/mingwex/gdtoa/mingw_snprintf.c 2007-11-13 20:48:53.000000000 +0900
@@ -465,7 +465,7 @@
len = LEN_LL;
}
else
- len = LEN_LL;
+ len = LEN_L;
goto fmtloop;
case 'L':
flag_ld++;
以下が本体のパッチです。
diff -ruN -x configure -x config.scm Gauche-0.8.12/acinclude.m4 Gauche-0.8.12-cross/acinclude.m4
--- Gauche-0.8.12/acinclude.m4 1970-01-01 09:00:00.000000000 +0900
+++ Gauche-0.8.12-cross/acinclude.m4 2007-11-06 15:19:21.000000000 +0900
@@ -0,0 +1,9 @@
+dnl -*- mode: autoconf -*-
+dnl Autoconf user macros.
+dnl This file may includes by "aclocal.m4".
+
+dnl Gauche custom macros
+m4_include([m4/gauche.m4])
+m4_include([m4/type_socklen_t.m4])
+
+dnl
diff -ruN -x configure -x config.scm Gauche-0.8.12/aclocal.m4 Gauche-0.8.12-cross/aclocal.m4
--- Gauche-0.8.12/aclocal.m4 2005-09-04 20:02:28.000000000 +0900
+++ Gauche-0.8.12-cross/aclocal.m4 2007-11-03 17:03:26.000000000 +0900
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc.
@@ -11,5 +11,4 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-m4_include([m4/gauche.m4])
-m4_include([m4/type_socklen_t.m4])
+m4_include([acinclude.m4])
diff -ruN -x configure -x config.scm Gauche-0.8.12/configure.ac Gauche-0.8.12-cross/configure.ac
--- Gauche-0.8.12/configure.ac 2007-10-30 08:00:26.000000000 +0900
+++ Gauche-0.8.12-cross/configure.ac 2007-12-03 07:48:40.000000000 +0900
@@ -142,7 +142,7 @@
dnl with gc's configure.in.
case $GAUCHE_THREAD_TYPE in
pthreads|default)
- case "$target" in
+ case "$host" in
*-*-linux*)
AC_DEFINE(GC_LINUX_THREADS,1,[Define to use Linux threads])
AC_DEFINE(_REENTRANT,1,[Define to use reentrant libc])
@@ -198,7 +198,7 @@
;;
*)
if test $GAUCHE_THREAD_TYPE = "pthreads"; then
- AC_MSG_ERROR([pthread is not supported on $target])
+ AC_MSG_ERROR([pthread is not supported on $host])
else
GAUCHE_THREAD_TYPE=none
fi
@@ -247,6 +247,9 @@
AC_CHECK_PROGS(MAKEINFO, makeinfo)
AC_CHECK_PROGS(GZIP_PROGRAM, gzip)
+dnl for cross build
+AC_CHECK_PROGS(BUILD_CC, ${build}-gcc ${build_alias}-gcc gcc cc)
+
dnl Safe default CFLAGS (usually -g -O2 if you're using gcc, empty otherwise).
dnl If the user overrides CFLAGS during configure, which is recorded.
dnl This information is used when configuring extensions.
@@ -260,7 +263,7 @@
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS(sys/time.h sys/types.h glob.h dlfcn.h getopt.h sched.h unistd.h)
-AC_CHECK_HEADERS(stdint.h inttypes.h rpc/types.h)
+AC_CHECK_HEADERS(stdint.h inttypes.h rpc/types.h malloc.h)
AC_CHECK_HEADERS(syslog.h crypt.h)
AC_CHECK_HEADERS(pty.h util.h libutil.h sys/loadavg.h)
@@ -269,7 +272,7 @@
dnl ===========================================================
dnl Checks processor type, for processor-specific stuff
-case $target in
+case $host in
i?86-*)
AC_DEFINE(SCM_TARGET_I386,1,[Define if uses i386 optimizations]) ;;
alpha*)
@@ -326,7 +329,7 @@
AC_CHECK_LIB(sunmath, isinf)
dnl For Windows/MinGW, manually adds several libraries
-case "$target" in
+case "$host" in
*mingw*) LIBS="$LIBS -lnetapi32 -lshlwapi";;
*) ;;
esac
@@ -343,7 +346,7 @@
dnl Check for select(). HP-UX doesn't like the way configure tests
dnl select() existence, so we skip the test on it.
-case "$target" in
+case "$host" in
*-hpux*)
AC_DEFINE(HAVE_SELECT, 1, [Define if you have select]) ;;
*)
@@ -353,7 +356,7 @@
dnl Checks for pty-related fns. It appears that recent Cygwin has them,
dnl but only in a static library. That prevents us from creating DLL
dnl version of gauche. Thus we explictly exclude them on cygwin.
-case "$target" in
+case "$host" in
*cygwin*)
: ;;
*)
@@ -366,7 +369,7 @@
dnl Note: on cygwin, libcrypt is only available as a static library,
dnl and prevents libgauche.dll from building. We explicitly excludes it.
dnl
-case "$target" in
+case "$host" in
*cygwin*)
: ;;
*)
@@ -428,9 +431,9 @@
# We put additional information, such as whether we use Framework for
# darwin, in this variable.
-xtarget=$target
+xhost=$host
-case $target in
+case $host in
*freebsd2*)
SHLIB_SO_CFLAGS="-fpic -fPIC"
SHLIB_SO_LDFLAGS="-v;ld -Bshareable -o"
@@ -456,7 +459,7 @@
# -no-cpp-precomp is not related to shared library, but needed to
# get src/{vm.c,char.c} compiled -skimu
# [Shiro] Darwin 1.3 and later needs different flags
- case $target_os in
+ case $host_os in
darwin1.[[012]]) FLAT_NAMESPACE="" ;;
*) FLAT_NAMESPACE="-flat_namespace" ;;
esac
@@ -467,7 +470,7 @@
if test "$ac_gauche_framework" = yes; then
SHLIB_DYLIB_LDFLAGS='-framework CoreFoundation -dynamiclib -o'
AC_DEFINE(GAUCHE_MACOSX_FRAMEWORK, 1, [Define 1 if building framework on MacOSX])
- xtarget="${target}-framework"
+ xhost="${host}-framework"
else
SHLIB_DYLIB_LDFLAGS="-dynamiclib -o"
fi
@@ -574,7 +577,7 @@
MAKEVERSLINK=:
fi
-AC_SUBST(xtarget)
+AC_SUBST(xhost)
AC_SUBST(SHLIB_SO_CFLAGS)
AC_SUBST(SHLIB_SO_LDFLAGS)
AC_SUBST(SHLIB_SO_SUFFIX)
@@ -670,6 +673,20 @@
m4_include([ext/net/net.ac])
dnl ===========================================================
+dnl Cross compiling
+if test ${cross_compiling} = no ; then
+ # self compile
+ CROSS_COMPILING_yes="#"
+ CROSS_COMPILING_no=
+else
+ # cross compile
+ CROSS_COMPILING_yes=
+ CROSS_COMPILING_no="#"
+fi
+AC_SUBST(CROSS_COMPILING_yes)
+AC_SUBST(CROSS_COMPILING_no)
+
+dnl ===========================================================
dnl Configure gc and extensions
AC_CONFIG_SUBDIRS(gc)
diff -ruN -x configure -x config.scm Gauche-0.8.12/doc/Makefile.in Gauche-0.8.12-cross/doc/Makefile.in
--- Gauche-0.8.12/doc/Makefile.in 2007-08-20 19:15:12.000000000 +0900
+++ Gauche-0.8.12-cross/doc/Makefile.in 2007-12-03 06:58:51.000000000 +0900
@@ -2,12 +2,15 @@
VPATH = $(srcdir)
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+build = @build@
+host = @host@
MANPAGES = gosh.1 gauche-config.1
EXTRACTED = gauche-refe.texi gauche-refj.texi \
gauche-deve.texi gauche-devj.texi
GENERATED = Makefile $(MANPAGES)
-GOSH = ../src/gosh -q -I../src -I../lib -lgauche-init
+@CROSS_COMPILING_no@GOSH = ../src/gosh -q -I../src -I../lib -lgauche-init
+@CROSS_COMPILING_yes@GOSH = gosh -q -lgauche-init
INSTALL = @INSTALL@
MKINSTDIR = $(top_srcdir)/mkinstalldirs
MAKEINFO = @MAKEINFO@
diff -ruN -x configure -x config.scm Gauche-0.8.12/ext/Makefile.ext.in Gauche-0.8.12-cross/ext/Makefile.ext.in
--- Gauche-0.8.12/ext/Makefile.ext.in 2007-09-15 12:59:47.000000000 +0900
+++ Gauche-0.8.12-cross/ext/Makefile.ext.in 2007-12-03 06:53:07.000000000 +0900
@@ -11,6 +11,7 @@
datarootdir = @datarootdir@
VPATH = $(srcdir)
GAUCHE_VERSION = @GAUCHE_VERSION@
+BUILD = @build@
HOST = @host@
# These may be overridden by make invocators
@@ -36,8 +37,10 @@
LINK = $(CCLD) $(CFLAGS) $(LDFLAGS)
MODLINK = $(CCLD) $(CFLAGS) $(LDFLAGS)
-GOSH = $(top_builddir)/src/gosh -ftest
-GAUCHE_CONFIG = $(top_builddir)/src/gauche-config
+@CROSS_COMPILING_no@GOSH = $(top_builddir)/src/gosh -ftest
+@CROSS_COMPILING_no@GAUCHE_CONFIG = $(top_builddir)/src/gauche-config
+@CROSS_COMPILING_yes@GOSH = gosh
+@CROSS_COMPILING_yes@GAUCHE_CONFIG = $(top_builddir)/src/$(HOST)-gauche-config
GAUCHE_INSTALL = $(GOSH) $(top_srcdir)/src/gauche-install.in
GENCOMP = $(GOSH) $(top_srcdir)/src/gencomp
INSTALL_TYPE = sys
diff -ruN -x configure -x config.scm Gauche-0.8.12/ext/mt-random/mt-random.c Gauche-0.8.12-cross/ext/mt-random/mt-random.c
--- Gauche-0.8.12/ext/mt-random/mt-random.c 2007-09-15 12:59:49.000000000 +0900
+++ Gauche-0.8.12-cross/ext/mt-random/mt-random.c 2007-11-06 16:28:01.000000000 +0900
@@ -134,7 +134,7 @@
}
/* generates a random number on [0,0xffffffff]-interval */
-inline unsigned long Scm_MTGenrandU32(ScmMersenneTwister *mt)
+unsigned long Scm_MTGenrandU32(ScmMersenneTwister *mt)
{
unsigned long y;
int mti = mt->mti;
diff -ruN -x configure -x config.scm Gauche-0.8.12/ext/net/net.ac Gauche-0.8.12-cross/ext/net/net.ac
--- Gauche-0.8.12/ext/net/net.ac 2007-10-02 18:07:01.000000000 +0900
+++ Gauche-0.8.12-cross/ext/net/net.ac 2007-11-03 17:12:28.000000000 +0900
@@ -219,7 +219,8 @@
dnl bother checking it.
case "$target" in
*mingw32*)
- AC_DEFINE(socklen_t, int)
+dnl mingw-gcc 4.2 knows socklen_t.
+dnl AC_DEFINE(socklen_t, int)
LIBS="$LIBS -lws2_32" ;;
*)
TYPE_SOCKLEN_T;;
diff -ruN -x configure -x config.scm Gauche-0.8.12/lib/Makefile.in Gauche-0.8.12-cross/lib/Makefile.in
--- Gauche-0.8.12/lib/Makefile.in 2007-08-21 18:03:14.000000000 +0900
+++ Gauche-0.8.12-cross/lib/Makefile.in 2007-11-01 16:50:53.000000000 +0900
@@ -17,6 +17,8 @@
top_srcdir = @top_srcdir@
datadir = @datadir@
datarootdir = @datarootdir@
+build = @build@
+host = @host@
GAUCHE_DATA_DIR = $(datadir)/gauche
SCM_INSTALL_DIR = $(GAUCHE_DATA_DIR)/@GAUCHE_VERSION@/lib
@@ -101,7 +103,7 @@
# For RPM, this has to be called in the postinstall script instead of
# installation script.
slibcat :
- if test -f $(SLIB_DIR)/require.scm; then \
+ if test -f $(SLIB_DIR)/require.scm && test $(build) = $(host) ; then \
$(exec_prefix)/bin/gosh -ftest -uslib -E"require 'new-catalog" -Eexit;\
fi
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/Makefile.in Gauche-0.8.12-cross/src/Makefile.in
--- Gauche-0.8.12/src/Makefile.in 2007-09-11 06:18:38.000000000 +0900
+++ Gauche-0.8.12-cross/src/Makefile.in 2007-12-03 07:46:27.000000000 +0900
@@ -24,7 +24,7 @@
$(COMPILE) -c $<
.stub.c:
- $(HOSTGOSH) ./genstub -D LIBGAUCHE_BODY $<
+ $(BUILD_GOSH) ./genstub -D LIBGAUCHE_BODY $<
SHELL = @SHELL@
prefix = @prefix@
@@ -38,6 +38,10 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+# for cross build
+build = @build@
+host = @host@
+
# These may be overridden by make invocators
DESTDIR =
CC = @CC@
@@ -74,14 +78,18 @@
GENCOMP = $(srcdir)/gencomp -D LIBGAUCHE_BODY
-# HOSTGOSH is the gosh command used to generate some of the source files.
+# for cross build
+BUILD_CC = @BUILD_CC@
+BUILD_CFLAGS = -O2
+
+# BUILD_GOSH is the gosh command used to generate some of the source files.
# We need to 'preload' some libraries from the host's environment, for
# they are compiled DSO as of 0.8.6 and the ones in the build tree can
# be incompatible with the host gosh.
-# (NB: HOSTGOSH is only invoked building from CVS; it won't be called
+# (NB: BUILD_GOSH is only invoked building from CVS; it won't be called
# when building from tarball.)
# We clear GAUCHE_LOAD_PATH to make sure we won't read nonstandard stuff.
-HOSTGOSH = GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH="" \
+BUILD_GOSH = GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH="" \
gosh -l./preload -I$(top_srcdir)/src -I$(top_srcdir)/lib
LIB_INSTALL_DIR = @libdir@
@@ -93,10 +101,10 @@
HEADER_INSTALL_DIR = $(GAUCHE_ARCH_DIR)/@GAUCHE_VERSION@/include
SCM_INSTALL_DIR = $(GAUCHE_DATA_DIR)/@GAUCHE_VERSION@/lib
-ARCH_INSTALL_DIR = $(GAUCHE_ARCH_DIR)/@GAUCHE_VERSION@/@target@
+ARCH_INSTALL_DIR = $(GAUCHE_ARCH_DIR)/@GAUCHE_VERSION@/@host@
SITE_SCM_DIR = $(GAUCHE_DATA_DIR)/site/lib
-SITE_ARCH_DIR = $(GAUCHE_ARCH_DIR)/site/@GAUCHE_VERSION@/@target@
-ARCH = @target@
+SITE_ARCH_DIR = $(GAUCHE_ARCH_DIR)/site/@GAUCHE_VERSION@/@host@
+ARCH = @host@
# targetlib is given when we relink the final version of gosh to embed
# the path to libgauche. Usually it is LIB_INSTALL_DIR, but under
@@ -169,7 +177,8 @@
OBJECTS = $(libgauche_OBJECTS) $(gosh_OBJECTS)
-all : libgauche.$(SOEXT) $(INSTALL_BINS) $(GENERATED_SCRIPTS)
+@CROSS_COMPILING_no@all : libgauche.$(SOEXT) $(INSTALL_BINS) $(GENERATED_SCRIPTS)
+@CROSS_COMPILING_yes@all : libgauche.$(SOEXT) $(INSTALL_BINS) $(GENERATED_SCRIPTS) $(host)-gauche-config
gosh$(EXEEXT) : libgauche.$(SOEXT) $(gosh_OBJECTS)
@rm -f gosh$(EXEEXT)
@@ -189,22 +198,22 @@
intlib.c : intlib.stub genstub
autoloads.c : autoloads.scm
- $(HOSTGOSH) ./autoloads.scm
+ $(BUILD_GOSH) ./autoloads.scm
builtin-syms.c gauche/builtin-syms.h : builtin-syms.scm
- $(HOSTGOSH) ./builtin-syms.scm
+ $(BUILD_GOSH) ./builtin-syms.scm
vminsn.c gauche/vminsn.h ../lib/gauche/vm/insn.scm : vminsn.scm geninsn
- $(HOSTGOSH) ./geninsn
+ $(BUILD_GOSH) ./geninsn
compile.c : compile.scm gencomp vminsn.scm
- $(HOSTGOSH) $(GENCOMP) compile.scm
+ $(BUILD_GOSH) $(GENCOMP) compile.scm
scmlib.c : scmlib.scm gencomp vminsn.scm
- $(HOSTGOSH) $(GENCOMP) scmlib.scm
+ $(BUILD_GOSH) $(GENCOMP) scmlib.scm
objlib.c : objlib.scm gencomp vminsn.scm
- $(HOSTGOSH) $(GENCOMP) objlib.scm
+ $(BUILD_GOSH) $(GENCOMP) objlib.scm
symbol.$(OBJEXT) : builtin-syms.c
@@ -223,6 +232,10 @@
gauche-config$(EXEEXT) : gauche-config.$(OBJEXT)
$(LINK) -o gauche-config$(EXEEXT) gauche-config.$(OBJEXT) $(LIBS)
+# for cross build
+$(host)-gauche-config: gauche-config.c
+ $(BUILD_CC) $(BUILD_CFLAGS) $(DEFS) -o $@ gauche-config.c
+
gauche-config.c gauche/arch.h ../lib/gauche/config.scm : genconfig
$(SHELL) ./genconfig
@@ -246,9 +259,9 @@
# a special build sequence when VM instruction set has been changed
newinsn :
- $(HOSTGOSH) -fno-inline-globals $(GENCOMP) compile.scm
- $(HOSTGOSH) -fno-inline-globals $(GENCOMP) scmlib.scm
- $(HOSTGOSH) -fno-inline-globals $(GENCOMP) objlib.scm
+ $(BUILD_GOSH) -fno-inline-globals $(GENCOMP) compile.scm
+ $(BUILD_GOSH) -fno-inline-globals $(GENCOMP) scmlib.scm
+ $(BUILD_GOSH) -fno-inline-globals $(GENCOMP) objlib.scm
$(MAKE) all
./gosh -ftest $(GENCOMP) compile.scm
./gosh -ftest $(GENCOMP) scmlib.scm
@@ -302,7 +315,10 @@
test-vmstack$(EXEEXT) test-arith$(EXEEXT) \
$(GENERATED_SCRIPTS) gauche-config.c \
libgauche.$(SOEXT)* *.$(OBJEXT) *~ *.a *.t *.def *.exp *.exe \
- test.log test.dir so_locations gauche/*~ gauche/arch.h
+ test.log test.dir so_locations gauche/*~ gauche/arch.h \
+ gauche-config.in.c \
+ gauche-install.in.c gauche-package.in.c gauche-cesconv.in.c \
+ $(host)-gauche-config.c $(host)-gauche-config
distclean : clean
rm -f $(CONFIG_GENERATED)
@@ -319,6 +335,8 @@
$(DESTDIR)$(BIN_INSTALL_DIR) \
$(DESTDIR)$(SITE_SCM_DIR) \
$(DESTDIR)$(SITE_ARCH_DIR)
+@CROSS_COMPILING_no@GAUCHE_CONFIG = ./gauche-config
+@CROSS_COMPILING_yes@GAUCHE_CONFIG = ./$(host)-gauche-config
install : all relink
$(MKINSTDIR) $(INSTALL_DIRS)
@@ -329,7 +347,7 @@
$(INSTALL) -m 555 $(INSTALL_BINS) $(DESTDIR)$(BIN_INSTALL_DIR)
$(INSTALL) -m 555 $(INSTALL_BINS) $(DESTDIR)$(ARCH_INSTALL_DIR)
$(INSTALL) -m 444 $(INSTALL_SCMS) $(DESTDIR)$(SCM_INSTALL_DIR)
- @case `./gauche-config --arch` in *-cygwin*|*-mingw*) \
+ @case `$(GAUCHE_CONFIG) --arch` in *-cygwin*|*-mingw*) \
$(INSTALL) $(INSTALL_LIBS) $(DESTDIR)$(BIN_INSTALL_DIR);;\
esac
$(POSTINSTALL)
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/bignum.c Gauche-0.8.12-cross/src/bignum.c
--- Gauche-0.8.12/src/bignum.c 2007-09-09 04:52:36.000000000 +0900
+++ Gauche-0.8.12-cross/src/bignum.c 2007-11-06 16:00:29.000000000 +0900
@@ -71,6 +71,10 @@
# if HAVE_ALLOCA_H
# include <alloca.h>
# endif
+# if HAVE_MALLOC_H
+/* MinGW helds alloca() in "malloc.h" instead of "alloca.h" */
+# include <malloc.h>
+# endif
#endif
#include <stdlib.h>
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/class.c Gauche-0.8.12-cross/src/class.c
--- Gauche-0.8.12/src/class.c 2007-09-18 17:48:36.000000000 +0900
+++ Gauche-0.8.12-cross/src/class.c 2007-11-06 16:16:56.000000000 +0900
@@ -1269,7 +1269,7 @@
* (cond ((assq slot (ref class 'accessors)) => cdr)
* (else (error !!!))))
*/
-inline ScmSlotAccessor *Scm_GetSlotAccessor(ScmClass *klass, ScmObj slot)
+static inline ScmSlotAccessor *Scm_GetSlotAccessor(ScmClass *klass, ScmObj slot)
{
ScmObj p = Scm_Assq(slot, klass->accessors);
if (!SCM_PAIRP(p)) return NULL;
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/dl_win.c Gauche-0.8.12-cross/src/dl_win.c
--- Gauche-0.8.12/src/dl_win.c 2007-08-25 08:55:45.000000000 +0900
+++ Gauche-0.8.12-cross/src/dl_win.c 2007-11-06 16:35:46.000000000 +0900
@@ -52,7 +52,7 @@
{
char buf[80], *p;
DWORD code = GetLastError();
- sprintf(buf, "error code %d", code);
+ snprintf(buf, sizeof(buf), "error code %ld", code);
p = SCM_NEW_ATOMIC2(char *, strlen(buf)+1);
strcpy(p, buf);
return p;
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/gauche/config.h.in Gauche-0.8.12-cross/src/gauche/config.h.in
--- Gauche-0.8.12/src/gauche/config.h.in 2007-08-10 15:37:10.000000000 +0900
+++ Gauche-0.8.12-cross/src/gauche/config.h.in 2007-11-06 16:06:10.000000000 +0900
@@ -167,6 +167,9 @@
/* Define to 1 if you have the <rpc/types.h> header file. */
#undef HAVE_RPC_TYPES_H
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
/* Define to 1 if you have the <sched.h> header file. */
#undef HAVE_SCHED_H
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/genconfig.in Gauche-0.8.12-cross/src/genconfig.in
--- Gauche-0.8.12/src/genconfig.in 2007-08-25 12:04:48.000000000 +0900
+++ Gauche-0.8.12-cross/src/genconfig.in 2007-11-06 15:14:04.000000000 +0900
@@ -10,11 +10,11 @@
# (cmds[]) and config.scm part (*configurations*). They should be
# generated from a single source.
-target=@target@
-xtarget=@xtarget@
+host=@host@
+xhost=@xhost@
gauche_version=@GAUCHE_VERSION@
-case "$xtarget" in
+case "$xhost" in
*mingw*|*winnt*)
# On Windows we can't rely on the paths set by configure.
# We find the location of the binary and calculate the prefix path
@@ -50,17 +50,17 @@
gauche_incdir=`echo "$garchdir/$gauche_version/include" | $pathfix`
gauche_libdir=`echo "$gdatadir/$gauche_version/lib" | $pathfix`
gauche_aclocaldir=`echo "$gdatadir/$gauche_version/" | $pathfix`
-gauche_archdir=`echo "$garchdir/$gauche_version/$target" | $pathfix`
+gauche_archdir=`echo "$garchdir/$gauche_version/$host" | $pathfix`
gauche_siteincdir=`echo "$garchdir/site/include" | $pathfix`
gauche_sitelibdir=`echo "$gdatadir/site/lib" | $pathfix`
-gauche_sitearchdir=`echo "$garchdir/site/$gauche_version/$target" | $pathfix`
+gauche_sitearchdir=`echo "$garchdir/site/$gauche_version/$host" | $pathfix`
gauche_pkgincdir=`echo '${libdir}'"/gauche/site/include" | $pathfix`
gauche_pkglibdir=`echo '${datadir}'"/gauche/site/lib" | $pathfix`
-gauche_pkgarchdir=`echo '${libdir}'"/gauche/site/$gauche_version/$target" | $pathfix`
+gauche_pkgarchdir=`echo '${libdir}'"/gauche/site/$gauche_version/$host" | $pathfix`
gauche_libs="@LIBS@"
gauche_configure_args="@GAUCHE_CONFIGURE_ARGS@"
-arch="$target"
+arch="$host"
local_incdir="@LOCAL_INC@"
local_libdir="@LOCAL_LIB@"
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/number.c Gauche-0.8.12-cross/src/number.c
--- Gauche-0.8.12/src/number.c 2007-10-02 18:56:30.000000000 +0900
+++ Gauche-0.8.12-cross/src/number.c 2007-11-26 05:38:53.000000000 +0900
@@ -2343,7 +2343,7 @@
if (s0 > s1) return 1;
d = Scm_NumCmp(d0, d1);
if (d == 0) return Scm_NumCmp(n0, n1);
- if (s0 > 0 && s1 > 0 || s0 < 0 && s1 < 0) {
+ if ((s0 > 0 && s1 > 0) || (s0 < 0 && s1 < 0)) {
n = Scm_NumCmp(n0, n1) * s0;
if (d > 0 && n <= 0) return -s0;
if (d < 0 && n >= 0) return s0;
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/string.c Gauche-0.8.12-cross/src/string.c
--- Gauche-0.8.12/src/string.c 2007-08-29 18:38:54.000000000 +0900
+++ Gauche-0.8.12-cross/src/string.c 2007-11-06 16:45:46.000000000 +0900
@@ -1385,7 +1385,7 @@
dstr->length = 0;
}
-inline int Scm_DStringSize(ScmDString *dstr)
+int Scm_DStringSize(ScmDString *dstr)
{
ScmDStringChain *chain;
int size;
diff -ruN -x configure -x config.scm Gauche-0.8.12/src/system.c Gauche-0.8.12-cross/src/system.c
--- Gauche-0.8.12/src/system.c 2007-10-30 07:30:38.000000000 +0900
+++ Gauche-0.8.12-cross/src/system.c 2007-11-06 15:34:46.000000000 +0900
@@ -44,6 +44,7 @@
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <ctype.h>
#include <fcntl.h>
#include <math.h>
#if !defined(_MSC_VER)
@@ -57,6 +58,8 @@
#include <lm.h>
#include <tlhelp32.h>
static HANDLE *win_prepare_handles(int *fds);
+static int win_wait_for_handles(HANDLE *handles, int nhandles, int options,
+ int *status /*out*/);
#endif /* GAUCHE_WINDOWS */
#ifdef HAVE_GLOB_H
@@ -622,7 +625,7 @@
flags = O_CREAT|O_EXCL|O_WRONLY;
#endif /* !GAUCHE_WINDOWS */
for (numtry=0; numtry<MKSTEMP_MAX_TRIALS; numtry++) {
- snprintf(suffix, 7, "%06x", seed&0xffffff);
+ snprintf(suffix, 7, "%06lx", seed&0xffffff);
memcpy(templat+siz-6, suffix, 7);
SCM_SYSCALL(fd, open(templat, flags, 0600));
if (fd >= 0) break;
@@ -1688,8 +1691,6 @@
process is integer and > 0 -> wait for specific pid
process is #<win:process-handle> -> wait for specified process
The common op is factored out in win_wait_for_handles. */
- static int win_wait_for_handles(HANDLE *handles, int nhandles, int options,
- int *status /*out*/);
int r, status = 0;
if (SCM_INTEGERP(process)) {
Shiro(2007/11/25 14:43:19 PST): GNU makeには既に依存してるところがあったような
気もするので、この際要求してしまっても良いかと思います。
mt-random.cのScm_MTGenrandU32でinlineが削ってあるのはもしかして
inlineしたやつをextern宣言できないとかいうケースがあるんでしょうか?
まあ今見てみるとここはinlineにするほどのこともなさそうな感じなので
削ってもいいと思うんですが、一応確認。
この前の週末CVS HEADをbuildしましたがノーマルなmakeで通りましたよ。on NetBSDです。cut-sea:2007/11/25 19:13:01 PST
Shiro(2008/02/03 05:11:06 PST): ども。ほぼそのまま取り込ませていだたきました。 CROSS_COMPILING_yes/CROSS_COMPILING_no のところはもう一工夫したいですが、 とりあえず0.8.13に向けてテストしている時間がないので、リリース後に見直そうと 思います。
(あと、大きなパッチは検証が億劫になってしまうので、修正する機能ごとに パッチをわけていただけると助かります)