summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Jahn <stefan@lkcc.org>2003-05-29 14:39:13 +0000
committerStefan Jahn <stefan@lkcc.org>2003-05-29 14:39:13 +0000
commit2e945bccca0209965dbbb1aea858f9bb7576641a (patch)
tree93140104c679a4cbbe2747f98422cefce95853c5
parent42ad901d04a32e9ec7033a5ba520b3be1908f2bf (diff)
downloadguile-2e945bccca0209965dbbb1aea858f9bb7576641a.tar.gz
2003-05-29 Stefan Jahn <stefan@lkcc.org>
* configure.in: Removed -lm check and added a cached check for __libc_stack_end to get it building for mingw32 hosts. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * win32-dirent.c: Use malloc() instead of scm_malloc(). * stime.c (s_scm_strftime): Add a type cast to avoid compiler warning. * posix.c (s_scm_putenv): Disable use of unsetenv() for the mingw32 build. * modules.c (s_scm_module_import_interface): Renamed local variable interface to _interface. Seems like 'interface' is a special compiler directive for the mingw32 compiler. * mkstemp.c: Provide prototype to avoid compiler warning. * load.c (s_scm_search_path): Fixed absolute and relative path detections for native Windows platforms. * gc.h, threads.h: Export some more symbols using SCM_API (necessary to build on mingw32). * gc-freelist.c ("s_scm_map_free_list", "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME. * fports.c (fport_fill_input): Disable use of fport_wait_for_input() on Win32 platforms. * filesys.c (s_scm_basename): Fixed __MINGW32__ code. * Makefile.am: Modified some rules for cross compiling. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * raw-ltdl.c: Some more modifications for mingw32 platforms. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * Makefile.am (libguile_srfi_srfi_1_la_LDFLAGS, libguile_srfi_srfi_4_la_LDFLAGS, libguile_srfi_srfi_13_14__la_LDFLAGS): Added the -no-undefined option for the mingw32 build. 2003-05-29 Stefan Jahn <stefan@lkcc.org> * standalone/Makefile.am: Setup to build on mingw32.
-rw-r--r--ChangeLog5
-rw-r--r--configure.in19
-rw-r--r--libguile-ltdl/ChangeLog4
-rw-r--r--libguile-ltdl/raw-ltdl.c7
-rw-r--r--libguile/ChangeLog32
-rw-r--r--libguile/Makefile.am21
-rw-r--r--libguile/filesys.c4
-rw-r--r--libguile/fports.c4
-rw-r--r--libguile/gc-freelist.c5
-rw-r--r--libguile/gc.h14
-rw-r--r--libguile/load.c26
-rw-r--r--libguile/mkstemp.c5
-rw-r--r--libguile/modules.c18
-rw-r--r--libguile/posix.c2
-rw-r--r--libguile/stime.c2
-rw-r--r--libguile/threads.h2
-rw-r--r--libguile/win32-dirent.c6
-rw-r--r--srfi/ChangeLog7
-rw-r--r--srfi/Makefile.am6
-rw-r--r--test-suite/ChangeLog4
-rw-r--r--test-suite/standalone/Makefile.am4
21 files changed, 151 insertions, 46 deletions
diff --git a/ChangeLog b/ChangeLog
index 8852f6417..034ee9c7a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-05-29 Stefan Jahn <stefan@lkcc.org>
+
+ * configure.in: Removed -lm check and added a cached check for
+ __libc_stack_end to get it building for mingw32 hosts.
+
2003-05-19 Kevin Ryde <user42@zip.com.au>
* README (Cross building Guile): Remove --with-cc-for-build in favour
diff --git a/configure.in b/configure.in
index ad1bfa8d6..36298aeac 100644
--- a/configure.in
+++ b/configure.in
@@ -483,7 +483,9 @@ AC_TYPE_GETGROUPS
AC_TYPE_SIGNAL
AC_TYPE_MODE_T
-AC_CHECK_LIB(m, main)
+if test $MINGW32 = no; then
+ AC_CHECK_LIB(m, main)
+fi
AC_CHECK_FUNCS(gethostbyname)
if test $ac_cv_func_gethostbyname = no; then
AC_CHECK_LIB(nsl, gethostbyname)
@@ -594,13 +596,14 @@ AC_CHECK_FUNCS(sethostent gethostent endhostent dnl
inet_pton inet_ntop)
AC_MSG_CHECKING(for __libc_stack_end)
-AC_TRY_LINK([extern char *__libc_stack_end;],
- [char *p = __libc_stack_end;],
- have_libc_stack_end=yes,
- have_libc_stack_end=no)
-AC_MSG_RESULT($have_libc_stack_end)
-
-if test $have_libc_stack_end = yes; then
+AC_CACHE_VAL(guile_cv_have_libc_stack_end,
+[AC_TRY_LINK([extern char *__libc_stack_end;],
+ [char *p = __libc_stack_end;],
+ guile_cv_have_libc_stack_end=yes,
+ guile_cv_have_libc_stack_end=no)])
+AC_MSG_RESULT($guile_cv_have_libc_stack_end)
+
+if test $guile_cv_have_libc_stack_end = yes; then
AC_DEFINE(HAVE_LIBC_STACK_END, 1,
[Define if you have the __libc_stack_end variable.])
fi
diff --git a/libguile-ltdl/ChangeLog b/libguile-ltdl/ChangeLog
index 7fe4fb8a6..6c19c2366 100644
--- a/libguile-ltdl/ChangeLog
+++ b/libguile-ltdl/ChangeLog
@@ -1,3 +1,7 @@
+2003-05-29 Stefan Jahn <stefan@lkcc.org>
+
+ * raw-ltdl.c: Some more modifications for mingw32 platforms.
+
2003-03-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
* raw-ltdl.c: Include <config.h> instead of
diff --git a/libguile-ltdl/raw-ltdl.c b/libguile-ltdl/raw-ltdl.c
index dec1ca3b7..09b7f0e08 100644
--- a/libguile-ltdl/raw-ltdl.c
+++ b/libguile-ltdl/raw-ltdl.c
@@ -163,11 +163,11 @@ static lt_ptr lt_erealloc LT_PARAMS((lt_ptr addr, size_t size));
#define rpl_realloc realloc
/* These are the pointers that can be changed by the caller: */
-SCMLTSTATIC LT_GLOBAL_DATA lt_ptr (*lt_dlmalloc) LT_PARAMS((size_t size))
+SCMLTSTATIC lt_ptr (*lt_dlmalloc) LT_PARAMS((size_t size))
= (lt_ptr (*) LT_PARAMS((size_t))) malloc;
-SCMLTSTATIC LT_GLOBAL_DATA lt_ptr (*lt_dlrealloc) LT_PARAMS((lt_ptr ptr, size_t size))
+SCMLTSTATIC lt_ptr (*lt_dlrealloc) LT_PARAMS((lt_ptr ptr, size_t size))
= (lt_ptr (*) LT_PARAMS((lt_ptr, size_t))) rpl_realloc;
-SCMLTSTATIC LT_GLOBAL_DATA void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
+SCMLTSTATIC void (*lt_dlfree) LT_PARAMS((lt_ptr ptr))
= (void (*) LT_PARAMS((lt_ptr))) free;
/* The following macros reduce the amount of typing needed to cast
@@ -1185,7 +1185,6 @@ sys_wll_open (loader_data, filename)
{
lt_dlhandle cur;
lt_module module = NULL;
- const char *errormsg = NULL;
char *searchname = NULL;
char *ext;
char self_name_buf[MAX_PATH];
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index c330d13e9..f354f6638 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,35 @@
+2003-05-29 Stefan Jahn <stefan@lkcc.org>
+
+ * win32-dirent.c: Use malloc() instead of scm_malloc().
+
+ * stime.c (s_scm_strftime): Add a type cast to avoid compiler
+ warning.
+
+ * posix.c (s_scm_putenv): Disable use of unsetenv() for the
+ mingw32 build.
+
+ * modules.c (s_scm_module_import_interface): Renamed local
+ variable interface to _interface. Seems like 'interface'
+ is a special compiler directive for the mingw32 compiler.
+
+ * mkstemp.c: Provide prototype to avoid compiler warning.
+
+ * load.c (s_scm_search_path): Fixed absolute and relative
+ path detections for native Windows platforms.
+
+ * gc.h, threads.h: Export some more symbols using SCM_API (necessary
+ to build on mingw32).
+
+ * gc-freelist.c ("s_scm_map_free_list",
+ "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
+
+ * fports.c (fport_fill_input): Disable use of
+ fport_wait_for_input() on Win32 platforms.
+
+ * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
+
+ * Makefile.am: Modified some rules for cross compiling.
+
2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
* eval.c (SCM_CEVAL): In case of an application, all checks for a
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index 65cd20a42..c0f7e0102 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -42,15 +42,24 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
## For some reason, OBJEXT does not include the dot
gen-scmconfig.$(OBJEXT): gen-scmconfig.c
if [ "$(cross_compiling)" = "yes" ]; then \
- $(CC_FOR_BUILD) -c -o $@ $<; \
+ $(CC_FOR_BUILD) $(DEFS) $(INCLUDES) -c -o $@ $<; \
else \
$(COMPILE) -c -o $@ $<; \
fi
-scmconfig.h: ${top_builddir}/config.h gen-scmconfig
+## Override default rule; this should run on BUILD host.
+gen-scmconfig$(EXEEXT): $(gen_scmconfig_OBJECTS) $(gen_scmconfig_DEPENDENCIES)
+ @rm -f gen-scmconfig$(EXEEXT)
+ if [ "$(cross_compiling)" = "yes" ]; then \
+ $(CCLD_FOR_BUILD) -o $@ $(gen_scmconfig_OBJECTS); \
+ else \
+ $(LINK) $(gen_scmconfig_OBJECTS) $(LDADD) $(LIBS); \
+ fi
+
+scmconfig.h: ${top_builddir}/config.h gen-scmconfig$(EXEEXT)
rm -f scmconfig.h.tmp
cat $(srcdir)/scmconfig.h.top > scmconfig.h.tmp
- ./gen-scmconfig >> scmconfig.h.tmp
+ ./gen-scmconfig$(EXEEXT) >> scmconfig.h.tmp
chmod 444 scmconfig.h.tmp
rm -f scmconfig.h
mv scmconfig.h.tmp scmconfig.h
@@ -61,7 +70,7 @@ guile_filter_doc_snarfage_SOURCES = c-tokenize.c
## For some reason, OBJEXT does not include the dot
c-tokenize.$(OBJEXT): c-tokenize.c
if [ "$(cross_compiling)" = "yes" ]; then \
- $(CC_FOR_BUILD) -c -o $@ $<; \
+ $(CC_FOR_BUILD) $(DEFS) $(INCLUDES) -c -o $@ $<; \
else \
$(COMPILE) -c -o $@ $<; \
fi
@@ -271,10 +280,10 @@ alldotdocfiles = $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES)
snarf2checkedtexi = GUILE="$(GUILE_FOR_BUILD)" $(top_srcdir)/scripts/snarf-check-and-output-texi
dotdoc2texi = cat $(alldotdocfiles) | $(snarf2checkedtexi)
-guile.texi: $(alldotdocfiles) guile
+guile.texi: $(alldotdocfiles) guile$(EXEEXT)
$(dotdoc2texi) --manual > $@ || { rm $@; false; }
-guile-procedures.texi: $(alldotdocfiles) guile
+guile-procedures.texi: $(alldotdocfiles) guile$(EXEEXT)
$(dotdoc2texi) > $@ || { rm $@; false; }
if HAVE_MAKEINFO
diff --git a/libguile/filesys.c b/libguile/filesys.c
index 3434756a3..91c00852f 100644
--- a/libguile/filesys.c
+++ b/libguile/filesys.c
@@ -1503,14 +1503,14 @@ SCM_DEFINE (scm_basename, "basename", 1, 1, 0,
if (j == -1)
end = i;
#ifdef __MINGW32__
- while (i >= 0 && (f[i] != '/' || f[i] != '\\')) --i;
+ while (i >= 0 && f[i] != '/' && f[i] != '\\') --i;
#else
while (i >= 0 && f[i] != '/') --i;
#endif /* ndef __MINGW32__ */
if (i == end)
{
#ifdef __MINGW32__
- if (len > 0 && (f[0] == '/' || f[i] == '\\'))
+ if (len > 0 && (f[0] == '/' || f[0] == '\\'))
#else
if (len > 0 && f[0] == '/')
#endif /* ndef __MINGW32__ */
diff --git a/libguile/fports.c b/libguile/fports.c
index 078135a8c..e30d7bb8c 100644
--- a/libguile/fports.c
+++ b/libguile/fports.c
@@ -513,6 +513,7 @@ fport_print (SCM exp, SCM port, scm_print_state *pstate SCM_UNUSED)
return 1;
}
+#ifndef __MINGW32__
/* thread-local block for input on fport's fdes. */
static void
fport_wait_for_input (SCM port)
@@ -537,6 +538,7 @@ fport_wait_for_input (SCM port)
while (n == -1 && errno == EINTR);
}
}
+#endif /* !__MINGW32__ */
static void fport_flush (SCM port);
@@ -549,7 +551,9 @@ fport_fill_input (SCM port)
scm_t_port *pt = SCM_PTAB_ENTRY (port);
scm_t_fport *fp = SCM_FSTREAM (port);
+#ifndef __MINGW32__
fport_wait_for_input (port);
+#endif /* !__MINGW32__ */
SCM_SYSCALL (count = read (fp->fdes, pt->read_buf, pt->read_buf_size));
if (count == -1)
scm_syserror ("fport_fill_input");
diff --git a/libguile/gc-freelist.c b/libguile/gc-freelist.c
index cebea1079..e9863695e 100644
--- a/libguile/gc-freelist.c
+++ b/libguile/gc-freelist.c
@@ -48,16 +48,17 @@ is unset before allocation. --hwn
SCM_DEFINE (scm_map_free_list, "map-free-list", 0, 0, 0,
(),
"DEPRECATED\n")
-#define FUNC_NAME s_scm_map_free_list
+#define FUNC_NAME "s_scm_map_free_list"
{
scm_c_issue_deprecation_warning ("map-free-list has been removed from GUILE. Doing nothing\n");
return SCM_UNSPECIFIED;
}
+#undef FUNC_NAME
SCM_DEFINE (scm_gc_set_debug_check_freelist_x, "gc-set-debug-check-freelist!", 1, 0, 0,
(SCM flag),
"DEPRECATED.\n")
-#define FUNC_NAME s_scm_gc_set_debug_check_freelist_x
+#define FUNC_NAME "s_scm_gc_set_debug_check_freelist_x"
{
scm_c_issue_deprecation_warning ("gc-set-debug-check-freelist! has been removed from GUILE. Doing nothing\n");
return SCM_UNSPECIFIED;
diff --git a/libguile/gc.h b/libguile/gc.h
index 3acaca11a..bebe856c4 100644
--- a/libguile/gc.h
+++ b/libguile/gc.h
@@ -235,7 +235,7 @@ void scm_i_expensive_validation_check (SCM cell);
SCM_API int scm_block_gc;
SCM_API int scm_gc_heap_lock;
SCM_API unsigned int scm_gc_running_p;
-extern scm_t_rec_mutex scm_i_sweep_mutex;
+SCM_API scm_t_rec_mutex scm_i_sweep_mutex;
#if (SCM_ENABLE_DEPRECATED == 1)
@@ -260,10 +260,10 @@ SCM_API size_t scm_max_segment_size;
*ls = SCM_EOL; \
scm_setspecific ((key), ls); } while (0)
#define SCM_FREELIST_LOC(key) ((SCM *) scm_getspecific (key))
-extern scm_t_key scm_i_freelist;
-extern scm_t_key scm_i_freelist2;
-extern struct scm_t_cell_type_statistics scm_i_master_freelist;
-extern struct scm_t_cell_type_statistics scm_i_master_freelist2;
+SCM_API scm_t_key scm_i_freelist;
+SCM_API scm_t_key scm_i_freelist2;
+SCM_API struct scm_t_cell_type_statistics scm_i_master_freelist;
+SCM_API struct scm_t_cell_type_statistics scm_i_master_freelist2;
SCM_API unsigned long scm_gc_cells_swept;
@@ -288,9 +288,13 @@ SCM_API scm_t_c_hook scm_after_sweep_c_hook;
SCM_API scm_t_c_hook scm_after_gc_c_hook;
#if defined (GUILE_DEBUG) || defined (GUILE_DEBUG_FREELIST)
+#if (SCM_ENABLE_DEPRECATED == 1)
+SCM scm_map_free_list (void);
+#else
#define scm_map_free_list deprecated
#define scm_free_list_length deprecated
#endif
+#endif
#if (SCM_ENABLE_DEPRECATED == 1) && defined (GUILE_DEBUG_FREELIST)
SCM_API SCM scm_gc_set_debug_check_freelist_x (SCM flag);
diff --git a/libguile/load.c b/libguile/load.c
index b5a7757d0..71715263b 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -188,7 +188,11 @@ scm_internal_parse_path (char *path, SCM tail)
do {
/* Scan back to the beginning of the current element. */
do scan--;
+#ifdef __MINGW32__
+ while (scan >= path && *scan != ';');
+#else
while (scan >= path && *scan != ':');
+#endif
tail = scm_cons (scm_mem2string (scan + 1, elt_end - (scan + 1)),
tail);
elt_end = scan;
@@ -273,7 +277,16 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
filename_len = SCM_STRING_LENGTH (filename);
/* If FILENAME is absolute, return it unchanged. */
+#ifdef __MINGW32__
+ if (((filename_len >= 1) &&
+ (filename_chars[0] == '/' || filename_chars[0] == '\\')) ||
+ ((filename_len >= 3) && filename_chars[1] == ':' &&
+ ((filename_chars[0] >= 'a' && filename_chars[0] <= 'z') ||
+ (filename_chars[0] >= 'A' && filename_chars[0] <= 'Z')) &&
+ (filename_chars[2] == '/' || filename_chars[2] == '\\')))
+#else
if (filename_len >= 1 && filename_chars[0] == '/')
+#endif
return filename;
/* Find the length of the longest element of path. */
@@ -306,7 +319,11 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
extensions = SCM_EOL;
break;
}
+#ifdef __MINGW32__
+ else if (*endp == '/' || *endp == '\\')
+#else
else if (*endp == '/')
+#endif
/* This filename has no extension, so keep the current list
of extensions. */
break;
@@ -351,7 +368,11 @@ SCM_DEFINE (scm_search_path, "search-path", 2, 1, 0,
/* Concatenate the path name and the filename. */
len = SCM_STRING_LENGTH (dir);
memcpy (buf, SCM_STRING_CHARS (dir), len);
+#ifdef __MINGW32__
+ if (len >= 1 && buf[len - 1] != '/' && buf[len - 1] != '\\')
+#else
if (len >= 1 && buf[len - 1] != '/')
+#endif
buf[len++] = '/';
memcpy (buf + len, filename_chars, filename_len);
len += filename_len;
@@ -433,7 +454,12 @@ SCM_DEFINE (scm_primitive_load_path, "primitive-load-path", 1, 0, 0,
if (SCM_FALSEP (full_filename))
{
int absolute = (SCM_STRING_LENGTH (filename) >= 1
+#ifdef __MINGW32__
+ && (SCM_STRING_CHARS (filename)[0] == '/' ||
+ SCM_STRING_CHARS (filename)[0] == '\\'));
+#else
&& SCM_STRING_CHARS (filename)[0] == '/');
+#endif
SCM_MISC_ERROR ((absolute
? "Unable to load file ~S"
: "Unable to find file ~S in load path"),
diff --git a/libguile/mkstemp.c b/libguile/mkstemp.c
index fe2487dae..25b23e23e 100644
--- a/libguile/mkstemp.c
+++ b/libguile/mkstemp.c
@@ -47,6 +47,11 @@
#define TMP_MAX 16384
#endif
+/* We provide this prototype to avoid compiler warnings. If this ever
+ conflicts with a declaration in a system header file, we'll find
+ out, because we should include that header file here. */
+int mkstemp (char *);
+
/* Generate a unique temporary file name from TEMPLATE.
TEMPLATE has the form:
diff --git a/libguile/modules.c b/libguile/modules.c
index 801bd7786..fd13c516b 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -401,25 +401,25 @@ SCM_DEFINE (scm_module_import_interface, "module-import-interface", 2, 0, 0,
uses = SCM_MODULE_USES (module);
while (SCM_CONSP (uses))
{
- SCM interface = SCM_CAR (uses);
+ SCM _interface = SCM_CAR (uses);
/* 1. Check module obarray */
- SCM b = scm_hashq_ref (SCM_MODULE_OBARRAY (interface), sym, SCM_BOOL_F);
+ SCM b = scm_hashq_ref (SCM_MODULE_OBARRAY (_interface), sym, SCM_BOOL_F);
if (SCM_BOUND_THING_P (b))
- return interface;
+ return _interface;
{
- SCM binder = SCM_MODULE_BINDER (interface);
+ SCM binder = SCM_MODULE_BINDER (_interface);
if (!SCM_FALSEP (binder))
/* 2. Custom binder */
{
- b = scm_call_3 (binder, interface, sym, SCM_BOOL_F);
+ b = scm_call_3 (binder, _interface, sym, SCM_BOOL_F);
if (SCM_BOUND_THING_P (b))
- return interface;
+ return _interface;
}
}
/* 3. Search use list recursively. */
- interface = scm_module_import_interface (interface, sym);
- if (!SCM_FALSEP (interface))
- return interface;
+ _interface = scm_module_import_interface (_interface, sym);
+ if (!SCM_FALSEP (_interface))
+ return _interface;
uses = SCM_CDR (uses);
}
return SCM_BOOL_F;
diff --git a/libguile/posix.c b/libguile/posix.c
index b7b1b27b4..2269bc365 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -1162,6 +1162,7 @@ SCM_DEFINE (scm_putenv, "putenv", 1, 0, 0,
SCM_VALIDATE_STRING (1, str);
+#ifndef __MINGW32__
if (strchr (SCM_STRING_CHARS (str), '=') == NULL)
{
/* No '=' in argument means we should remove the variable from
@@ -1170,6 +1171,7 @@ SCM_DEFINE (scm_putenv, "putenv", 1, 0, 0,
unsetenv (SCM_STRING_CHARS (str));
}
else
+#endif
{
/* must make a new copy to be left in the environment, safe from gc. */
ptr = scm_malloc (SCM_STRING_LENGTH (str) + 1);
diff --git a/libguile/stime.c b/libguile/stime.c
index cecb49357..08276f9f4 100644
--- a/libguile/stime.c
+++ b/libguile/stime.c
@@ -561,7 +561,7 @@ SCM_DEFINE (scm_strftime, "strftime", 2, 0, 0,
environment. interrupts and thread switching must be deferred
until TZ is restored. */
char **oldenv = NULL;
- SCM *velts = SCM_VELTS (stime);
+ SCM *velts = (SCM *) SCM_VELTS (stime);
int have_zone = 0;
if (!SCM_FALSEP (velts[10]) && *SCM_STRING_CHARS (velts[10]) != 0)
diff --git a/libguile/threads.h b/libguile/threads.h
index aa33bd440..cebdc7b69 100644
--- a/libguile/threads.h
+++ b/libguile/threads.h
@@ -238,7 +238,7 @@ extern scm_t_key scm_i_thread_key;
They really refer to the root state of the running thread. */
#define SCM_THREAD_LOCAL_DATA (scm_i_plugin_getspecific (scm_i_root_state_key))
#define SCM_SET_THREAD_LOCAL_DATA(x) scm_i_set_thread_data(x)
-extern scm_t_key scm_i_root_state_key;
+SCM_API scm_t_key scm_i_root_state_key;
SCM_API void scm_i_set_thread_data (void *);
#endif /* SCM_THREADS_H */
diff --git a/libguile/win32-dirent.c b/libguile/win32-dirent.c
index 5f997bb12..080ec0982 100644
--- a/libguile/win32-dirent.c
+++ b/libguile/win32-dirent.c
@@ -33,7 +33,7 @@ opendir (const char * name)
if (!name || !*name)
return NULL;
- file = scm_malloc (strlen (name) + 3);
+ file = malloc (strlen (name) + 3);
strcpy (file, name);
if (file[strlen (name) - 1] != '/' && file[strlen (name) - 1] != '\\')
strcat (file, "/*");
@@ -46,10 +46,10 @@ opendir (const char * name)
return NULL;
}
- dir = scm_malloc (sizeof (DIR));
+ dir = malloc (sizeof (DIR));
dir->mask = file;
dir->fd = (int) hnd;
- dir->data = scm_malloc (sizeof (WIN32_FIND_DATA));
+ dir->data = malloc (sizeof (WIN32_FIND_DATA));
dir->allocation = sizeof (WIN32_FIND_DATA);
dir->size = dir->allocation;
dir->filepos = 0;
diff --git a/srfi/ChangeLog b/srfi/ChangeLog
index 133b4221a..0f49f554b 100644
--- a/srfi/ChangeLog
+++ b/srfi/ChangeLog
@@ -1,3 +1,10 @@
+2003-05-29 Stefan Jahn <stefan@lkcc.org>
+
+ * Makefile.am (libguile_srfi_srfi_1_la_LDFLAGS,
+ libguile_srfi_srfi_4_la_LDFLAGS,
+ libguile_srfi_srfi_13_14__la_LDFLAGS): Added the -no-undefined
+ option for the mingw32 build.
+
2003-05-13 Kevin Ryde <user42@zip.com.au>
* srfi-1.scm (delete): Fix predicate arg order to match srfi-1 spec.
diff --git a/srfi/Makefile.am b/srfi/Makefile.am
index 2c8eeab12..da52fa617 100644
--- a/srfi/Makefile.am
+++ b/srfi/Makefile.am
@@ -41,17 +41,17 @@ BUILT_SOURCES = srfi-1.x srfi-4.x srfi-13.x srfi-14.x
libguile_srfi_srfi_1_la_SOURCES = srfi-1.x srfi-1.c
libguile_srfi_srfi_1_la_LIBADD = ../libguile/libguile.la
-libguile_srfi_srfi_1_la_LDFLAGS = -export-dynamic \
+libguile_srfi_srfi_1_la_LDFLAGS = -no-undefined -export-dynamic \
-version-info @LIBGUILE_SRFI_SRFI_1_INTERFACE@
libguile_srfi_srfi_4_la_SOURCES = srfi-4.x srfi-4.c
libguile_srfi_srfi_4_la_LIBADD = ../libguile/libguile.la
-libguile_srfi_srfi_4_la_LDFLAGS = -export-dynamic \
+libguile_srfi_srfi_4_la_LDFLAGS = -no-undefined -export-dynamic \
-version-info @LIBGUILE_SRFI_SRFI_4_INTERFACE@
libguile_srfi_srfi_13_14_la_SOURCES = srfi-13.x srfi-13.c srfi-14.x srfi-14.c
libguile_srfi_srfi_13_14_la_LIBADD = ../libguile/libguile.la
-libguile_srfi_srfi_13_14_la_LDFLAGS = -export-dynamic \
+libguile_srfi_srfi_13_14_la_LDFLAGS = -no-undefined -export-dynamic \
-version-info @LIBGUILE_SRFI_SRFI_13_14_INTERFACE@
srfidir = $(datadir)/guile/$(GUILE_EFFECTIVE_VERSION)/srfi
diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog
index 02f51d522..4cdcdc0f5 100644
--- a/test-suite/ChangeLog
+++ b/test-suite/ChangeLog
@@ -1,3 +1,7 @@
+2003-05-29 Stefan Jahn <stefan@lkcc.org>
+
+ * standalone/Makefile.am: Setup to build on mingw32.
+
2003-05-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
* tests/elisp.test: Added missing quote around vector constants.
diff --git a/test-suite/standalone/Makefile.am b/test-suite/standalone/Makefile.am
index 22d199a03..d9a841960 100644
--- a/test-suite/standalone/Makefile.am
+++ b/test-suite/standalone/Makefile.am
@@ -11,7 +11,7 @@ TESTS_ENVIRONMENT = "${top_builddir}/pre-inst-guile-env"
test_cflags := \
-I$(top_srcdir)/test-suite/standalone \
-I$(top_srcdir) \
- -I$(top_srcdir)/libguile-ltdl
+ -I$(top_srcdir)/libguile-ltdl $(EXTRA_DEFS)
snarfcppopts = $(DEFS) $(DEFAULT_INCLUDES) $(CPPFLAGS) $(CFLAGS)
%.x: %.c
@@ -39,7 +39,7 @@ TESTS += test-gh
noinst_LTLIBRARIES += libtest-asmobs.la
libtest_asmobs_la_SOURCES = test-asmobs-lib.c test-asmobs-lib.x
libtest_asmobs_la_CFLAGS = ${test_cflags}
-libtest_asmobs_la_LDFLAGS = -rpath `pwd` # so libtool will really build an .so
+libtest_asmobs_la_LDFLAGS = -no-undefined -rpath `pwd` # so libtool will really build an .so
libtest_asmobs_la_LIBADD = ${top_builddir}/libguile/libguile.la
BUILT_SOURCES += test-asmobs-lib.x
check_SCRIPTS += test-asmobs