diff --git a/moo/wasm/build.sh b/moo/wasm/build.sh new file mode 100644 index 0000000..7669057 --- /dev/null +++ b/moo/wasm/build.sh @@ -0,0 +1,20 @@ +# temporary build script. +# must integrate the build process into automake + +topdir=../../.. +blddir=${topdir}/bld/emcc + +emcc -Wall -O2 -g \ + ${blddir}/lib/.libs/libmoo.a \ + ${topdir}/wasm/main.c \ + -DMOO_HAVE_CFG_H \ + -I${blddir}/lib \ + -I${topdir}/lib\ + -s WASM=1 -s LINKABLE=1 \ + -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" \ + -o libmoo.js \ + --pre-js ${topdir}/wasm/moo.cb.js + + +cp -pf ${topdir}/wasm/moo.html . +cp -pf ${topdir}/wasm/moo.worker.js . diff --git a/moo/wasm/main.c b/moo/wasm/main.c index a353b6d..b3e7b5c 100644 --- a/moo/wasm/main.c +++ b/moo/wasm/main.c @@ -30,16 +30,25 @@ static moo_mmgr_t sys_mmgr = /* ========================================================================= */ extern void jsGetTime (moo_ntime_t* now); +extern void jsSleep (const moo_ntime_t* now); static void vm_gettime (moo_t* moo, moo_ntime_t* now) { jsGetTime(now); } +static void vm_sleep (moo_t* moo, const moo_ntime_t* dur) +{ + jsSleep (dur); +} + EMSCRIPTEN_KEEPALIVE int open_moo (void) { moo_ntime_t now; vm_gettime (NULL, &now); + now.sec = 1; + now.nsec = 500; + vm_sleep (NULL, &now); return now.sec; #if 0 moo_t* moo; diff --git a/moo/wasm/moo.cb.js b/moo/wasm/moo.cb.js index ec7240f..99c3429 100644 --- a/moo/wasm/moo.cb.js +++ b/moo/wasm/moo.cb.js @@ -6,3 +6,17 @@ var _jsGetTime = function(pointer) HEAP32[pos] = Math.floor(now / 1000); HEAP32[pos + 1] = (now % 1000) * 1000000; } + +var _jsSleep = function(pointer) +{ +/* + var pos = pointer / 4; + var msec = (HEAP32[POS] * 1000) + (HEAP32[pos + 1] / 1000000); + + var prom = new Promise(function (resolve, reject) { + setTimeout (function() { resolve("xxxx"); }, msec); + }); + + await prom; +*/ +}