mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-05-10 17:41:10 -07:00
Previously we've opencoded calls to these functions, although they may be nicely abstracted with static inline functions. This change improves code readibility and portability.
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
/* -*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*- */
|
|
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
|
|
|
/*
|
|
* Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
|
* Copyright (c) 1990, Giuseppe Attardi.
|
|
*
|
|
* See file 'LICENSE' for the copyright details.
|
|
*
|
|
*/
|
|
|
|
/* ecl.h -- Main headers for development of ECL */
|
|
|
|
#ifndef ECL_ECL_H
|
|
#define ECL_ECL_H
|
|
|
|
#include <sys/types.h> /* size_t, pthread_t, pthread_mutex_t */
|
|
#ifdef __OpenBSD__ /* same, but for OpenBSD (bug in OpenBSD!) */
|
|
# include <pthread.h>
|
|
#endif
|
|
#include <stddef.h> /* NULL, ptrdiff_t */
|
|
#include <stdarg.h> /* va_list */
|
|
#include <setjmp.h> /* setjmp and buffers */
|
|
#include <stdio.h> /* FILE */
|
|
#include <stdbool.h>
|
|
/* Microsoft VC++ does not have va_copy() */
|
|
#if ( defined(_MSC_VER) && (_MSC_VER < 1800) ) || !defined(va_copy)
|
|
#define va_copy(dst, src) \
|
|
((void) memcpy(&(dst), &(src), sizeof(va_list)))
|
|
#endif
|
|
|
|
#ifndef ECL_FIXNUM_BITS
|
|
#include <ecl/config.h>
|
|
#endif
|
|
|
|
#ifdef ECL_BUILD
|
|
#include <ecl/config-internal.h>
|
|
#endif
|
|
|
|
/*
|
|
* The Boehm-Demers-Weiser garbage collector contains wrappers for
|
|
* dlopen and similar functions. These wrappers explicitely deactivate
|
|
* garbage collection. Since we have explicitely deactivated scanning
|
|
* shared libraries (alloc_2.d), we can get rid of this performance
|
|
* penalty.
|
|
*/
|
|
#if defined(GBC_BOEHM_GENGC)
|
|
#ifdef dlopen
|
|
# undef dlopen
|
|
#endif
|
|
#ifdef dlclose
|
|
# undef dlclose
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(ECL_MS_WINDOWS_HOST)
|
|
# ifndef WIN32_LEAN_AND_MEAN
|
|
# define WIN32_LEAN_AND_MEAN 1 /* Do not include winsock.h */
|
|
# include <windows.h>
|
|
# undef WIN32_LEAN_AND_MEAN
|
|
# else
|
|
# include <windows.h>
|
|
# endif
|
|
# ifdef ECL_THREADS
|
|
# undef ERROR
|
|
# ifdef GBC_BOEHM
|
|
# define CreateThread GC_CreateThread
|
|
# endif
|
|
# else
|
|
# error "The Windows ports cannot be built without threads."
|
|
# endif /* ECL_THREADS */
|
|
#endif /* ECL_MS_WINDOWS_HOST */
|
|
|
|
#ifdef ECL_SSE2
|
|
#include <xmmintrin.h>
|
|
#include <emmintrin.h>
|
|
#endif
|
|
|
|
#include <ecl/object.h>
|
|
#include <ecl/nucleus.h>
|
|
#include <ecl/external.h>
|
|
#include <ecl/cons.h>
|
|
#include <ecl/stacks.h>
|
|
#include <ecl/number.h>
|
|
#include <ecl/legacy.h>
|
|
#include <ecl/impl/math_fenv.h>
|
|
|
|
typedef void (*ecl_init_function_t)(cl_object block);
|
|
|
|
#endif /* ECL_H */
|