* 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.
* configure.in: Include `win32-socket.o' in the list of object
files if networking is enabled on Win32.
2001-11-07 Stefan Jahn <stefan@lkcc.org>
* win32-socket.[ch]: New files. Defines Winsock-API error codes
and makes them available through Guile. That is because the
Winsock-API does not store its errors in `errno' and thus cannot
return error messages via `strerror (errno)'.
* socket.c (scm_init_socket): Initialize `win32-socket' part
here under M$-Windows.
* numbers.h: Added missing declaration of
`scm_sys_check_number_conversions()'.
* error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
and use in `(strerror)' and `(system-error)'.
* Makefile.am (EXTRA_libguile_la_SOURCES): Added
`win32-socket.[ch]' to extra source and header files.
* NEWS: Corrected remarks about SCM_API.
* configure.in: Defining USE_DLL_IMPORT definition to indicate
usage of DLL import macros in `libguile/__scm.h'.
(LIBOBJS): Removed `fileblocks.o' from the list of object files.
Somehow Jim Blandy's patch from 1997 did not survive.
2001-11-04 Stefan Jahn <stefan@lkcc.org>
* configure.in (EXTRA_DEFS): Follow-up patch. Using SCM_IMPORT
instead of __SCM_IMPORT__.
* readline.c (scm_readline_init_ports): Disable input/output
stream redirection for Win32. The readline package for Win32
does not support this. The guile-readline library works fine
for command line editing.
* readline.h (SCM_RL_API): Renamed __FOO__ macros into FOO.
2001-11-04 Stefan Jahn <stefan@lkcc.org>
* Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
here (was at guile_LDADD) which describes the dependency
correctly and allows a clean build on Win32.
* __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
into FOO.
* __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
import macros for external libraries (libcrypt, libqthreads,
libreadline and libregex).
* coop-defs.h: Include <winsock2.h> for `struct timeval'.
* posix.c (flock): Added support for flock() in M$-Windows.
* guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
of __SCM_IMPORT__.
* fports.c (getflags): Differentiate reading and writing pipes
descriptors.
* filesys.c (S_IS*): Redefine all of the S_IS*() macros for
M$-Windows.
* coop.c (coop_condition_variable_timed_wait_mutex): Use
conditionalized error code if `ETIMEDOUT' is not available.
(scm_thread_usleep): Remove bogus declaration of `struct timeval
timeout'.
* numbers.c (PTRDIFF_MIN): Moved this definition where it actually
belongs. That is because NO_PREPRO_MAGIC gets undefined after
each inclusion of `num2integral.i.c'.
(SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
2001-11-04 Stefan Jahn <stefan@lkcc.org>
* md/Makefile.am (EXTRA_DIST): Added `i386.asm'.
* md/i386.asm: New file. Contains the Intel syntax version for
nasm/tasm/masm of the file `i386.s'.
* qt.h.in: Definition of QT_API, QT_IMPORT and QT_EXPORT.
Prefixed each symbols which is meant to go into a DLL.
* Makefile.am (libqthreads_la_LDFLAGS): Put `-no-undefined'
into LDFLAGS to support linkers which do not allow unresolved
symbols inside shared libraries.
(EXTRA_DIST): Add `libqthreads.def', which is an export file
definition for M$-Windows. It defines exported symbols. This is
necessary because the M$VC linker does not know how to export
assembler symbols into a DLL.
2001-11-04 Stefan Jahn <stefan@lkcc.org>
* srfi-13.h, srfi-14.h, srfi-4.h: Follow-up patch. Renamed
__FOO__ macros into FOO.
2001-11-04 Stefan Jahn <stefan@lkcc.org>
* tests/ports.test: Run (close-port) before (delete-file) if
necessary/advisory.
on Win32 platforms.
Checking for `ws2_32.dll', `winsock2.h', add `uname.o' and
`dirent.o' and define extra compiler flags necessary to build
clean dlls.
Check for `regcomp()' inside `-lregex'.