* configure.in (isinf, isnan): Detect macro versions as well as
functions, since C99 specifies them as macros and that's all HP-UX
has. Reported by Andreas Voegele.
* configure.in: Checking for __int64 as possible candidate for
the SCM_I_GSC_T_INT64 define.
2003-06-14 Stefan Jahn <stefan@lkcc.org>
* threads.h: Redefined scm_getspecific() and scm_setspecific()
to be functions instead of macros.
* threads.c: Conditionalized inclusion of <sys/time.h> and
<unistd.h>.
(scm_getspecific, scm_setspecific): Made these two function
real part of the API.
* posix.c (s_scm_putenv): Added some code to make a
(putenv "FOO="), i.e. setting an empty string, work also on
Win32 systems. Thanks to Kevin Ryde for the proposal.
* configure.in: Checking for unsetenv().
2003-05-30 Stefan Jahn <stefan@lkcc.org>
* posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
appropriately for mingw32 hosts.
* numbers.h: Defining copysign(), isnan() and finite() to
be prefixed by a single '_' for mingw32 hosts.
* 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.
config.h, and public, scmconfig.h, configuration headers. Added a
fair amount of code to track down new required types: scm_t_uint8,
scm_t_uint16, scm_t_uint32, scm_t_int8, scm_t_int16, scm_t_int32,
and to detect optional types scm_t_uint64, scm_t_in64, long long,
unsigned long long, scm_t_ptrdiff, intptr_t, and uintptr_t.
(SCM_I_GSC_T_PTRDIFF): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_NEEDS_INTTYPES_H): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_NEEDS_STDINT_H): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_UINT8): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_UINT16): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_UINT32): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_UINT64): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_INT8): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_INT16): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_INT32): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_T_INT64): gen-scmconfig.h.in AC_SUBST var.
(USE_PTHREAD_THREADS): removed - handled by gen-scmconfig.c.
(USE_NULL_THREADS): removed - handled by gen-scmconfig.c.
(USE_COOP_THREADS): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_USE_PTHREAD_THREADS): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_USE_NULL_THREADS): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_USE_COOP_THREADS): gen-scmconfig.h.in AC_SUBST var.
(STACK_GROWS_UP): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_STACK_GROWS_UP): gen-scmconfig.h.in AC_SUBST var.
(GUILE_DEBUG_FREELIST): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_GUILE_DEBUG_FREELIST): gen-scmconfig.h.in AC_SUBST var.
(GUILE_DEBUG): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_GUILE_DEBUG): gen-scmconfig.h.in AC_SUBST var.
(SCM_ENABLE_DEPRECATED): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_ENABLE_DEPRECATED): gen-scmconfig.h.in AC_SUBST var.
(HAVE_ARRAYS): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_HAVE_ARRAYS): gen-scmconfig.h.in AC_SUBST var.
(SCM_ENABLE_ELISP): removed - handled by gen-scmconfig.c.
(SCM_I_GSC_ENABLE_ELISP): gen-scmconfig.h.in AC_SUBST var.
(SCM_I_GSC_C_INLINE): gen-scmconfig.h.in AC_SUBST var.
(DEBUG_EXTENSIONS): removed - handled by gen-scmconfig.c.
(READER_EXTENSIONS): removed - handled by gen-scmconfig.c.
(USE_THREADS): removed - handled by gen-scmconfig.c.
(GUILE_ISELECT): removed - handled by gen-scmconfig.c.
(DYNAMIC_LINKING): removed - handled by gen-scmconfig.c.
(SCM_NONREC_CRITICAL_SECTION_START,
SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
SCM_REC_CRITICAL_SECTION_END): New macros.
(SCM_CRITICAL_SECTION_START/END): Defined here.
* eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
the three calls to scm_m_expand_body.
* gc.h: #include "libguile/pthread-threads.h";
(SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
* gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
scm_t_key;
* gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
access.
* gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
* gc-freelist.c, threads.c (really_launch): Use
SCM_FREELIST_CREATE.
* gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
* gc.c (scm_i_expensive_validation_check, scm_gc,
scm_gc_for_newcell): Put threads to sleep before doing GC-related
heap administration so that those pieces of code are executed
single-threaded. We might consider rewriting these code sections
in terms of a "call_gc_code_singly_threaded" construct instead of
calling the pair of scm_i_thread_put_to_sleep () and
scm_i_thread_wake_up (). Also, we would want to have as many of
these sections eleminated.
* init.c (scm_init_guile_1): Call scm_threads_prehistory.
* inline.h: #include "libguile/threads.h"
* pthread-threads.h: Macros now conform more closely to the
pthreads interface. Some of them now take a second argument.
* threads.c, threads.h: Many changes.
* configure.in: Temporarily replaced "copt" threads option with new
option "pthreads".
(USE_PTHREAD_THREADS): Define if pthreads configured.
(AC_CONFIG_FILES): separate out the files that need to be chmodded
at the end of config.status. Our "default" approach using
AC_CONFIG_COMMANDS quit working (and would have needed to be
changed to AC_CONFIG_COMMANDS(,,CMDS) rather than our previous
AC_CONFIG_COMMANDS(default,CMDS), but I the new approach, using
per-file AC_CONFIG_FILES calls appears to be more "correct" in the
current autoconf docs.