ICED=node_modules/.bin/iced3
BUILD_STAMP=build-stamp

default: build
all: build

lib/%.js: src/%.iced
	$(ICED) -b -c -I node -m -o `dirname $@` $<

$(BUILD_STAMP): \
	lib/asymmetric.js \
	lib/basekeypair.js \
	lib/basex.js \
	lib/bn.js \
	lib/const.js \
	lib/dsa.js \
	lib/ecc/base.js \
	lib/ecc/curves.js \
	lib/ecc/ecdh.js \
	lib/ecc/ecdsa.js \
	lib/ecc/eddsa.js \
	lib/ecc/main.js \
	lib/elgamal.js \
	lib/elgamalse.js \
	lib/errors.js \
	lib/hash.js \
	lib/header.js \
	lib/keybase/encode.js \
	lib/keybase/hilev.js \
	lib/keybase/packet/alloc.js \
	lib/keybase/packet/base.js \
	lib/keybase/packet/encryption.js \
	lib/keybase/packet/p3skb.js \
	lib/keybase/packet/signature.js \
	lib/keybase/util.js \
	lib/keyfetch.js \
	lib/keyring.js \
	lib/keywrapper.js \
	lib/kmi.js \
	lib/main.js \
	lib/nacl/base.js \
	lib/nacl/main.js \
	lib/nacl/eddsa.js \
	lib/nacl/dh.js \
	lib/openpgp/armor.js \
	lib/openpgp/baseburner.js \
	lib/openpgp/buffer.js \
	lib/openpgp/burner.js \
	lib/openpgp/cast5.js \
	lib/openpgp/cfb.js \
	lib/openpgp/clearsign.js \
	lib/openpgp/detachsign.js \
	lib/openpgp/hilev.js \
	lib/openpgp/keymanager.js \
	lib/openpgp/ocfb.js \
	lib/openpgp/packet/all.js \
	lib/openpgp/packet/base.js \
	lib/openpgp/packet/compressed.js \
	lib/openpgp/packet/generic.js \
	lib/openpgp/packet/literal.js \
	lib/openpgp/packet/keymaterial.js \
	lib/openpgp/packet/one_pass_sig.js \
	lib/openpgp/packet/packetsigs.js \
	lib/openpgp/packet/sess.js \
	lib/openpgp/packet/signature.js \
	lib/openpgp/packet/userid.js \
	lib/openpgp/packet/user_attribute.js \
	lib/openpgp/parser.js \
	lib/openpgp/processor.js \
	lib/openpgp/sigeng.js \
	lib/openpgp/s2k.js \
	lib/openpgp/util.js \
	lib/openpgp/verifier.js \
	lib/pad.js \
	lib/primegen.js \
	lib/primes.js \
	lib/rand.js \
	lib/rfc3394.js \
	lib/rsa.js \
	lib/symmetric.js \
	lib/ukm.js \
	lib/util.js \
	lib/verify.js
	date > $@

build: $(BUILD_STAMP)

test-server: $(BUILD_STAMP)
	$(ICED) test/run.iced

test: test-server

clean:
	rm -rf lib/* $(BUILD_STAMP)

setup:
	pnpm install

.PHONY: clean setup test
