CRATE := kirmes
VERSION ?= $(shell git describe --tags --abbrev=0)
SOVERSION ?= $(shell head -40 Cargo.toml | crudini --get - package.metadata.capi.library version | sed 's/"//g')
SOVERSION_MAJOR := $(word 1,$(subst ., ,$(SOVERSION)))
HOST_TUPLE ?= $(shell rustc --print host-tuple)
all: debug
debug:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo build --features binaries
command -v cargo-cbuild || (echo "cargo cbuild isn't installed" && exit 1)
cargo cbuild
release:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo build --release
doc:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo doc
clean:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo clean
dist:
git archive --format=tar.gz --output ./$(CRATE)-$(VERSION).tar.gz HEAD
test:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo ctest
clippy:
command -v cargo || (echo "cargo isn't installed" && exit 1)
cargo clippy -- -W clippy::pedantic
examples: all
gcc -O0 -ggdb example/user_record.c -o target/$(HOST_TUPLE)/debug/user_record -Itarget/$(HOST_TUPLE)/debug/include -Ltarget/$(HOST_TUPLE)/debug/ -lkirmes
gcc -O0 -ggdb example/group_record.c -o target/$(HOST_TUPLE)/debug/group_record -Itarget/$(HOST_TUPLE)/debug/include -Ltarget/$(HOST_TUPLE)/debug/ -lkirmes
gcc -O0 -ggdb example/user_in_group.c -o target/$(HOST_TUPLE)/debug/user_in_group -Itarget/$(HOST_TUPLE)/debug/include -Ltarget/$(HOST_TUPLE)/debug/ -lkirmes
gcc -O0 -ggdb example/groups_of_user.c -o target/$(HOST_TUPLE)/debug/groups_of_user -Itarget/$(HOST_TUPLE)/debug/include -Ltarget/$(HOST_TUPLE)/debug/ -lkirmes
gcc -O0 -ggdb example/user_record_from_json.c -o target/$(HOST_TUPLE)/debug/user_record_from_json -Itarget/$(HOST_TUPLE)/debug/include -Ltarget/$(HOST_TUPLE)/debug/ -lkirmes
ln -sf libkirmes.so target/$(HOST_TUPLE)/debug/libkirmes.so.$(SOVERSION_MAJOR)
ln -sf libkirmes.so.$(SOVERSION_MAJOR) target/$(HOST_TUPLE)/debug/libkirmes.so.$(SOVERSION)