Makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. LOCAL ?= 0
  2. DEBUG ?= 0
  3. LOCAL_PREFIX ?= $(HOME)/.local
  4. ifneq ($(LOCAL), 0)
  5. PREFIX ?= $(LOCAL_PREFIX)
  6. else
  7. PREFIX ?= /usr/local
  8. endif
  9. VOLK_ROOT = ext/volksdata
  10. VOLK_LIBDIR = $(VOLK_ROOT)/build
  11. INCLUDE = -I$(PREFIX)/include
  12. VOLK_INCLUDE = -I$(VOLK_ROOT)/include
  13. CFLAGS = -shared -DDEBUG -Og -ggdb -Wall -fPIC
  14. LDFLAGS = -L$(PREFIX)/lib -L$(VOLK_LIBDIR) -llua -llmdb -lxxhash -luuid
  15. LUAC_SRC = $(wildcard src/*.c)
  16. #OBJ = $(patsubst src/%.c, lib/%.so, $(LUAC_SRC))
  17. OBJ = lua_volksdata.so
  18. OBJPATH = lib/$(OBJ)
  19. ifneq ($(DEBUG), 0)
  20. VOLK_LIB = $(VOLK_LIBDIR)/libvolksdata_dbg.a
  21. else
  22. VOLK_LIB = $(VOLK_LIBDIR)/libvolksdata.a
  23. endif
  24. LUA_VER=5.4
  25. INSTALL_SUFFIX=lib/lua/$(LUA_VER)
  26. INSTALL_DIR=$(PREFIX)/$(INSTALL_SUFFIX)
  27. LOCAL_INSTALL_DIR=$(shell luarocks config home_tree)/$(INSTALL_SUFFIX)
  28. VALGRIND_LOG=/tmp/lua_volksdata_valgrind.log
  29. .DEFAULT_GOAL := lib
  30. .PHONY: lib
  31. lib: $(VOLK_LIB) $(OBJPATH)
  32. $(VOLK_LIB):
  33. $(MAKE) -C $(VOLK_ROOT) lib LOCAL=1 DEBUG=$(DEBUG) LOCAL_PREFIX=$(VOLK_ROOT)
  34. $(OBJPATH): src/*.c src/lua_volksdata.h
  35. $(CC) $(INCLUDE) $(CFLAGS) $(LDFLAGS) -o $@ src/*.c $(VOLK_LIB)
  36. install: lib
  37. mkdir -p $(INSTALL_DIR)
  38. cp $(OBJPATH) $(INSTALL_DIR)
  39. .PHONY: uninstall
  40. uninstall:
  41. $(RM) $(INSTALL_DIR)/$(OBJ)
  42. .PHONY: clean
  43. clean:
  44. $(RM) lib/*.so
  45. .PHONY: depclean
  46. depclean:
  47. $(MAKE) -C $(VOLK_ROOT) clean LOCAL=1 LOCAL_PREFIX=.
  48. .PHONY: memcheck
  49. memcheck:
  50. valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \
  51. --log-fd=9 --suppressions=valgrind-lua-noreadline.supp \
  52. lua -e "dofile 'scratch.lua'" 9>|$(VALGRIND_LOG); \
  53. echo "Log file in $(VALGRIND_LOG)"