damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

Makefile (5629B)


      1 CFLAGS = -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Isrc -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include
      2 HEADERS = deps/lmdb/lmdb.h deps/secp256k1/include/secp256k1.h src/sha256.h src/nostrdb.h src/cursor.h src/hex.h src/jsmn.h src/config.h src/sha256.h src/random.h src/memchr.h src/cpu.h src/nostr_bech32.h src/block.h src/str_block.h $(C_BINDINGS) 
      3 FLATCC_SRCS=deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c
      4 BOLT11_SRCS = src/bolt11/bolt11.c src/bolt11/bech32.c src/bolt11/tal.c src/bolt11/talstr.c src/bolt11/take.c src/bolt11/list.c src/bolt11/utf8.c src/bolt11/amount.c src/bolt11/hash_u5.c
      5 SRCS = src/nostrdb.c src/sha256.c src/invoice.c src/nostr_bech32.c src/content_parser.c src/block.c $(BOLT11_SRCS) $(FLATCC_SRCS)
      6 LDS = $(OBJS) $(ARS) 
      7 OBJS = $(SRCS:.c=.o)
      8 DEPS = $(OBJS) $(HEADERS) $(ARS)
      9 ARS = deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a 
     10 LMDB_VER=0.9.31
     11 FLATCC_VER=05dc16dc2b0316e61063bb1fc75426647badce48
     12 PREFIX ?= /usr/local
     13 SUBMODULES = deps/secp256k1
     14 BINDINGS=src/bindings
     15 C_BINDINGS_PROFILE=$(BINDINGS)/c/profile_builder.h $(BINDINGS)/c/profile_reader.h $(BINDINGS)/c/profile_verifier.h $(BINDINGS)/c/profile_json_parser.h
     16 C_BINDINGS_META=$(BINDINGS)/c/meta_builder.h $(BINDINGS)/c/meta_reader.h $(BINDINGS)/c/meta_verifier.h $(BINDINGS)/c/meta_json_parser.h
     17 C_BINDINGS_COMMON=$(BINDINGS)/c/flatbuffers_common_builder.h $(BINDINGS)/c/flatbuffers_common_reader.h
     18 C_BINDINGS=$(C_BINDINGS_COMMON) $(C_BINDINGS_PROFILE) $(C_BINDINGS_META)
     19 BIN=ndb
     20 
     21 CHECKDATA=testdata/db/v0/data.mdb
     22 
     23 all: $(BIN) lib bench
     24 
     25 %.o: %.c $(HEADERS)
     26 	$(CC) $(CFLAGS) -c -o $@ $<
     27 
     28 libnostrdb.a: $(OBJS)
     29 	ar rcs $@ $(OBJS)
     30 
     31 lib: libnostrdb.a
     32 
     33 ndb: ndb.c $(DEPS)
     34 	$(CC) $(CFLAGS) ndb.c $(LDS) -o $@
     35 
     36 bindings: bindings-swift bindings-rust bindings-c
     37 
     38 check: test
     39 	rm -rf testdata/db/*.mdb
     40 	./test
     41 	rm -rf testdata/db/*.mdb
     42 
     43 clean:
     44 	rm -rf test bench bench-ingest bench-ingest-many $(OBJS)
     45 
     46 distclean: clean
     47 	rm -rf deps
     48 
     49 tags:
     50 	find . -name '*.c' -or -name '*.h' | xargs ctags
     51 
     52 configurator: src/configurator.c
     53 	$(CC) $< -o $@
     54 
     55 src/config.h: configurator
     56 	./configurator > $@
     57 
     58 bindings-c: $(C_BINDINGS)
     59 
     60 src/bindings/%/.dir:
     61 	mkdir -p $(shell dirname $@)
     62 	touch $@
     63 
     64 src/bindings/c/%_builder.h: schemas/%.fbs $(BINDINGS)/c/.dir
     65 	flatcc --builder $< -o $(BINDINGS)/c
     66 
     67 src/bindings/c/%_verifier.h bindings/c/%_reader.h: schemas/%.fbs $(BINDINGS)/c/.dir
     68 	flatcc --verifier -o $(BINDINGS)/c $<
     69 
     70 src/bindings/c/flatbuffers_common_reader.h: $(BINDINGS)/c/.dir
     71 	flatcc --common_reader -o $(BINDINGS)/c
     72 
     73 src/bindings/c/flatbuffers_common_builder.h: $(BINDINGS)/c/.dir
     74 	flatcc --common_builder -o $(BINDINGS)/c
     75 
     76 src/bindings/c/%_json_parser.h: schemas/%.fbs $(BINDINGS)/c/.dir
     77 	flatcc --json-parser $< -o $(BINDINGS)/c
     78 
     79 bindings-rust: $(BINDINGS)/rust/ndb_profile.rs $(BINDINGS)/rust/ndb_meta.rs
     80 
     81 $(BINDINGS)/rust/ndb_profile.rs: schemas/profile.fbs $(BINDINGS)/rust
     82 	flatc --gen-json-emit --rust $<
     83 	@mv profile_generated.rs $@
     84 
     85 $(BINDINGS)/rust/ndb_meta.rs: schemas/meta.fbs $(BINDINGS)/swift
     86 	flatc --rust $< 
     87 	@mv meta_generated.rs $@
     88 
     89 bindings-swift: $(BINDINGS)/swift/NdbProfile.swift $(BINDINGS)/swift/NdbMeta.swift
     90 
     91 $(BINDINGS)/swift/NdbProfile.swift: schemas/profile.fbs $(BINDINGS)/swift
     92 	flatc --gen-json-emit --swift $<
     93 	@mv profile_generated.swift $@
     94 
     95 $(BINDINGS)/swift/NdbMeta.swift: schemas/meta.fbs $(BINDINGS)/swift
     96 	flatc --swift $<
     97 	@mv meta_generated.swift $@
     98 
     99 deps/.dir:
    100 	@mkdir -p deps
    101 	touch deps/.dir
    102 
    103 deps/LMDB_$(LMDB_VER).tar.gz: deps/.dir
    104 	curl -L https://github.com/LMDB/lmdb/archive/refs/tags/LMDB_$(LMDB_VER).tar.gz -o $@
    105 
    106 deps/flatcc_$(FLATCC_VER).tar.gz: deps/.dir
    107 	curl -L https://github.com/jb55/flatcc/archive/$(FLATCC_VER).tar.gz -o $@
    108 
    109 #deps/flatcc/src/runtime/json_parser.c: deps/flatcc_$(FLATCC_VER).tar.gz deps/.dir
    110 #	tar xf $<
    111 #	rm -rf deps/flatcc
    112 #	mv flatcc-$(FLATCC_VER) deps/flatcc
    113 #	touch $@
    114 
    115 #deps/lmdb/lmdb.h: deps/LMDB_$(LMDB_VER).tar.gz deps/.dir
    116 #	tar xf $<
    117 #	rm -rf deps/lmdb
    118 #	mv lmdb-LMDB_$(LMDB_VER)/libraries/liblmdb deps/lmdb
    119 #	rm -rf lmdb-LMDB_$(LMDB_VER)
    120 #	touch $@
    121 
    122 deps/secp256k1/.git: deps/.dir
    123 	@devtools/refresh-submodules.sh $(SUBMODULES)
    124 
    125 deps/secp256k1/include/secp256k1.h: deps/secp256k1/.git
    126 
    127 deps/secp256k1/configure: deps/secp256k1/.git
    128 	cd deps/secp256k1; \
    129 	./autogen.sh
    130 
    131 deps/secp256k1/.libs/libsecp256k1.a: deps/secp256k1/config.log
    132 	cd deps/secp256k1; \
    133 	make -j libsecp256k1.la
    134 
    135 deps/secp256k1/config.log: deps/secp256k1/configure
    136 	cd deps/secp256k1; \
    137 	./configure --disable-shared --enable-module-ecdh --enable-module-schnorrsig --enable-module-extrakeys
    138 
    139 deps/lmdb/liblmdb.a: deps/lmdb/lmdb.h
    140 	$(MAKE) -C deps/lmdb liblmdb.a
    141 
    142 testdata/db/ndb-v0.tar.zst:
    143 	curl https://cdn.jb55.com/s/ndb-v0.tar.zst -o $@
    144 
    145 testdata/db/ndb-v0.tar: testdata/db/ndb-v0.tar.zst
    146 	zstd -d < $< > $@
    147 
    148 testdata/db/v0/data.mdb: testdata/db/ndb-v0.tar
    149 	tar xf $<
    150 	rm -rf testdata/db/v0
    151 	mv v0 testdata/db
    152 
    153 testdata/many-events.json.zst:
    154 	curl https://cdn.jb55.com/s/many-events.json.zst -o $@
    155 
    156 testdata/many-events.json: testdata/many-events.json.zst
    157 	zstd -d $<
    158 
    159 bench: bench-ingest-many.c $(DEPS) 
    160 	$(CC) $(CFLAGS) $< $(LDS) -o $@
    161 
    162 perf.out: fake
    163 	perf script > $@
    164 
    165 perf.folded: perf.out
    166 	stackcollapse-perf.pl $< > $@
    167 
    168 ndb.svg: perf.folded
    169 	flamegraph.pl $< > $@
    170 
    171 flamegraph: ndb.svg
    172 	browser $<
    173 
    174 run-bench: testdata/many-events.json bench
    175 	./bench
    176 
    177 testdata/db/.dir:
    178 	@mkdir -p testdata/db
    179 	touch testdata/db/.dir
    180 
    181 test: test.c $(DEPS) testdata/db/.dir
    182 	$(CC) $(CFLAGS) test.c $(LDS) -o $@
    183 
    184 .PHONY: tags clean fake