nostril

A C cli tool for creating nostr events
git clone git://jb55.com/nostril
Log | Files | Refs | Submodules | README | LICENSE

Makefile (2455B)


      1 
      2 CFLAGS = -Wall -O2 -Ideps/secp256k1/include -Ideps/libsodium/src/libsodium/include/
      3 LDFLAGS = -lm
      4 OBJS = sha256.o nostril.o aes.o base64.o nip44.o hmac_sha256.o hkdf_sha256.o
      5 HEADERS = hex.h nip44.h cursor.h random.h config.h sha256.h deps/secp256k1/include/secp256k1.h
      6 PREFIX ?= /usr/local
      7 LIBSODIUM_AR=deps/libsodium/src/libsodium/.libs/libsodium.a
      8 ARS = libsecp256k1.a $(LIBSODIUM_AR)
      9 
     10 SUBMODULES = deps/secp256k1 deps/libsodium
     11 
     12 all: nostril docs
     13 
     14 docs: doc/nostril.1
     15 
     16 doc/nostril.1: README.md
     17 	scdoc < $^ > $@
     18 
     19 version: nostril.c
     20 	grep '^#define VERSION' $< | sed -En 's,.*"([^"]+)".*,\1,p' > $@
     21 
     22 dist: docs version
     23 	@mkdir -p dist
     24 	git ls-files --recurse-submodules | tar --transform 's/^/nostril-$(shell cat version)\//' -T- -caf dist/nostril-$(shell cat version).tar.gz
     25 	@ls -dt dist/* | head -n1 | xargs echo "tgz "
     26 	cd dist;\
     27 	sha256sum *.tar.gz > SHA256SUMS.txt;\
     28 	gpg -u 0x8A478B64FFE30F1095A8736BF5F27EFD1B38DABB --sign --armor --detach-sig --output SHA256SUMS.txt.asc SHA256SUMS.txt
     29 	cp CHANGELOG dist/CHANGELOG.txt
     30 	rsync -avzP dist/ charon:/www/cdn.jb55.com/tarballs/nostril/
     31 
     32 $(LIBSODIUM_AR): deps/libsodium/config.log
     33 	cd deps/libsodium/src/libsodium; \
     34 	make -j libsodium.la
     35 
     36 deps/libsodium/config.log: deps/libsodium/configure
     37 	cd deps/libsodium; \
     38 	./configure --disable-shared --enable-minimal
     39 
     40 deps/secp256k1/.git:
     41 	@devtools/refresh-submodules.sh $(SUBMODULES)
     42 
     43 deps/secp256k1/include/secp256k1.h: deps/secp256k1/.git
     44 
     45 deps/secp256k1/configure: deps/secp256k1/.git
     46 	cd deps/secp256k1; \
     47 	./autogen.sh
     48 
     49 deps/secp256k1/config.log: deps/secp256k1/configure
     50 	cd deps/secp256k1; \
     51 	./configure --disable-shared --enable-module-ecdh --enable-module-schnorrsig --enable-module-extrakeys
     52 
     53 deps/secp256k1/.libs/libsecp256k1.a: deps/secp256k1/config.log
     54 	cd deps/secp256k1; \
     55 	make -j libsecp256k1.la
     56 
     57 libsecp256k1.a: deps/secp256k1/.libs/libsecp256k1.a
     58 	cp $< $@
     59 
     60 %.o: %.c $(HEADERS)
     61 	@echo "cc $<"
     62 	@$(CC) $(CFLAGS) -c $< -o $@
     63 
     64 nostril: $(HEADERS) $(OBJS) $(ARS)
     65 	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(ARS) -o $@
     66 
     67 install: all
     68 	mkdir -p $(PREFIX)/share/man/man1
     69 	mkdir -p $(PREFIX)/bin
     70 	install -m644 doc/nostril.1 $(PREFIX)/share/man/man1/nostril.1
     71 	install -m755 nostril $(PREFIX)/bin/nostril
     72 	install -m755 nostril-query $(PREFIX)/bin/nostril-query
     73 
     74 config.h: configurator
     75 	./configurator > $@
     76 
     77 configurator: configurator.c
     78 	$(CC) $< -o $@
     79 
     80 clean:
     81 	rm -f nostril *.o *.a
     82 	rm -rf deps/secp256k1
     83 
     84 tags: fake
     85 	ctags *.c *.h
     86 
     87 .PHONY: fake