.DEFAULT_GOAL := help
.PHONY: build
build:
cargo build --examples
.PHONY: build-release
build-release:
cargo build --release
.PHONY: example
example:
cargo run --example rust_usage
.PHONY: check
check:
cargo check
.PHONY: fmt
fmt:
cargo fmt
.PHONY: vet
vet:
cargo clippy -- -D warnings
.PHONY: test
test:
cargo test
.PHONY: shared
shared:
cargo build --lib
.PHONY: headers
headers:
cbindgen --config cbindgen.toml --crate thaiidcard --output thaiidcard.h
.PHONY: install
install: build-release
sudo cp target/release/libthaiidcard.* /usr/local/lib/
@-sudo cp thaiidcard.h /usr/local/include/ 2>/dev/null; true
.PHONY: build-linux
build-linux:
docker build --build-arg TARGET=x86_64-unknown-linux-gnu \
-f Dockerfile.build -t thaiidcard-builder .
docker run --rm -v $(PWD):/build thaiidcard-builder
@ls -lh target/x86_64-unknown-linux-gnu/release/libthaiidcard.so 2>/dev/null || true
.PHONY: build-linux-arm64
build-linux-arm64:
docker build --build-arg TARGET=aarch64-unknown-linux-gnu \
-f Dockerfile.build -t thaiidcard-builder .
docker run --rm -v $(PWD):/build thaiidcard-builder
@ls -lh target/aarch64-unknown-linux-gnu/release/libthaiidcard.so 2>/dev/null || true
.PHONY: build-mac
build-mac:
docker build --build-arg TARGET=aarch64-apple-darwin \
-f Dockerfile.build -t thaiidcard-builder .
docker run --rm -v $(PWD):/build thaiidcard-builder
@ls -lh target/aarch64-apple-darwin/release/libthaiidcard.dylib 2>/dev/null || true
.PHONY: build-mac-x64
build-mac-x64:
docker build --build-arg TARGET=x86_64-apple-darwin \
-f Dockerfile.build -t thaiidcard-builder .
docker run --rm -v $(PWD):/build thaiidcard-builder
@ls -lh target/x86_64-apple-darwin/release/libthaiidcard.dylib 2>/dev/null || true
.PHONY: build-win
build-win:
docker build --build-arg TARGET=x86_64-pc-windows-gnu \
-f Dockerfile.build -t thaiidcard-builder .
docker run --rm -v $(PWD):/build thaiidcard-builder
@ls -lh target/x86_64-pc-windows-gnu/release/thaiidcard.dll 2>/dev/null || true
.PHONY: build-win-native
build-win-native:
cargo build --target x86_64-pc-windows-gnu --lib
@echo "---"
@ls -lh target/x86_64-pc-windows-gnu/debug/thaiidcard.dll
.PHONY: build-win-native-release
build-win-native-release:
cargo build --target x86_64-pc-windows-gnu --lib --release
@echo "---"
@ls -lh target/x86_64-pc-windows-gnu/release/thaiidcard.dll
.PHONY: c-example
c-example: shared
cc -o /tmp/thaiid-c-example examples/c_usage.c $(shell uname -s | grep -q Linux && echo "-ldl")
/tmp/thaiid-c-example
.PHONY: c-example-link
c-example-link: shared
cc -o /tmp/thaiid-c-link examples/c_usage.c \
-Ltarget/debug -lthaiidcard \
-framework PCSC \
-Wl,-rpath,target/debug
/tmp/thaiid-c-link
.PHONY: cpp-example
cpp-example: shared
g++ -std=c++17 -o /tmp/thaiid-cpp-example examples/cpp_usage.cpp $(shell uname -s | grep -q Linux && echo "-ldl")
/tmp/thaiid-cpp-example
.PHONY: go-example
go-example: shared
go run examples/go_usage.go
.PHONY: java-example
java-example: shared
jbang examples/java_usage.java
.PHONY: kotlin-example
kotlin-example: shared
jbang examples/kotlin_usage.kt
.PHONY: js-example
js-example: shared
node examples/js_usage.js
.PHONY: python-example
python-example: shared
python3 examples/python_usage.py
.PHONY: ruby-example
ruby-example: shared
ruby examples/ruby_usage.rb
.PHONY: clean
clean:
cargo clean
rm -f thaiidcard.h
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'