Makefile 1.6 KB

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