diff --git a/docker/djgpp/build_quickjs.sh b/docker/djgpp/build_quickjs.sh index 99eeb54f2..8745ef8b2 100644 --- a/docker/djgpp/build_quickjs.sh +++ b/docker/djgpp/build_quickjs.sh @@ -1,8 +1,8 @@ cd -rm -rf quickjs-2024-01-13 -wget https://bellard.org/quickjs/quickjs-2024-01-13.tar.xz -tar xf quickjs-2024-01-13.tar.xz -cd quickjs-2024-01-13 +rm -rf quickjs-2025-09-13 +wget https://bellard.org/quickjs/quickjs-2025-09-13-2.tar.xz +tar xf quickjs-2025-09-13-2.tar.xz +cd quickjs-2025-09-13 patch -p1 < ../quickjs-dos.diff -make -f Makefile.dos prefix=$HOME -make -f Makefile.dos install prefix=$HOME +CFLAGS=-DNDEBUG make PREFIX=$HOME +make install PREFIX=$HOME diff --git a/docker/djgpp/quickjs-dos.diff b/docker/djgpp/quickjs-dos.diff index 3fbf510cc..2c50b61ca 100644 --- a/docker/djgpp/quickjs-dos.diff +++ b/docker/djgpp/quickjs-dos.diff @@ -1,480 +1,3 @@ -diff -Nru quickjs-2021-03-27/Makefile.dos quickjs-2021-03-27.new/Makefile.dos ---- quickjs-2021-03-27/Makefile.dos 1970-01-01 00:00:00.000000000 +0000 -+++ quickjs-2021-03-27.new/Makefile.dos 2022-06-08 21:28:12.212649535 +0000 -@@ -0,0 +1,473 @@ -+# -+# QuickJS Javascript Engine -+# -+# Copyright (c) 2017-2021 Fabrice Bellard -+# Copyright (c) 2017-2021 Charlie Gordon -+# -+# Permission is hereby granted, free of charge, to any person obtaining a copy -+# of this software and associated documentation files (the "Software"), to deal -+# in the Software without restriction, including without limitation the rights -+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+# copies of the Software, and to permit persons to whom the Software is -+# furnished to do so, subject to the following conditions: -+# -+# The above copyright notice and this permission notice shall be included in -+# all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -+# THE SOFTWARE. -+ -+ifeq ($(shell uname -s),Darwin) -+CONFIG_DARWIN=y -+endif -+# Windows cross compilation from Linux -+#CONFIG_WIN32=y -+# use link time optimization (smaller and faster executables but slower build) -+#CONFIG_LTO= -+# consider warnings as errors (for development) -+#CONFIG_WERROR=y -+# force 32 bit build for some utilities -+#CONFIG_M32=y -+ -+ifdef CONFIG_DARWIN -+# use clang instead of gcc -+CONFIG_CLANG=y -+CONFIG_DEFAULT_AR=y -+endif -+ -+# installation directory -+prefix=/usr/local -+ -+# use the gprof profiler -+#CONFIG_PROFILE=y -+# use address sanitizer -+#CONFIG_ASAN=y -+# include the code for BigInt/BigFloat/BigDecimal and math mode -+CONFIG_BIGNUM=y -+ -+OBJDIR=.o -+ -+ifdef CONFIG_WIN32 -+ ifdef CONFIG_M32 -+ CROSS_PREFIX=i686-w64-mingw32- -+ else -+ CROSS_PREFIX=x86_64-w64-mingw32- -+ endif -+ EXE=.exe -+else -+ CROSS_PREFIX=i586-pc-msdosdjgpp- -+ EXE=.exe -+endif -+ifdef CONFIG_CLANG -+ HOST_CC=clang -+ CC=$(CROSS_PREFIX)clang -+ CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d -+ CFLAGS += -Wextra -+ CFLAGS += -Wno-sign-compare -+ CFLAGS += -Wno-missing-field-initializers -+ CFLAGS += -Wundef -Wuninitialized -+ CFLAGS += -Wunused -Wno-unused-parameter -+ CFLAGS += -Wwrite-strings -+ CFLAGS += -Wchar-subscripts -funsigned-char -+ CFLAGS += -MMD -MF $(OBJDIR)/$(@F).d -+ ifdef CONFIG_DEFAULT_AR -+ AR=$(CROSS_PREFIX)ar -+ else -+ ifdef CONFIG_LTO -+ AR=$(CROSS_PREFIX)llvm-ar -+ else -+ AR=$(CROSS_PREFIX)ar -+ endif -+ endif -+else -+ HOST_CC=gcc -+ CC=$(CROSS_PREFIX)gcc -+ CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d -+ CFLAGS += -Wno-array-bounds -Wno-format-truncation -+ ifdef CONFIG_LTO -+ AR=$(CROSS_PREFIX)gcc-ar -+ else -+ AR=$(CROSS_PREFIX)ar -+ endif -+endif -+STRIP=$(CROSS_PREFIX)strip -+ifdef CONFIG_WERROR -+CFLAGS+=-Werror -+endif -+DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\" -+ifdef CONFIG_BIGNUM -+DEFINES+=-DCONFIG_BIGNUM -+endif -+ifdef CONFIG_WIN32 -+DEFINES+=-D__USE_MINGW_ANSI_STDIO # for standard snprintf behavior -+endif -+ -+CFLAGS+=$(DEFINES) -+CFLAGS_DEBUG=$(CFLAGS) -O0 -+CFLAGS_SMALL=$(CFLAGS) -Os -+CFLAGS_OPT=$(CFLAGS) -O2 -+CFLAGS_NOLTO:=$(CFLAGS_OPT) -+LDFLAGS=-g -+ifdef CONFIG_LTO -+CFLAGS_SMALL+=-flto -+CFLAGS_OPT+=-flto -+LDFLAGS+=-flto -+endif -+ifdef CONFIG_PROFILE -+CFLAGS+=-p -+LDFLAGS+=-p -+endif -+ifdef CONFIG_ASAN -+CFLAGS+=-fsanitize=address -fno-omit-frame-pointer -+LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -+endif -+ifdef CONFIG_WIN32 -+LDEXPORT= -+else -+#LDEXPORT=-rdynamic -+endif -+ -+PROGS=qjs$(EXE) qjsc$(EXE) -+#run-test262 -+ifneq ($(CROSS_PREFIX),) -+QJSC_CC=gcc -+QJSC=./host-qjsc -+PROGS+=$(QJSC) -+else -+QJSC_CC=$(CC) -+QJSC=./qjsc$(EXE) -+endif -+ifndef CONFIG_WIN32 -+#PROGS+=qjscalc -+endif -+ifdef CONFIG_M32 -+PROGS+=qjs32 qjs32_s -+endif -+PROGS+=libquickjs.a -+ifdef CONFIG_LTO -+PROGS+=libquickjs.lto.a -+endif -+ -+# examples -+ifeq ($(CROSS_PREFIX),) -+ifdef CONFIG_ASAN -+PROGS+= -+else -+PROGS+=examples/hello examples/hello_module examples/test_fib -+ifndef CONFIG_DARWIN -+PROGS+=examples/fib.so examples/point.so -+endif -+endif -+endif -+ -+all: $(OBJDIR) $(OBJDIR)/quickjs.check.o $(OBJDIR)/qjs.check.o $(PROGS) -+ -+QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/libregexp.o $(OBJDIR)/libunicode.o $(OBJDIR)/cutils.o $(OBJDIR)/quickjs-libc.o -+ -+QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS) -+ifdef CONFIG_BIGNUM -+QJS_LIB_OBJS+=$(OBJDIR)/libbf.o -+QJS_OBJS+=$(OBJDIR)/qjscalc.o -+endif -+ -+HOST_LIBS=-lm -+#-ldl -+# -lpthread -+LIBS=-lm -+ifndef CONFIG_WIN32 -+#LIBS+=-ldl -lpthread -+endif -+LIBS+=$(EXTRA_LIBS) -+ -+$(OBJDIR): -+ mkdir -p $(OBJDIR) $(OBJDIR)/examples $(OBJDIR)/tests -+ -+qjs$(EXE): $(QJS_OBJS) -+ $(CC) $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) -+ -+qjs-debug$(EXE): $(patsubst %.o, %.debug.o, $(QJS_OBJS)) -+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+qjsc$(EXE): $(OBJDIR)/qjsc.o $(QJS_LIB_OBJS) -+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+ifneq ($(CROSS_PREFIX),) -+ -+$(QJSC): $(OBJDIR)/qjsc.host.o \ -+ $(patsubst %.o, %.host.o, $(QJS_LIB_OBJS)) -+ $(HOST_CC) $(LDFLAGS) -o $@ $^ $(HOST_LIBS) -+ -+endif #CROSS_PREFIX -+ -+QJSC_DEFINES:=-DCONFIG_CC=\"$(QJSC_CC)\" -DCONFIG_PREFIX=\"$(prefix)\" -+ifdef CONFIG_LTO -+QJSC_DEFINES+=-DCONFIG_LTO -+endif -+QJSC_HOST_DEFINES:=-DCONFIG_CC=\"$(HOST_CC)\" -DCONFIG_PREFIX=\"$(prefix)\" -+ -+$(OBJDIR)/qjsc.o: CFLAGS+=$(QJSC_DEFINES) -+$(OBJDIR)/qjsc.host.o: CFLAGS+=$(QJSC_HOST_DEFINES) -+ -+qjs32: $(patsubst %.o, %.m32.o, $(QJS_OBJS)) -+ $(CC) -m32 $(LDFLAGS) $(LDEXPORT) -o $@ $^ $(LIBS) -+ -+qjs32_s: $(patsubst %.o, %.m32s.o, $(QJS_OBJS)) -+ $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) -+ @size $@ -+ -+qjscalc: qjs -+ ln -sf $< $@ -+ -+ifdef CONFIG_LTO -+LTOEXT=.lto -+else -+LTOEXT= -+endif -+ -+libquickjs$(LTOEXT).a: $(QJS_LIB_OBJS) -+ $(AR) rcs $@ $^ -+ -+ifdef CONFIG_LTO -+libquickjs.a: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) -+ $(AR) rcs $@ $^ -+endif # CONFIG_LTO -+ -+repl.c: $(QJSC) repl.js -+ $(QJSC) -c -o $@ -m repl.js -+ -+qjscalc.c: $(QJSC) qjscalc.js -+ $(QJSC) -fbignum -c -o $@ qjscalc.js -+ -+ifneq ($(wildcard unicode/UnicodeData.txt),) -+$(OBJDIR)/libunicode.o $(OBJDIR)/libunicode.m32.o $(OBJDIR)/libunicode.m32s.o \ -+ $(OBJDIR)/libunicode.nolto.o: libunicode-table.h -+ -+libunicode-table.h: unicode_gen -+ ./unicode_gen unicode $@ -+endif -+ -+#run-test262: $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS) -+# $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+#run-test262-debug: $(patsubst %.o, %.debug.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) -+# $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+#run-test262-32: $(patsubst %.o, %.m32.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS)) -+# $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+# object suffix order: nolto, [m32|m32s] -+ -+$(OBJDIR)/%.o: %.c | $(OBJDIR) -+ $(CC) $(CFLAGS_OPT) -c -o $@ $< -+ -+$(OBJDIR)/%.host.o: %.c | $(OBJDIR) -+ $(HOST_CC) $(CFLAGS_OPT) -c -o $@ $< -+ -+$(OBJDIR)/%.pic.o: %.c | $(OBJDIR) -+ $(CC) $(CFLAGS_OPT) -fPIC -DJS_SHARED_LIBRARY -c -o $@ $< -+ -+$(OBJDIR)/%.nolto.o: %.c | $(OBJDIR) -+ $(CC) $(CFLAGS_NOLTO) -c -o $@ $< -+ -+$(OBJDIR)/%.m32.o: %.c | $(OBJDIR) -+ $(CC) -m32 $(CFLAGS_OPT) -c -o $@ $< -+ -+$(OBJDIR)/%.m32s.o: %.c | $(OBJDIR) -+ $(CC) -m32 $(CFLAGS_SMALL) -c -o $@ $< -+ -+$(OBJDIR)/%.debug.o: %.c | $(OBJDIR) -+ $(CC) $(CFLAGS_DEBUG) -c -o $@ $< -+ -+$(OBJDIR)/%.check.o: %.c | $(OBJDIR) -+ $(CC) $(CFLAGS) -DCONFIG_CHECK_JSVALUE -c -o $@ $< -+ -+regexp_test: libregexp.c libunicode.c cutils.c -+ $(CC) $(LDFLAGS) $(CFLAGS) -DTEST -o $@ libregexp.c libunicode.c cutils.c $(LIBS) -+ -+unicode_gen: $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o libunicode.c unicode_gen_def.h -+ $(HOST_CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o -+ -+clean: -+ rm -f repl.c qjscalc.c out.c -+ rm -f *.a *.o *.d *~ unicode_gen regexp_test $(PROGS) -+ rm -f hello.c test_fib.c -+ rm -f examples/*.so tests/*.so -+ rm -rf $(OBJDIR)/ *.dSYM/ qjs-debug -+ rm -rf run-test262-debug run-test262-32 -+ -+install: all -+ mkdir -p "$(DESTDIR)$(prefix)/bin" -+ $(STRIP) qjs$(EXE) qjsc$(EXE) -+ install -m755 qjs$(EXE) qjsc$(EXE) "$(DESTDIR)$(prefix)/bin" -+# ln -sf qjs "$(DESTDIR)$(prefix)/bin/qjscalc" -+ mkdir -p "$(DESTDIR)$(prefix)/lib/quickjs" -+ install -m644 libquickjs.a "$(DESTDIR)$(prefix)/lib/quickjs" -+ifdef CONFIG_LTO -+ install -m644 libquickjs.lto.a "$(DESTDIR)$(prefix)/lib/quickjs" -+endif -+ mkdir -p "$(DESTDIR)$(prefix)/include/quickjs" -+ install -m644 quickjs.h quickjs-libc.h "$(DESTDIR)$(prefix)/include/quickjs" -+ -+############################################################################### -+# examples -+ -+# example of static JS compilation -+HELLO_SRCS=examples/hello.js -+HELLO_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ -+ -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ -+ -fno-date -fno-module-loader -+ifdef CONFIG_BIGNUM -+HELLO_OPTS+=-fno-bigint -+endif -+ -+hello.c: $(QJSC) $(HELLO_SRCS) -+ $(QJSC) -e $(HELLO_OPTS) -o $@ $(HELLO_SRCS) -+ -+ifdef CONFIG_M32 -+examples/hello: $(OBJDIR)/hello.m32s.o $(patsubst %.o, %.m32s.o, $(QJS_LIB_OBJS)) -+ $(CC) -m32 $(LDFLAGS) -o $@ $^ $(LIBS) -+else -+examples/hello: $(OBJDIR)/hello.o $(QJS_LIB_OBJS) -+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+endif -+ -+# example of static JS compilation with modules -+HELLO_MODULE_SRCS=examples/hello_module.js -+HELLO_MODULE_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ -+ -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ -+ -fno-date -m -+examples/hello_module: $(QJSC) libquickjs$(LTOEXT).a $(HELLO_MODULE_SRCS) -+ $(QJSC) $(HELLO_MODULE_OPTS) -o $@ $(HELLO_MODULE_SRCS) -+ -+# use of an external C module (static compilation) -+ -+test_fib.c: $(QJSC) examples/test_fib.js -+ $(QJSC) -e -M examples/fib.so,fib -m -o $@ examples/test_fib.js -+ -+examples/test_fib: $(OBJDIR)/test_fib.o $(OBJDIR)/examples/fib.o libquickjs$(LTOEXT).a -+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -+ -+examples/fib.so: $(OBJDIR)/examples/fib.pic.o -+ $(CC) $(LDFLAGS) -shared -o $@ $^ -+ -+examples/point.so: $(OBJDIR)/examples/point.pic.o -+ $(CC) $(LDFLAGS) -shared -o $@ $^ -+ -+############################################################################### -+# documentation -+ -+DOCS=doc/quickjs.pdf doc/quickjs.html doc/jsbignum.pdf doc/jsbignum.html -+ -+build_doc: $(DOCS) -+ -+clean_doc: -+ rm -f $(DOCS) -+ -+doc/%.pdf: doc/%.texi -+ texi2pdf --clean -o $@ -q $< -+ -+doc/%.html.pre: doc/%.texi -+ makeinfo --html --no-headers --no-split --number-sections -o $@ $< -+ -+doc/%.html: doc/%.html.pre -+ sed -e 's||\n|' < $< > $@ -+ -+############################################################################### -+# tests -+ -+ifndef CONFIG_DARWIN -+test: tests/bjson.so examples/point.so -+endif -+ifdef CONFIG_M32 -+test: qjs32 -+endif -+ -+test: qjs -+ ./qjs tests/test_closure.js -+ ./qjs tests/test_language.js -+ ./qjs tests/test_builtin.js -+ ./qjs tests/test_loop.js -+ ./qjs tests/test_std.js -+ ./qjs tests/test_worker.js -+ifndef CONFIG_DARWIN -+ifdef CONFIG_BIGNUM -+ ./qjs --bignum tests/test_bjson.js -+else -+ ./qjs tests/test_bjson.js -+endif -+ ./qjs examples/test_point.js -+endif -+ifdef CONFIG_BIGNUM -+ ./qjs --bignum tests/test_op_overloading.js -+ ./qjs --bignum tests/test_bignum.js -+ ./qjs --qjscalc tests/test_qjscalc.js -+endif -+ifdef CONFIG_M32 -+ ./qjs32 tests/test_closure.js -+ ./qjs32 tests/test_language.js -+ ./qjs32 tests/test_builtin.js -+ ./qjs32 tests/test_loop.js -+ ./qjs32 tests/test_std.js -+ ./qjs32 tests/test_worker.js -+ifdef CONFIG_BIGNUM -+ ./qjs32 --bignum tests/test_op_overloading.js -+ ./qjs32 --bignum tests/test_bignum.js -+ ./qjs32 --qjscalc tests/test_qjscalc.js -+endif -+endif -+ -+stats: qjs qjs32 -+ ./qjs -qd -+ ./qjs32 -qd -+ -+microbench: qjs -+ ./qjs tests/microbench.js -+ -+microbench-32: qjs32 -+ ./qjs32 tests/microbench.js -+ -+# ES5 tests (obsolete) -+#test2o: run-test262 -+# time ./run-test262 -m -c test262o.conf -+ -+#test2o-32: run-test262-32 -+# time ./run-test262-32 -m -c test262o.conf -+ -+#test2o-update: run-test262 -+# ./run-test262 -u -c test262o.conf -+ -+# Test262 tests -+#test2-default: run-test262 -+# time ./run-test262 -m -c test262.conf -+ -+#test2: run-test262 -+# time ./run-test262 -m -c test262.conf -a -+ -+#test2-32: run-test262-32 -+# time ./run-test262-32 -m -c test262.conf -a -+ -+#test2-update: run-test262 -+# ./run-test262 -u -c test262.conf -a -+ -+#test2-check: run-test262 -+# time ./run-test262 -m -c test262.conf -E -a -+ -+#testall: all test microbench test2o test2 -+ -+#testall-32: all test-32 microbench-32 test2o-32 test2-32 -+ -+#testall-complete: testall testall-32 -+ -+#bench-v8: qjs -+# make -C tests/bench-v8 -+# ./qjs -d tests/bench-v8/combined.js -+ -+#tests/bjson.so: $(OBJDIR)/tests/bjson.pic.o -+# $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) -+ -+-include $(wildcard $(OBJDIR)/*.d) diff -up quickjs-2024-01-13/qjs.c.djgpp quickjs-2024-01-13/qjs.c --- quickjs-2024-01-13/qjs.c.djgpp 2024-08-21 13:29:26.360220594 +0000 +++ quickjs-2024-01-13/qjs.c 2024-08-21 13:12:30.671515118 +0000 @@ -490,15 +13,15 @@ diff -up quickjs-2024-01-13/qjs.c.djgpp quickjs-2024-01-13/qjs.c diff -up quickjs-2024-01-13/quickjs-libc.c.djgpp quickjs-2024-01-13/quickjs-libc.c --- quickjs-2024-01-13/quickjs-libc.c.djgpp 2024-01-13 10:20:39.000000000 +0000 +++ quickjs-2024-01-13/quickjs-libc.c 2024-08-21 13:14:45.092458496 +0000 -@@ -59,7 +59,7 @@ typedef sig_t sighandler_t; - - #if !defined(_WIN32) - /* enable the os.Worker API. IT relies on POSIX threads */ --#define USE_WORKER -+//#define USE_WORKER +@@ -65,7 +65,7 @@ typedef sig_t sighandler_t; #endif + /* enable the os.Worker API. It relies on POSIX threads */ +-#define USE_WORKER ++//#define USE_WORKER + #ifdef USE_WORKER + #include @@ -691,6 +691,7 @@ static JSValue js_std_getenviron(JSConte obj = JS_NewObject(ctx); if (JS_IsException(obj)) @@ -644,28 +167,6 @@ diff -up quickjs-2024-01-13/quickjs.c.djgpp quickjs-2024-01-13/quickjs.c return 0; #elif defined(__linux__) return malloc_usable_size((void *)ptr); -@@ -11338,12 +11338,19 @@ static char *i64toa(char *buf_end, int64 - return q; - } - -+#ifndef FE_TONEAREST -+#define FE_TONEAREST 0 -+#define FE_DOWNWARD 0 -+#define FE_UPWARD 0 -+#endif -+int fesetround(int a) { return 0; } -+ - /* buf1 contains the printf result */ - static void js_ecvt1(double d, int n_digits, int *decpt, int *sign, char *buf, - int rounding_mode, char *buf1, int buf1_size) - { -- if (rounding_mode != FE_TONEAREST) -- fesetround(rounding_mode); -+ if (rounding_mode != FE_TONEAREST) -+ fesetround(rounding_mode); - snprintf(buf1, buf1_size, "%+.*e", n_digits - 1, d); - if (rounding_mode != FE_TONEAREST) - fesetround(FE_TONEAREST); @@ -40844,6 +40851,10 @@ static JSValue js_number_isSafeInteger(J return JS_NewBool(ctx, is_safe_integer(d)); } @@ -726,3 +227,46 @@ diff -up quickjs-2024-01-13/quickjs.c.djgpp quickjs-2024-01-13/quickjs.c } } +--- quickjs-2025-09-13/Makefile.orig 2025-09-18 08:25:07.000000000 +0000 ++++ quickjs-2025-09-13/Makefile 2025-10-01 14:32:52.348023564 +0000 +@@ -90,8 +90,8 @@ + CROSS_PREFIX?= + EXE=.exe + else +- CROSS_PREFIX?= +- EXE= ++ CROSS_PREFIX=i586-pc-msdosdjgpp- ++ EXE=.exe + endif + + ifdef CONFIG_CLANG +@@ -191,7 +191,7 @@ + ifdef CONFIG_WIN32 + LDEXPORT= + else +-LDEXPORT=-rdynamic ++LDEXPORT= + endif + + ifndef CONFIG_COSMO +@@ -202,7 +202,7 @@ + endif + endif + +-PROGS=qjs$(EXE) qjsc$(EXE) run-test262$(EXE) ++PROGS=qjs$(EXE) qjsc$(EXE) + + ifneq ($(CROSS_PREFIX),) + QJSC_CC=gcc +@@ -244,9 +244,9 @@ + QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS) + + HOST_LIBS=-lm -ldl -lpthread +-LIBS=-lm -lpthread ++LIBS=-lm + ifndef CONFIG_WIN32 +-LIBS+=-ldl ++LIBS+= + endif + LIBS+=$(EXTRA_LIBS) +