tidy up make/build process

This commit is contained in:
Leon van Kammen 2023-11-09 11:24:30 +01:00
parent e42fda84b4
commit e8b5de3665
2 changed files with 45 additions and 34 deletions

View file

@ -37,6 +37,10 @@ Pre-build libraries can be found in [/dist folder](dist)<br>
If you really want to build from source: If you really want to build from source:
``` ```
$ ./make install $ nix-shell # nix-users: drops you into a dev-ready shell
$ ./make build && ./make runtest $ ./make install # debian-users: install deps via apt-get
$ ./make build && ./make tests
``` ```
> NOTE #1: to rebundle the THREE/AFRAME javascripts during dev run `./make build js`
> NOTE #2: to regenerate the parser in various languages (via haxe), run `./make build parser`

71
make
View file

@ -1,7 +1,8 @@
#!/bin/sh !/bin/sh
set -e set -e
try(){ set +e; "$@" 2>/dev/null; set -e; } try(){ set +e; "$@" 2>/dev/null; set -e; }
trace(){ set -x; "$@"; set +x; }
install(){ install(){
which haxe || { which haxe || {
@ -51,38 +52,44 @@ server(){
} }
build(){ build(){
try rm dist/*
haxe build.hxml
ok=$?
sed -i 's|.*nonlocal .*||g' dist/xrfragment.py
echo build OK
build_js
}
build_js(){ parser(){
# prepend license to vanilla lib try rm dist/*
#echo "// https://xrfragment.org\n// SPDX-License-Identifier: MPL-2.0\n$(cat dist/xrfragment.js)" > dist/xrfragment.js trace haxe build.hxml
# add js module ok=$?
cat dist/xrfragment.js > dist/xrfragment.module.js sed -i 's|.*nonlocal .*||g' dist/xrfragment.py
echo "export default xrfragment;" >> dist/xrfragment.module.js ls -lah dist/*
# add THREE echo -e "[OK] parser build\n"
cat dist/xrfragment.js \ }
src/3rd/js/*.js \
src/3rd/js/three/*.js \ js(){
src/3rd/js/three/xrmacro/env.js \ # prepend license to vanilla lib
src/3rd/js/three/xrf/*.js \ #echo "// https://xrfragment.org\n// SPDX-License-Identifier: MPL-2.0\n$(cat dist/xrfragment.js)" > dist/xrfragment.js
src/3rd/js/three/xrf/dynamic/*.js \ # add js module
src/3rd/js/three/xrf/src/*.js > dist/xrfragment.three.js cat dist/xrfragment.js > dist/xrfragment.module.js
# add THREE module echo "export default xrfragment;" >> dist/xrfragment.module.js
cat dist/xrfragment.three.js > dist/xrfragment.three.module.js # add THREE
echo "export default xrf;" >> dist/xrfragment.three.module.js cat dist/xrfragment.js \
# add AFRAME src/3rd/js/*.js \
cat dist/xrfragment.three.js \ src/3rd/js/three/*.js \
src/3rd/js/aframe/*.js > dist/xrfragment.aframe.js src/3rd/js/three/xrmacro/env.js \
# convert ESM to normal browser js src/3rd/js/three/xrf/*.js \
sed 's/export //g' example/assets/js/utils.js > dist/utils.js src/3rd/js/three/xrf/dynamic/*.js \
ls -la dist | grep js src/3rd/js/three/xrf/src/*.js > dist/xrfragment.three.js
exit $ok # add THREE module
cat dist/xrfragment.three.js > dist/xrfragment.three.module.js
echo "export default xrf;" >> dist/xrfragment.three.module.js
# add AFRAME
cat dist/xrfragment.three.js \
src/3rd/js/aframe/*.js > dist/xrfragment.aframe.js
# convert ESM to normal browser js
sed 's/export //g' example/assets/js/utils.js > dist/utils.js
ls -la dist | grep js
exit $ok
}
test -z $1 && { parser && js; }
test -z $1 || "$@"
} }
test -z $1 && build test -z $1 && build