Commit graph

520 commits

Author SHA1 Message Date
Daniel Kochmański
237d096939 c/makefile: add separate vars to hold thread and unicode files 2026-03-13 19:23:05 +01:00
Marius Gerbershagen
b58eb33283 disable floating point exceptions on android 2026-03-07 16:20:05 +01:00
Marius Gerbershagen
7932ffb1be fix cross compilation to a Windows target
Cross compilation of ECL itself:

- The windres program comes with the usual cross compilation target
  prefixes, use AC_CHECK_TOOL to select the right one.
- For c::update-compiler-features, we need to check the features of the
  host system instead of the target because that determines the
  executable prefix of the ecl_min stub.

Cross compilation of user code: We just have to replace some read time
conditionals by runtime checks.

Further notes on Windows cross compilation using mingw:

- Our old copy of libgmp doesn't work, one needs to update that before
  compiling.
- ASDF fails to compile unless XDG_CACHE_HOME is set (it tries and
  fails to find a Windows cache directory if XDG_CACHE_HOME is empty).
- The `windres` program may be located in a separate package from the
  mingw compiler. On debian, I had to install binutils-mingw-w64 and
  gcc-mingw-w64.
2025-11-22 16:25:42 +01:00
Marius Gerbershagen
fb321885db cmp: easier cross-compilation of user code
The procedure works as follows. First, cross compile ECL itself. In
this step, we dump the configuration of the compiler. This
configuration can then be later restored to put the host compiler into
cross compilation mode using a new option to WITH-COMPILATION-UNIT.

The following changes to the public interface are introduced:

- WITH-COMPILATION-UNIT now takes a new :target keyword
- New functions C:WRITE-TARGET-INFO, C:READ-TARGET-INFO to dump and
  restore the config
- The environment parameters to TYPEP and SUBTYPEP are no longer
  unused. User macros can query type relationships in the target
  environment using these parameters.

Internal changes in the compiler include:

- Target dependent variables in the compiler are defined using a new
  DEFCONFIG macro. C:WRITE-TARGET-INFO simply writes the value of
  these variables to a file.
- The distinction between target types and host types already exists
  in the compiler. In this commit, we just register the target types in
  the compiler environment when we change the compiler configuration.
