ckb-librocksdb-sys 6.11.6

Native bindings to librocksdb
Documentation
include rocksdb/src.mk

rocksdb_lib_sources.txt: rocksdb/src.mk
	@echo -n "${LIB_SOURCES}" | tr ' ' '\n' > rocksdb_lib_sources.txt

gen_lib_sources: rocksdb_lib_sources.txt

gen_bindings:
	bindgen rocksdb/include/rocksdb/c.h \
		--size_t-is-usize \
		--blacklist-type max_align_t \
		--ctypes-prefix libc \
		-o src/bindings.rs

gen_patches:
	bindgen patches/rocksdb.h \
		--size_t-is-usize --blacklist-type max_align_t --ctypes-prefix libc \
		--generate types,functions \
		--blacklist-type rocksdb_cache_t \
		--blacklist-type rocksdb_env_t \
		--blacklist-type rocksdb_options_t \
		`sed -n '/^extern ROCKSDB_LIBRARY_API/ {n;p}' patches/rocksdb.h | sed -n 's/^    .* \([a-z0-9_]*\)(.*$$/\1/p' | xargs -I {} echo -n " --whitelist-function {}"` \
		-o src/patches.rs -- -I rocksdb/include

test:
	cargo build
	rm -rf tmp-test-memory-leak
	gcc -g -I rocksdb/include/ -I . \
			-L $$(find . -name "librocksdb.a" -exec dirname {} \; | head -1) \
			-o tmp-test-memory-leak \
			tests/memory/rocksdb_options_load_from_file.c \
			-lrocksdb -lpthread -ldl -lm -lstdc++ \
		&& valgrind --tool=memcheck --leak-check=full ./tmp-test-memory-leak \
	    && rm tmp-test-memory-leak