LOCAL := $(filter 1,$(LOCAL)) DEBUG := $(filter 1,$(DEBUG)) LOCAL_PREFIX ?= $(HOME)/.luarocks ifeq ($(LOCAL), 1) PREFIX ?= $(LOCAL_PREFIX) else PREFIX ?= /usr/local endif VOLK_ROOT = ext/volksdata VOLK_LIBDIR = $(VOLK_ROOT)/build INCLUDE = -I$(PREFIX)/include VOLK_INCLUDE = -I$(VOLK_ROOT)/include CFLAGS = -shared -Wall -Wextra -fPIC ifeq ($(DEBUG), 1) CFLAGS += -DDEBUG -Og -ggdb else CFLAGS += -DNDEBUG -O3 -g0 endif LDFLAGS = -L$(PREFIX)/lib -L$(VOLK_LIBDIR) -llua -llmdb -lxxhash -luuid LUAC_SRC = $(wildcard src/*.c) #OBJ = $(patsubst src/%.c, lib/%.so, $(LUAC_SRC)) OBJ = lua_volksdata.so OBJPATH = lib/$(OBJ) ifeq ($(DEBUG), 1) VOLK_LIB = $(VOLK_LIBDIR)/libvolksdata_dbg.a else VOLK_LIB = $(VOLK_LIBDIR)/libvolksdata.a endif LUA_VER=5.4 INSTALL_SUFFIX=lib/lua/$(LUA_VER) INSTALL_DIR=$(PREFIX)/$(INSTALL_SUFFIX) LOCAL_INSTALL_DIR=$(shell luarocks config home_tree)/$(INSTALL_SUFFIX) VALGRIND_LOG=/tmp/lua_volksdata_valgrind.log .DEFAULT_GOAL := lib .PHONY: lib lib: $(VOLK_LIB) $(OBJPATH) $(VOLK_LIB): $(MAKE) -C $(VOLK_ROOT) lib LOCAL=1 DEBUG=$(DEBUG) LOCAL_PREFIX=$(VOLK_ROOT) $(OBJPATH): src/*.c src/lua_volksdata.h $(CC) $(INCLUDE) $(CFLAGS) $(LDFLAGS) -o $@ src/*.c $(VOLK_LIB) install: lib mkdir -p $(INSTALL_DIR) cp $(OBJPATH) $(INSTALL_DIR)/volksdata.so .PHONY: uninstall uninstall: $(RM) $(INSTALL_DIR)/$(OBJ) .PHONY: clean clean: $(RM) lib/*.so .PHONY: depclean depclean: $(MAKE) -C $(VOLK_ROOT) clean LOCAL=1 LOCAL_PREFIX=. .PHONY: memcheck memcheck: valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ --log-fd=9 --suppressions=valgrind-lua-noreadline.supp \ lua -e "dofile 'scratch.lua'" 9>|$(VALGRIND_LOG); \ echo "Log file in $(VALGRIND_LOG)"