2025-11-21 19:08:14 +01:00
Sebastien Marie
b427defc39 openbsd: implement FILE_CNT() on opaque FILE
On OpenBSD, FILE is opaque (starting from upcoming OpenBSD 7.8).
FILE_CNT() macro is implementable using `size_t __freadahead(FILE *stream)` function (provided for gnulib compat).
2025-07-23 08:51:20 +00:00
Marius Gerbershagen
f0ef267ce7 update compilation instructions for android
With recent versions of the android NDK, there is no need to create a
separate toolchain anymore. Moreover, the LDFLAGS and CPPFLAGS are
obsolete. Also, we can't call the C compiler with a `-Dandroid`
argument as we used to since that conflicts with uses of the `android`
identifier within the header files of the android C standard library.
Therefore, we change from `thehost=android` to `thehost=ANDROID` in
uppercase. Finally, make the test script run more reliably by starting
an adb server before we change TMPDIR.
2025-07-19 16:33:22 +02:00
Marius Gerbershagen
d51ce511f6 handle *features* entirely in the configure script
Previously, there were a lot of places that turned on or off C macros
which finally determined whether some particular entry was found
in *features* or not. Now, we do this all in the configure script.
This is necessary for cross compilation from a non-compatible host
which may have different features.
2025-07-19 16:33:22 +02:00
Marius Gerbershagen
887115fe95 cmp: implement cross compilation from host compiler with different word size 2025-07-19 16:31:55 +02:00
Daniel Kochmański
0f4e9b1e17 core: factor out process managament from thread managament
This is a preliminary step towards coroutines and for switching global env in
single-threaded builds.
2025-03-31 20:44:46 +02:00
Daniel Kochmański
f73d4babbd Revert "Merge branch 'remove-small-cons' into 'develop'" 2024-12-15 10:01:30 +00:00
Daniel Kochmański
31fdffa6ab core: remove the "small-cons" feature and build flag 2024-12-06 13:04:34 +00:00
Daniel Kochmański
3f8e82351d build: remove a workaround in bdwgc masking a bug in bdwgc 8.2.4 2024-12-05 22:28:33 +01:00
Daniel Kochmański
6246c8aa85 build: regenerate configure script with autoconf 2.72 2024-12-05 22:27:10 +01:00
Marius Gerbershagen
c0d0f2f891 restore ability to compile without --disable-shared on emscripten
SHARED_LDFLAGS, BUNDLE_LDFLAGS and PROGRAM_LDFLAGS are ignored with
--disable-shared.
2024-08-17 13:11:53 +02:00
Marius Gerbershagen
003a7edd6b emscripten: add linker flag to allow bdwgc to work correctly
See https://github.com/ivmai/bdwgc/issues/650 for more discussion.
2024-08-17 12:43:02 +02:00
Daniel Kochmański
ac2b53d66a emscripten: don't enable shared in the configure script 2024-06-16 17:55:50 +02:00
Marius Gerbershagen
c6a47b2299 make sure that bindir, libdir, etc. are correct for flatinstall target
Fixes #318
2024-05-11 21:39:28 +02:00
Daniel Kochmański
cf7c195018 Release 24.5.10 2024-05-10 13:13:21 +02:00
Marius Gerbershagen
6c7f8be6a9 use flatinstall as install target for emscripten 2024-03-10 14:48:12 +01:00
Marius Gerbershagen
f6083876fd support shared libraries for the emscripten target 2024-03-10 14:48:12 +01:00
Daniel Kochmański
0af7368857 release: update changelog and version number before the release
Fixes #706.
2023-09-03 13:46:23 +02:00
Marius Gerbershagen
4db4d00c20 add workaround for broken bdwgc version 8.2.4 2023-08-13 21:37:34 +02:00
Daniel Kochmański
4b02cea2d2 build: add a preliminary support for the emscripten target
- add a host target wasm32-unknown-emscripten
- update config.sub and config.guess
- invoke autoreconf with gnu autoconf 2.71
- update build scripts to account for .html extensions
2023-06-13 22:07:08 +02:00
Marius Gerbershagen
c300f2ee3a threads.h: use clock_monotonic for timeouts on posix if available
Prevents threads from timing out too early or too late if the system
clock is adjusted while waiting.
2023-05-27 18:36:16 +02:00
Marius Gerbershagen
3d809dab47 autoconf: allow building with the bundled gmp library on arm apple devices
Since our ancient LGPL licensed copy of libgmp only knows about
PowerPC apple devices, build it using the fallback plain C
implementation as on x86.

Closes #689.
2023-01-14 15:22:17 +01:00
Marius Gerbershagen
b27580c9b8 regenerate configure
Was forgotten after commit 2afa70807e
2023-01-05 17:22:25 +01:00
Marius Gerbershagen
5f65deea5b multithreading: implement optional timeout for mp:get-lock 2021-08-29 17:25:21 +02:00
Marius Gerbershagen
806336ed2e multithreading: read-write-lock improvements
Read-write locks are always provided; if no operating system
primitives exist, emulate them using ordinary locks. Also provide a
Windows implementation.
2021-08-29 17:25:21 +02:00
Marius Gerbershagen
de5d56b4c6 multithreading: replace various synchronization objects by native mutexes
- Spinlocks have been replaced by ordinary locks. Without access to
  the underyling scheduler, spinlocks provide no performace benefit
  and may even be harmful in case of high contention.
- Synchronization of process creation and exiting has been simplified.
  Instead of a spinlock, a barrier and atomic operations we now use
  only a single lock protecting the shared process state and a
  condition variable for implementing process joins.
- Some locks which were implemented using Lisp objects now directly
  use a native mutex.
- Our own mutex implementation has been removed as it is now unused.
2021-08-29 17:23:20 +02:00
Marius Gerbershagen
a488595241 add convenience methods for de-/encoding strings and wide-strings from C 2021-08-19 13:51:55 +02:00
Marius Gerbershagen
ecd86a2541 unicode: update unicode character database to version 13.0.0 2021-05-07 21:09:09 +02:00
Marius Gerbershagen
5cd97358af 21.2.1 release 2021-01-30 19:27:41 +01:00
Pritam Baral
a1b2909b8a s/TCP/ECL_TCP/ among preprocessor defines 2020-11-22 21:04:16 +00:00
Dima Pasechnik
cd2f19fedb exit() prototype is in stdlib.h, include it
this is needed to support Apple's clang 12, the
compiler in Xcode 12 on macOS 10.15 and upcoming macOS 11.

