removed the containing subdir
This commit is contained in:
2
wasm/Makefile.am
Normal file
2
wasm/Makefile.am
Normal file
@ -0,0 +1,2 @@
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
|
461
wasm/Makefile.in
Normal file
461
wasm/Makefile.in
Normal file
@ -0,0 +1,461 @@
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = wasm
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||
$(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/moo-cfg.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_MODE = @BUILD_MODE@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
DYNCALL_LIBS = @DYNCALL_LIBS@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FFI_LIBS = @FFI_LIBS@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBM = @LIBM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTDL_LIBS = @LTDL_LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MOO_PROJECT_AUTHOR = @MOO_PROJECT_AUTHOR@
|
||||
MOO_PROJECT_URL = @MOO_PROJECT_URL@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
|
||||
PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
|
||||
PACKAGE_VERSION_PATCH = @PACKAGE_VERSION_PATCH@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTHREAD_CC = @PTHREAD_CC@
|
||||
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
|
||||
PTHREAD_LIBS = @PTHREAD_LIBS@
|
||||
QUADMATH_LIBS = @QUADMATH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SOCKET_LIBS = @SOCKET_LIBS@
|
||||
STRIP = @STRIP@
|
||||
TERMINAL_LIBS = @TERMINAL_LIBS@
|
||||
UNICOWS_LIBS = @UNICOWS_LIBS@
|
||||
UNWIND_LIBS = @UNWIND_LIBS@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
ax_pthread_config = @ax_pthread_config@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign wasm/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign wasm/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
26
wasm/build.sh
Normal file
26
wasm/build.sh
Normal file
@ -0,0 +1,26 @@
|
||||
# temporary build script.
|
||||
# must integrate the build process into automake
|
||||
|
||||
topdir=../../..
|
||||
blddir=${topdir}/bld/emcc
|
||||
|
||||
emcc -Wall -O2 -g \
|
||||
${blddir}/lib/.libs/libmoo.a \
|
||||
${blddir}/lib/.libs/libmoox.a \
|
||||
${topdir}/wasm/main.c \
|
||||
-DMOO_HAVE_CFG_H \
|
||||
-I${blddir}/lib \
|
||||
-I${topdir}/lib\
|
||||
-s WASM=1 \
|
||||
-s LINKABLE=1 \
|
||||
-s ALLOW_MEMORY_GROWTH=1 \
|
||||
-s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" \
|
||||
-o libmoo.js \
|
||||
--embed-file ${topdir}/kernel/ \
|
||||
--pre-js ${topdir}/wasm/moo.cb.js
|
||||
|
||||
##-s USE_PTHREADS=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 \
|
||||
##cp -pf ${topdir}/wasm/moo.html .
|
||||
##cp -pf ${topdir}/wasm/moo.worker.js .
|
||||
ln -sf ${topdir}/wasm/moo.html moo.html
|
||||
ln -sf ${topdir}/wasm/moo.worker.js moo.worker.js
|
103
wasm/emcc.txt
Normal file
103
wasm/emcc.txt
Normal file
@ -0,0 +1,103 @@
|
||||
Temporary notes on how to build libmoo to web assembly with emscripten.
|
||||
|
||||
#### emscriptten APIS to look into
|
||||
emscripten_set_main_loop();
|
||||
|
||||
#### How to Build
|
||||
mkdir -p bld/emcc
|
||||
cd blc/emcc
|
||||
|
||||
## run configure and make under emconfigure and emmake respectively
|
||||
emconfigure ../../configure --prefix=${HOME}/xxx-emcc --disable-shared --enable-dynamic-module --disable-mod-x11 --disable-mod-con --disable-mod-sck CFLAGS="-Wall -O2 -g"
|
||||
emmake make
|
||||
|
||||
## convert the library to web assembly - the command produces libmoo.js and libmoo.wasm
|
||||
##emcc lib/.libs/libmoo.a -s WASM=1 -s EXPORT_ALL=1 -s LINKABLE=1 -o libmoo.js
|
||||
#if you have defined MOO_EXPORT as EMSCRIPTEN_KEEPALIVE, the following will do
|
||||
##emcc lib/.libs/libmoo.a -s WASM=1 -s -s LINKABLE=1 -o libmoo.js
|
||||
###emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s LINKABLE=1 -o libmoo.js
|
||||
|
||||
## -s ALLOW_MEMORY_GROWTH=1
|
||||
emcc lib/.libs/libmoo.a lib/.libs/libmoox.a -s WASM=1 -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js --embed-file ../../kernel/
|
||||
### --embed-file, if given a directory, includes all files under the directory.
|
||||
### the result libmoo.js will contain lines like below:
|
||||
### Module['FS_createDataFile']('/kernel', 'Apex.moo', fileData35, true, true, false);
|
||||
### var fileData36 = [];
|
||||
### fileData36.push.apply(fileData36, [35, 105, ...
|
||||
###
|
||||
|
||||
## when i executed the command above, some versions of wasm-ld complained like below
|
||||
## if the library is compiled with -pthread.
|
||||
## wasm-ld: error: 'atomics' feature is disallowed by atomic_2835fb94.c.o, so --shared-memory must not be used
|
||||
## a quick work around was to remove -pthread before building with 'emmake make'
|
||||
|
||||
## if defined some javascript functions in moo.cb.js...
|
||||
emcc -Wall -O2 -g lib/.libs/libmoo.a ws.c -DMOO_HAVE_CFG_H -Ilib -I../../lib -s WASM=1 -s LINKABLE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" -o libmoo.js --pre-js moo.cb.js
|
||||
|
||||
#### moo.worker.js
|
||||
|
||||
self.importScripts('libmoo.js');
|
||||
self.__ready = false;
|
||||
|
||||
Module.onRuntimeInitialized = function()
|
||||
{
|
||||
self.__ready = true;
|
||||
console.log ('runtime is ready now...');
|
||||
}
|
||||
|
||||
const libmoo = {
|
||||
open: Module.cwrap('moo_openstd', 'number', ['number', 'number', 'number']),
|
||||
close: Module.cwrap('moo_close', '', ['number'])
|
||||
};
|
||||
|
||||
self.onmessage = function (evt) {
|
||||
var objData = evt.data;
|
||||
|
||||
var cmd = objData.cmd;
|
||||
if (cmd === "test-moo")
|
||||
{
|
||||
//var x = Module.ccall('moo_openstd', [0, null, null]);
|
||||
//Module.ccall('moo_close', x);
|
||||
|
||||
if (self.__ready)
|
||||
{
|
||||
var moo = libmoo.open(0, null, null);
|
||||
self.postMessage ('XXXXXXXXXXXXXXXx - ' + moo);
|
||||
libmoo.close (moo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#### moo.html
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><meta charset="utf-8" /></head>
|
||||
|
||||
<body>
|
||||
<input type="button" value="Test" onclick="do_test();" />
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
//var g_WebWorker = new Worker("moo.worker.js");
|
||||
var g_WebWorker = new SharedWorker("moo.worker.js");
|
||||
|
||||
//if (typeof(WebAssembly) === 'undefined')
|
||||
//{
|
||||
// alert ('No web assebly support in this browser');
|
||||
//}
|
||||
|
||||
g_WebWorker.onerror = function (evt) { console.log(`Error from Web Worker: ${evt.message}`); }
|
||||
g_WebWorker.onmessage = function (evt) { console.log(`Message from the Web Worker:\n\n ${evt.data}`); }
|
||||
|
||||
function do_test() {
|
||||
g_WebWorker.postMessage({ "cmd": "test-moo", "data": "nothing as of now.." });
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
129
wasm/main.c
Normal file
129
wasm/main.c
Normal file
@ -0,0 +1,129 @@
|
||||
#include <emscripten/emscripten.h>
|
||||
#include <moo.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static void* sys_alloc (moo_mmgr_t* mmgr, moo_oow_t size)
|
||||
{
|
||||
return malloc(size);
|
||||
}
|
||||
|
||||
static void* sys_realloc (moo_mmgr_t* mmgr, void* ptr, moo_oow_t size)
|
||||
{
|
||||
return realloc(ptr, size);
|
||||
}
|
||||
|
||||
static void sys_free (moo_mmgr_t* mmgr, void* ptr)
|
||||
{
|
||||
free (ptr);
|
||||
}
|
||||
|
||||
static moo_mmgr_t sys_mmgr =
|
||||
{
|
||||
sys_alloc,
|
||||
sys_realloc,
|
||||
sys_free,
|
||||
MOO_NULL
|
||||
};
|
||||
|
||||
|
||||
/* ========================================================================= */
|
||||
|
||||
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;
|
||||
moo_vmprim_t vmprim;
|
||||
moo_evtcb_t evtcb;
|
||||
xtn_t* xtn;
|
||||
|
||||
MOO_MEMSET(&vmprim, 0, MOO_SIZEOF(vmprim));
|
||||
if (cfg && cfg->large_pages)
|
||||
{
|
||||
vmprim.alloc_heap = alloc_heap;
|
||||
vmprim.free_heap = free_heap;
|
||||
}
|
||||
vmprim.log_write = ((cfg && cfg->log_write)? cfg->log_write: log_write);
|
||||
vmprim.syserrstrb = syserrstrb;
|
||||
vmprim.assertfail = assert_fail;
|
||||
vmprim.dl_startup = dl_startup;
|
||||
vmprim.dl_cleanup = dl_cleanup;
|
||||
vmprim.dl_open = dl_open;
|
||||
vmprim.dl_close = dl_close;
|
||||
vmprim.dl_getsym = dl_getsym;
|
||||
vmprim.vm_startup = vm_startup;
|
||||
vmprim.vm_cleanup = vm_cleanup;
|
||||
vmprim.vm_gettime = vm_gettime;
|
||||
vmprim.vm_muxadd = vm_muxadd;
|
||||
vmprim.vm_muxdel = vm_muxdel;
|
||||
vmprim.vm_muxmod = vm_muxmod;
|
||||
vmprim.vm_muxwait = vm_muxwait;
|
||||
vmprim.vm_sleep = vm_sleep;
|
||||
|
||||
moo = moo_open(&sys_mmgr, MOO_SIZEOF(xtn_t) + xtnsize, ((cfg && cfg->cmgr)? cfg->cmgr: moo_get_utf8_cmgr()), &vmprim, (cfg? cfg->gc_type: MOO_GC_TYPE_DEFAULT), errinfo);
|
||||
if (!moo) return MOO_NULL;
|
||||
|
||||
/* adjust the object size by the sizeof xtn_t so that qse_getxtn() returns the right pointer. */
|
||||
moo->_instsize += MOO_SIZEOF(xtn_t);
|
||||
|
||||
xtn = GET_XTN(moo);
|
||||
|
||||
MOO_MEMSET (&evtcb, 0, MOO_SIZEOF(evtcb));
|
||||
evtcb.fini = fini_moo;
|
||||
moo_regevtcb (moo, &evtcb);
|
||||
|
||||
|
||||
{
|
||||
moo_bitmask_t bm = 0;
|
||||
|
||||
moo_getoption (moo, MOO_OPTION_TRAIT, &bm);
|
||||
/*bm |= MOO_TRAIT_NOGC;*/
|
||||
bm |= MOO_TRAIT_AWAIT_PROCS;
|
||||
moo_setoption (moo, MOO_OPTION_TRAIT, &bm);
|
||||
|
||||
/* disable GC logs */
|
||||
moo_getoption (moo, MOO_OPTION_LOG_MASK, &bm);
|
||||
bm = ~MOO_LOG_GC;
|
||||
moo_setoption (moo, MOO_OPTION_LOG_MASK, &bm);
|
||||
}
|
||||
|
||||
return moo;
|
||||
#endif
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE moo_bch_t* get_errmsg_from_moo (moo_t* moo)
|
||||
{
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
/* TODO: no static.... error check... */
|
||||
static moo_bch_t bm[256];
|
||||
moo_oow_t bl = MOO_COUNTOF(bm);
|
||||
moo_convutobcstr (moo, moo_geterrmsg(moo), MOO_NULL, bm, &bl);
|
||||
return bm;
|
||||
#else
|
||||
return moo_geterrmsg(moo);
|
||||
#endif
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void switch_process_in_moo (moo_t* moo)
|
||||
{
|
||||
moo_switchprocess(moo);
|
||||
}
|
23
wasm/moo.cb.js
Normal file
23
wasm/moo.cb.js
Normal file
@ -0,0 +1,23 @@
|
||||
//function _jsGetTime(pointer) <--- doesn't work as emcc produces this
|
||||
var _jsGetTime = function(pointer)
|
||||
{
|
||||
var pos = pointer / 4;
|
||||
var now = (new Date()).getTime();
|
||||
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;
|
||||
*/
|
||||
}
|
||||
|
55
wasm/moo.html
Normal file
55
wasm/moo.html
Normal file
@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><meta charset="utf-8" /></head>
|
||||
|
||||
<body>
|
||||
<input type="button" value="Open" onclick="do_open();" />
|
||||
<input type="button" value="Run" onclick="do_run();" />
|
||||
<input type="button" value="Close" onclick="do_close();" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var g_WebWorker = new Worker("moo.worker.js");
|
||||
if (typeof(WebAssembly) === 'undefined')
|
||||
{
|
||||
alert ('No web assebly support in this browser');
|
||||
}
|
||||
|
||||
/*
|
||||
window.addEventListener('beforeunload', function(event) {
|
||||
//g_WebWorker.terminate ();
|
||||
//g_WebWorkder = null;
|
||||
|
||||
var confirmationMessage = "\o/";
|
||||
(event || window.event).returnValue = confirmationMessage; //Gecko + IE
|
||||
return confirmationMessage;
|
||||
});
|
||||
*/
|
||||
|
||||
g_WebWorker.onerror = function (evt) {
|
||||
console.log(`Error from Web Worker: ${evt.message}`);
|
||||
};
|
||||
|
||||
g_WebWorker.onmessage = function (evt) {
|
||||
console.log(`Message from the Web Worker:\n\n ${evt.data}`);
|
||||
};
|
||||
|
||||
function do_open()
|
||||
{
|
||||
g_WebWorker.postMessage({ "cmd": "open-moo", "data": "nothing as of now.." });
|
||||
}
|
||||
|
||||
function do_run()
|
||||
{
|
||||
g_WebWorker.postMessage({ "cmd": "run-moo", "data": "nothing as of now.." });
|
||||
}
|
||||
|
||||
function do_close()
|
||||
{
|
||||
g_WebWorker.postMessage({ "cmd": "close-moo", "data": "nothing as of now.." });
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
108
wasm/moo.worker.js
Normal file
108
wasm/moo.worker.js
Normal file
@ -0,0 +1,108 @@
|
||||
self.importScripts('libmoo.js');
|
||||
self.libmoo = null;
|
||||
self.moo = null;
|
||||
|
||||
Module.noExitRuntime = false;
|
||||
Module.onExit = function (status) {
|
||||
console.log ('exiting....');
|
||||
};
|
||||
|
||||
Module.onRuntimeInitialized = function()
|
||||
{
|
||||
console.log ('runtime is ready now...');
|
||||
|
||||
self.libmoo = {
|
||||
open: Module.cwrap('moo_openstd', 'number', ['number', 'number', 'number']),
|
||||
close: Module.cwrap('moo_close', '', ['number']),
|
||||
ignite: Module.cwrap('moo_ignite', 'number', ['number', 'number']),
|
||||
initdbgi: Module.cwrap('moo_initdbgi', 'number', ['number', 'number']),
|
||||
compilefile: Module.cwrap('moo_compilefileb', 'number', ['number', 'string']),
|
||||
invoke: Module.cwrap('moo_invokebynameb', 'number', ['number', 'string', 'string']),
|
||||
geterrmsg: Module.cwrap('get_errmsg_from_moo', 'string', ['number']),
|
||||
switchprocess: Module.cwrap('switch_process_in_moo', 'undefined', ['number'])
|
||||
};
|
||||
};
|
||||
|
||||
//self.onmessage = function (evt) {
|
||||
self.addEventListener ('message', function (evt) {
|
||||
var objData = evt.data;
|
||||
|
||||
var cmd = objData.cmd;
|
||||
if (cmd === "run-moo")
|
||||
{
|
||||
//var x = Module.ccall('moo_openstd', [0, null, null]);
|
||||
//Module.ccall('moo_close', x);
|
||||
|
||||
if (self.moo !== null)
|
||||
{
|
||||
var tmp, msg = "";
|
||||
//var ticker;
|
||||
|
||||
// while self.libmoo.invoke() is running, setInterval() is unable to trigger the timed event.
|
||||
// it's an architectural issue. emscripten doesn't implement setitimer() yet.
|
||||
// the moo program should 'yield' manually for process switching for now.
|
||||
//ticker = setInterval(function() { self.libmoo.switchprocess (self.moo); console.log("ticking"); }, 100);
|
||||
|
||||
tmp = self.libmoo.invoke(self.moo, "MyObject", "main");
|
||||
msg = msg.concat("invoke - " + tmp);
|
||||
|
||||
//clearInterval (ticker);
|
||||
|
||||
self.postMessage (msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.postMessage ("not open");
|
||||
}
|
||||
}
|
||||
else if (cmd == "open-moo")
|
||||
{
|
||||
if (self.libmoo === null)
|
||||
{
|
||||
self.postMessage ("not ready");
|
||||
}
|
||||
else if (self.moo === null)
|
||||
{
|
||||
var tmp, msg = "";
|
||||
|
||||
self.moo = self.libmoo.open(0, null, null);
|
||||
msg = msg.concat("open - " + moo);
|
||||
|
||||
tmp = self.libmoo.ignite(self.moo, 5000000);
|
||||
msg = msg.concat(" ignite - " + tmp);
|
||||
|
||||
tmp = self.libmoo.initdbgi(self.moo, 102400);
|
||||
msg = msg.concat(" initdgbi - " + tmp);
|
||||
|
||||
tmp = self.libmoo.compilefile(self.moo, "kernel/t.moo");
|
||||
if (tmp == -1)
|
||||
{
|
||||
msg = msg.concat(" compilefile - " + self.libmoo.geterrmsg(self.moo));
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = msg.concat(" compilefile - " + tmp);
|
||||
}
|
||||
|
||||
self.postMessage (msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.postMessage ("already open");
|
||||
}
|
||||
}
|
||||
|
||||
else if (cmd == "close-moo")
|
||||
{
|
||||
if (self.moo !== null)
|
||||
{
|
||||
self.libmoo.close (self.moo);
|
||||
self.moo = null;
|
||||
self.postMessage ("close ok");
|
||||
}
|
||||
else
|
||||
{
|
||||
self.postMessage ("already closed");
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user