all: test MODULES := gall gall.util gall.ll \ gall.repository gall.object gall.commit gall.tag gall.tree LUA_VER := 5.1 INST_BASE := /usr/local INST_ROOT := $(DESTDIR)$(INST_BASE)/share/lua/$(LUA_VER) C_INST_ROOT := $(DESTDIR)$(INST_BASE)/lib/lua/$(LUA_VER) MOD_FILES := $(patsubst %,%.lua,$(subst .,/,$(MODULES))) install: cmodule mkdir -p $(INST_ROOT)/gall for MOD in $(sort $(MOD_FILES)); do \ cp lib/$${MOD} $(INST_ROOT)/$${MOD}; \ done if test -e lib/gall/ll/git2.so; then \ mkdir -p $(C_INST_ROOT)/gall/ll; \ cp lib/gall/ll/git2.so $(C_INST_ROOT)/gall/ll/; \ fi LUA := LUA_CPATH="$(shell pwd)/lib/?.so;;" LUA_PATH="$(shell pwd)/lib/?.lua;$(shell pwd)/extras/luacov/src/?.lua;;" lua$(LUA_VER) cmodule: try-cmodule try-cmodule: -@$(MAKE) --no-print-directory do-cmodule do-cmodule: lib/gall/ll/git2.so lib/gall/ll/git2.so: luagit2/build/git2.so mkdir -p lib/gall/ll cp $< $@ luagit2/build/git2.so: libgit2/build/gall-install-stamp mkdir -p luagit2/build cd luagit2/build && PKG_CONFIG_PATH="$(shell pwd)/libgit2/build/gall-install/lib/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_FLAGS="$${CMAKE_C_FLAGS} -Dluaopen_git2=luaopen_gall_ll_git2" -DCMAKE_MODULE_LINKER_FLAGS="-lssl" .. cd luagit2/build && $(MAKE) libgit2/build/gall-install-stamp: mkdir -p libgit2/build cd libgit2/build && cmake -DBUILD_SHARED_LIBS:BOOLEAN=OFF -DCMAKE_INSTALL_PREFIX:PATH=$(shell pwd)/libgit2/build/gall-install .. cd libgit2/build && $(MAKE) cd libgit2/build && $(MAKE) test cd libgit2/build && $(MAKE) install touch $@ clean: $(RM) luacov.report.out luacov.report.git2.out luacov.stats.out $(RM) -r libgit2/build luagit2/build lib/gall/ll distclean: clean find . -name "*~" -delete .PHONY: example example: $(LUA) example/gall-example.lua .PHONY: test test: cmodule @$(RM) luacov.stats.out; \ ERR=0; \ for MOD in $(sort $(MODULES)); do \ echo -n "$${MOD}: "; \ $(LUA) test/test-$${MOD}.lua; \ test "x$$?" = "x0" || ERR=1; \ done; \ $(LUA) extras/luacov/src/bin/luacov -X luacov. -X test. $(MODULES); \ mv luacov.report.out luacov.report.git2.out; \ for MOD in $(sort $(MODULES)); do \ echo -n "$${MOD} [no git2]: "; \ GALL_DISABLE_GIT2=1 $(LUA) test/test-$${MOD}.lua; \ test "x$$?" = "x0" || ERR=1; \ done; \ $(LUA) extras/luacov/src/bin/luacov -X luacov. -X test. $(MODULES); \ exit $$ERR @echo -n "Allowing use of luagit2 saves "; \ PRE=$$(grep sp.spawn_simple luacov.report.git2.out | awk '{print $$1}'); \ POST=$$(grep sp.spawn_simple luacov.report.out | awk '{print $$1}'); \ NORM=$$((POST - PRE)); \ echo -n $$((NORM - PRE)) / $${NORM}; \ echo " calls out to git executable during test suite." .PHONY: interactive interactive: $(LUA) -e'gall=require"gall"' -i