configure was regenerated by running autoreconf -ivf
with autoconf version 2.69
2020-09-18 13:18:56 +01:00
Christopher Chavez
0f3d6e08d1 Fix spelling 2020-09-11 02:11:26 +00:00
Dima Pasechnik
f291264ffc checking that makeinfo works; better messages 2020-07-20 09:35:58 +01:00
Daniel Kochmański
20ccc68af0 Merge branch 'c-stack-fixes' into 'develop'
Fix #596

Closes #596

See merge request embeddable-common-lisp/ecl!215
2020-06-15 10:36:46 +00:00
Marius Gerbershagen
90043d205c stacks: fix default C stack size
The ifdef in config-internal.h was buggy since RLIMIT_STACK is only defined after
sys/resource.h has been included which it wasn't. This lead to the stack size always being
increased to at least the default of 1 MB. To fix this, we move the check for RLIMIT_STACK
to the configure script.
2020-06-11 15:16:10 +02:00
Dima Pasechnik
ff74b3b8e7 make sure C compiler conforms to C99 standard
this is needed e.g. for constructions like
for (int i,...); by default some compilers in older Linux
systems, eg Ubuntu Trusty, still default to C89, giving a build error.
This fix will try to make sure that C99 is used, with an extra option.
2020-06-07 10:11:26 +01:00
Dima Pasechnik
4bce0a0e3c fix issue #593
make check for makeinfo conditional on successful
check for install-info
2020-05-25 11:14:42 +01:00
Marius Gerbershagen
e0bf0f5ac2 gc: remove unnecessary workarounds for old bdwgc versions 2020-05-10 19:47:05 +02:00
Daniel Kochmański
eea597de34 20.4.24 release
Announcement proposal. When this is merged to the develop branch, then
we should make a PR against master and merge. Then we shall publish
tarballs and the announcement on the website.
2020-04-21 11:24:02 +02:00
Marius Gerbershagen
350c493cb4 configure: only disable fpe but not ieee-fp for mingw
Due to recent changes, it is possible to have infinity and NaN, but
without floating point exceptions.
2020-03-01 18:49:49 +01:00
Marius Gerbershagen
22ad495e26 ieee-fp: allow for infinity and NaN without floating point exceptions 2020-01-11 17:21:10 +01:00
Marius Gerbershagen
e65e23ee8a configure: check if feenableexcept is actually working
Not all processors will signal floating point exceptions even when
told so, for example the Raspberry Pi as Dave Richards pointed out on
the ecl-devel mailing list.
2020-01-11 15:37:15 +01:00
Marius Gerbershagen
d7b2dfb722 Change handling of C stack size
Previously: unconditionally use the size from ECL_OPT_C_STACK_SIZE if
it is larger than the OS provided value and if possible resize the
stack at runtime.

Now: Use ECL_OPT_C_STACK_SIZE if provided. Otherwise, use a) the OS
provided value if we can resize the stack at runtime (for Unix) or b)
the new build option ECL_DEFAULT_C_STACK_SIZE (1 MB) if we can set the
stack size at link time (for Windows).
2019-12-26 19:13:31 +01:00
Marius Gerbershagen
dbe43c09e6 libffi: disable building the documentation 2019-12-18 21:38:59 +01:00
Marius Gerbershagen
5860f42f88 ffi: Update libffi to version 3.3 2019-12-09 19:49:30 +01:00
Marius Gerbershagen
a2319d3150 unixsys: check for system() in configure
Don't let a non-available system() function (happens e.g. on iOS)
prevent us from compiling ECL.
2019-12-08 10:26:52 +01:00
Daniel Kochmański
8b82c98cac Merge branch 'alt-fix-513' into 'develop'
Fix 513 2nd try

Closes #514

See merge request embeddable-common-lisp/ecl!159
2019-08-16 18:44:23 +00:00