From 0078ae2e8334ceb623d41bb5a8bead561e920297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Tue, 25 Jul 2017 16:06:59 +0200 Subject: [PATCH] Repair emscripten build --- Makefile | 13 ++++++++----- lib/srfi/144/math.stub | 9 +++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a31a071b..c6fd4e87 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,8 @@ CHIBI_DEPENDENCIES = ./chibi-scheme$(EXE) SNOW_CHIBI ?= tools/snow-chibi +TEMPFILE := $(shell mktemp -t chibi.XXXXXX) + ######################################################################## CHIBI_COMPILED_LIBS = lib/chibi/filesystem$(SO) lib/chibi/process$(SO) \ @@ -87,16 +89,17 @@ all: chibi-scheme$(EXE) all-libs chibi-scheme.pc $(META_FILES) js: js/chibi.js js/chibi.js: chibi-scheme-emscripten chibi-scheme-static.bc js/pre.js js/post.js js/exported_functions.json - emcc -O2 chibi-scheme-static.bc -o $@ -s MODULARIZE=1 -s EXPORT_NAME=\"Chibi\" -s EXPORTED_FUNCTIONS=@js/exported_functions.json `find lib -type f \( -name "*.scm" -or -name "*.sld" \) -printf " --preload-file %p"` --pre-js js/pre.js --post-js js/post.js + emcc -O3 chibi-scheme-static.bc -o $@ -s MODULARIZE=1 -s EXPORT_NAME=\"Chibi\" -s EXPORTED_FUNCTIONS=@js/exported_functions.json `find lib -type f \( -name "*.scm" -or -name "*.sld" \) -printf " --preload-file %p"` --pre-js js/pre.js --post-js js/post.js chibi-scheme-static.bc: - emmake $(MAKE) PLATFORM=emscripten CHIBI_DEPENDENCIES= CHIBI=./chibi-scheme-emscripten PREFIX= CFLAGS=-O2 SEXP_USE_DL=0 EXE=.bc SO=.bc CPPFLAGS="-DSEXP_USE_STRICT_TOPLEVEL_BINDINGS=1 -DSEXP_USE_ALIGNED_BYTECODE=1 -DSEXP_USE_STATIC_LIBS=1" clibs.c chibi-scheme-static.bc + emmake $(MAKE) PLATFORM=emscripten CHIBI_DEPENDENCIES= CHIBI=./chibi-scheme-emscripten PREFIX= CFLAGS=-O2 SEXP_USE_DL=0 EXE=.bc SO=.bc CPPFLAGS="-DSEXP_USE_STRICT_TOPLEVEL_BINDINGS=1 -DSEXP_USE_ALIGNED_BYTECODE=1 -DSEXP_USE_STATIC_LIBS=1 -DSEXP_USE_STATIC_LIBS_NO_INCLUDE=0" clibs.c chibi-scheme-static.bc chibi-scheme-emscripten: VERSION - $(MAKE) clean + $(MAKE) dist-clean $(MAKE) chibi-scheme-static PLATFORM=emscripten SEXP_USE_DL=0 - mv chibi-scheme-static$(EXE) chibi-scheme-emscripten - $(MAKE) clean + mv chibi-scheme-static$(EXE) $(TEMPFILE) + $(MAKE) dist-clean + mv $(TEMPFILE) chibi-scheme-emscripten include/chibi/install.h: Makefile echo '#define sexp_so_extension "'$(SO)'"' > $@ diff --git a/lib/srfi/144/math.stub b/lib/srfi/144/math.stub index 76b4bc0c..c3430fb5 100644 --- a/lib/srfi/144/math.stub +++ b/lib/srfi/144/math.stub @@ -39,14 +39,19 @@ FP_SUBNORMAL) (c-declare - "#ifndef FP_FAST_FMA + "#if defined(__EMSCRIPTEN__) || !defined(FP_FAST_FMA) #define FP_FAST_FMA 0 #endif") (define-c-const boolean (fl-fast-+* FP_FAST_FMA)) -(define-c double (fl+* "fma") (double double double)) +(cond-expand + (emscripten + (c-declare "#define flmuladd(x, y, z) ((x) * (y) + (z))") + (define-c double (fl+* "flmuladd") (double double double))) + (else + (define-c double (fl+* "fma") (double double double)))) ;; These aren't any faster than the builtin ops. It might be ;; interesting to provide these as a way to get flonum support when