git » sdk » main » tree

[main] / Makefile

HAXE_PATH=$$HOME/Software/haxe-4.3.1/hxnodejs/12,1,0/src

.PHONY: all test doc hx-build-dep cpp/libborogove.dso npm/borogove-browser.js npm/borogove.js cpp

all: npm libborogove.batteriesincluded.so libborogove.so libborogove.a

test:
	haxe test.hxml

hx-build-dep:
	haxelib --quiet git jsImport https://github.com/back2dos/jsImport
	haxelib --quiet install datetime
	haxelib --quiet install haxe-strings
	haxelib --quiet install hsluv
	haxelib --quiet install tink_http
	haxelib --quiet install uuidv7
	haxelib --quiet install thenshim
	haxelib --quiet install HtmlParser
	haxelib --quiet install hxnodejs
	haxelib --quiet git hxtsdgen https://github.com/singpolyma/hxtsdgen
	haxelib --quiet install utest
	haxelib --quiet git hxtsdgen https://github.com/singpolyma/hxtsdgen
	cd "$(shell haxelib libpath hxcpp)"/tools/hxcpp && haxe compile.hxml

npm/borogove-browser.js:
	haxe browserjs.hxml
	sed -i '/;var $$hx_exports = typeof exports != "undefined" ? exports : globalThis;/{N;N;N;d;}' npm/borogove-browser.js
	sed -i 's/^$$hx_exports[^=]*=\(.*\);$$/export {\1 };/g' npm/borogove-browser.js
	sed -i 's/"\[Symbol.asyncIterator\]"() {/[Symbol.asyncIterator]() {/g' npm/borogove-browser.js
	cd npm && npx cjstoesm borogove-browser.js
	sed -i 's/import crypto from "crypto";//g' npm/borogove-browser.js
	awk -f optional-sqlite.awk npm/borogove-browser.js
	mv npm/browser-no-sqlite.js npm/borogove-browser.js
	awk -f optional-sqlite-types.awk npm/borogove-browser.d.ts
	mv npm/no-sqlite.d.ts npm/borogove-browser.d.ts

npm/borogove.js:
	haxe nodejs.hxml
	sed -i '/;var $$hx_exports = typeof exports != "undefined" ? exports : globalThis;/{N;N;N;d;}' npm/borogove.js
	sed -i 's/^$$hx_exports[^=]*=\(.*\);$$/export {\1 };/g' npm/borogove.js
	sed -i 's/"\[Symbol.asyncIterator\]"() {/[Symbol.asyncIterator]() {/g' npm/borogove.js
	cd npm && npx cjstoesm borogove.js

npm: npm/borogove-browser.js npm/borogove.js borogove/persistence/IDB.js borogove/persistence/MediaStoreCache.js borogove/persistence/sqlite-worker1.mjs
	cp borogove/persistence/IDB.js npm
	cp borogove/persistence/MediaStoreCache.js npm
	cp borogove/persistence/sqlite-worker1.mjs npm
	-cd npm && npx tsc --esModuleInterop --lib esnext,dom --target esnext --preserveConstEnums --allowJs --checkJs -d index.ts > /dev/null
	cd npm && npx tsc --esModuleInterop --lib esnext,dom --target esnext --preserveConstEnums --allowJs --checkJs -d index.ts

cpp/libborogove.dso:
	haxe cpp.hxml
	$(RM) cpp/libborogove.dso.hash

cpp:
	haxe -D no-compilation cpp.hxml
	$(RM) -r cpp/obj
	$(RM) cpp/*.dso
	$(RM) cpp/src/__main__.cpp
	$(RM) cpp/src/__files__.cpp
	cp "$(shell haxelib libpath hxcpp)"/include/*.h cpp/include/
	cp -r "$(shell haxelib libpath hxcpp)"/include/hx cpp/include/
	cp -r "$(shell haxelib libpath hxcpp)"/include/cpp cpp/include/
	mkdir -p cpp/src/hx/libs/ssl
	cp cpp/alt/SSL-mbedtls3.cpp cpp/src/hx/libs/ssl/SSL.cpp
	cp -r "$(shell haxelib libpath hxcpp)"/src/hx/libs/std cpp/src/hx/libs/
	cp -r "$(shell haxelib libpath hxcpp)"/src/hx/libs/regexp cpp/src/hx/libs/
	cp -r "$(shell haxelib libpath hxcpp)"/src/hx/libs/sqlite cpp/src/hx/libs/
	cp -r "$(shell haxelib libpath hxcpp)"/src/hx/gc cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/StdLibs.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Lib.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Hash.h cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Hash.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Date.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Thread.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/CFFI.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Unicase.h cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Debug.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Anon.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Class.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Object.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/Boot.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/hx/NoFiles.cpp cpp/src/hx/
	cp "$(shell haxelib libpath hxcpp)"/src/String.cpp cpp/src/
	cp "$(shell haxelib libpath hxcpp)"/src/Enum.cpp cpp/src/
	cp "$(shell haxelib libpath hxcpp)"/src/Array.cpp cpp/src/
	cp "$(shell haxelib libpath hxcpp)"/src/Dynamic.cpp cpp/src/
	cp "$(shell haxelib libpath hxcpp)"/src/Math.cpp cpp/src/
	cd cpp && ./configure.simple

libborogove.batteriesincluded.so: cpp/libborogove.dso
	mv cpp/libborogove.dso libborogove.batteriesincluded.so

cpp/libborogove.so: cpp
	$(MAKE) -C cpp libborogove.so

cpp/libborogove.a: cpp
	$(MAKE) -C cpp libborogove.a

libborogove.so: cpp/libborogove.so
	mv cpp/libborogove.so libborogove.so

libborogove.a: cpp/libborogove.a
	mv cpp/libborogove.a libborogove.a

doc:
	npx @microsoft/api-extractor run -c npm/api-extractor.json || true
	npx @microsoft/api-documenter markdown -i tmp -o docs/js/
	rm -r tmp
	find docs/js/ -name '*.md' -exec sed -i 's/<\([[:alpha:]][[:alpha:]]*\)/<\1 markdown="1"/g' \{\} \;
	git checkout docs/js/index.md
	mkdocs build
	haxe haxedoc.hxml
	haxelib run dox --toplevel-package borogove -i haxedoc.xml -o site/haxe/

clean:
	$(RM) npm/*.js npm/*.mjs npm/*.d.ts npm/*.map npm/borogove-enums.ts npm/borogove-browser-enums.ts
	$(RM) -r cpp/src cpp/include cpp/obj cpp/*.h cpp/*.dso.hash cpp/Build.xml cpp/Options.txt cpp/Borogove.swift libborogove.so