123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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)"
|