OS=$(shell uname -s)
ifeq ($(OS), Darwin)
SHLIB_EXT=dylib
else
SHLIB_EXT=so
endif
OPENRESTY_PREFIX=/usr/local/openresty
PREFIX ?= /usr/local
LUA_INCLUDE_DIR ?= $(PREFIX)/include
LUA_LIB_DIR ?= $(PREFIX)/lib/lua/$(LUA_VERSION)
INSTALL ?= install
RELEASE_FOLDER = target/$(CARGO_BUILD_TARGET)/release
DEBUG_RELEASE_FOLDER = target/$(CARGO_BUILD_TARGET)/debug
.PHONY: all test install build clean
all: ;
build: $(RELEASE_FOLDER)/libatc_router.$(SHLIB_EXT) $(RELEASE_FOLDER)/libatc_router.a
$(RELEASE_FOLDER)/libatc_router.%: src/*.rs
cargo build --release
$(DEBUG_RELEASE_FOLDER)/libatc_router.%: src/*.rs
cargo build
install-lualib:
$(INSTALL) -d $(DESTDIR)$(LUA_LIB_DIR)/resty/router/
$(INSTALL) -m 664 lib/resty/router/*.lua $(DESTDIR)$(LUA_LIB_DIR)/resty/router/
install: build install-lualib
$(INSTALL) -m 775 $(RELEASE_FOLDER)/libatc_router.$(SHLIB_EXT) $(DESTDIR)$(LUA_LIB_DIR)/libatc_router.$(SHLIB_EXT)
install-debug: $(DEBUG_RELEASE_FOLDER)/libatc_router.% install-lualib
$(INSTALL) -m 775 $(DEBUG_RELEASE_FOLDER)/libatc_router.$(SHLIB_EXT) $(DESTDIR)$(LUA_LIB_DIR)/libatc_router.$(SHLIB_EXT)
test: $(DEBUG_RELEASE_FOLDER)/libatc_router.%
PATH="$(OPENRESTY_PREFIX)/nginx/sbin:$$PATH" \
LUA_PATH="$(realpath lib)/?.lua;$(realpath lib)/?/init.lua;$$LUA_PATH" \
LUA_CPATH="$(realpath $(DEBUG_RELEASE_FOLDER))/?.so;$$LUA_CPATH" \
prove -r t/
valgrind: $(DEBUG_RELEASE_FOLDER)/libatc_router.%
(PATH="$(OPENRESTY_PREFIX)/nginx/sbin:$$PATH" \
LUA_PATH="$(realpath lib)/?.lua;$(realpath lib)/?/init.lua;$$LUA_PATH" \
LUA_CPATH="$(realpath $(DEBUG_RELEASE_FOLDER))/?.so;$$LUA_CPATH" \
prove -r t/) 2>&1 | tee /dev/stderr | grep -q "match-leak-kinds: definite" && exit 1 || exit 0
clean:
rm -rf target