* 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.
--with-threads=no is equivalent to --with-threads=null. On platforms
that are not supported by QuickThreads, we also use the null-threads.
Thus, USE_THREADS is always defined now.
like to stay that way. If we want, we can turn it off by default
when we make the stable release, but I caught a lot of bugs this
way. Accomodate libguile-ltdl -- therea are some ltdl things that
are commented out now INCLTDL and LIBLTDL. I think we may not
need them anymore, but I'll leave them until we're sure. We also
killed off the libltdl dir and related options including the
AC_CONFIG_SUBDIRS. I also added some explicit tests for some
headers and functions that weren't listed but were in
scmconfig.h.in. though this may have been unnecessary.
defined. They don't do anything useful, especially since the
only case where DYNAMIC_LINKING is undefined seems to be
when --with-modules=no is given to configure, which is basically
requesting that the "dynamic linking module" be omitted.
* Makefile.am (libguile_la_SOURCES): move dynl.c from
libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
* extensions.c (load_extension): check DYNAMIC_LINKING for
scm_dynamic_call.
* init.c (scm_init_guile_1): check DYNAMIC_LINKING for
scm_init_dynamic_linking.
* configure.in: check dynamic linking before modules. Add dynl.c
if dynamic linking is available, i.e., unless --with-modules=no
was given to configure.
variables from ./GUILE-VERSION.
(LIBQTHREADS_INTERFACE_CURRENT): new AC_SUBST.
(LIBQTHREADS_INTERFACE_REVISION): new AC_SUBST.
(LIBQTHREADS_INTERFACE_AGE): new AC_SUBST.
(LIBQTHREADS_INTERFACE): new AC_SUBST.
(LIBGUILE_INTERFACE_CURRENT): new AC_SUBST.
(LIBGUILE_INTERFACE_REVISION): new AC_SUBST.
(LIBGUILE_INTERFACE_AGE): new AC_SUBST.
(LIBGUILE_INTERFACE): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_4_INTERFACE): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE): new AC_SUBST.
(LIBGUILE_SRFI_SRFI_13_14_INTERFACE): new AC_SUBST.
* convert.c, convert.h, convert.i.c: New files containing C
array to Scheme conversion helpers meant to be replacement
functions for the deprecated gh interface.
* Makefile.am: Setup rules for new `convert.*' files.
2002-01-31 Stefan Jahn <stefan@lkcc.org>
* configure.in: Add -DLIBLTDL_DLL_IMPORT to INCLTDL when using
`libltdl.dll'.
* configure.in (guile_cv_have_uint32_t): Look also in
`stdint.h' for uint32_t.
2002-01-28 Stefan Jahn <stefan@lkcc.org>
* symbols.c (scm_c_symbol2str): New function, replacement for
`gh_scm2newsymbol()'.
* strings.c (scm_c_substring2str): New function. Proper
replacement for `gh_get_substr()'.
* socket.c: Include `stdint.h' if available for the `uint32_t'
declaration.
* scmsigs.c (s_scm_sigaction): Initialize `chandler' (inhibits
compiler warning).
* backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
system libltdl when it's available. Aside from the normal reasons
to prefer installed shared libs, this means other apps that link
with libguile and also use libltdl will be more likely to work
right.
ptrdiff_t. Checking for a size also checks automatically for the
existence of the type, so we don't check for the existence of
uintptr_t, ptrdiff_t and long long ourselves.