all: test LMODULES := supple supple.request supple.objects supple.sandbox CMODULES := supple.capi MODULES := $(LMODULES) $(CMODULES) LUA_VER := 5.1 TEST_MODULES := $(MODULES) INST_BASE := /usr/local LINST_ROOT := $(DESTDIR)$(INST_BASE)/share/lua/$(LUA_VER) CINST_ROOT := $(DESTDIR)$(INST_BASE)/lib/lua/$(LUA_VER) LMOD_FILES := $(patsubst %,%.lua,$(subst .,/,$(LMODULES))) CMOD_FILES := $(patsubst %,%.so,$(subst .,/,$(CMODULES))) CMOD_TARGETS := $(patsubst %,lib/%.so,$(subst .,/,$(CMODULES))) CMOD_OBJECTS := $(patsubst %,lib/%.o,$(subst .,/,$(CMODULES))) .PRECIOUS: $(CMOD_OBJECTS) LUA_INTERP_NAME := lua$(LUA_VER) LUA_INTERP_PATH := $(shell which lua$(LUA_VER)) INCS := -I/usr/include/lua$(LUA_VER) OPT := -O0 -g WARN := -Wall -Werror DEFS := -D'LUA_INTERP_NAME="$(LUA_INTERP_NAME)"' \ -D'LUA_INTERP_PATH="$(LUA_INTERP_PATH)"' CFLAGS := $(INCS) $(OPT) $(WARN) $(DEFS) $(CFLAGS) LFLAGS := -O1 -g $(LFLAGS) %.so: %.o $(CC) $(LFLAGS) -shared -o $@ $^ -llua$(LUA_VER) %.o: %.c $(CC) $(CFLAGS) -fPIC -o $@ -c $< build: $(CMOD_TARGETS) wrapper wrapper: src/wrapper.c $(CC) $(LFLAGS) $(CFLAGS) -o $@ $< -llua$(LUA_VER) testwrapper: src/wrapper.c $(CC) $(LFLAGS) $(CFLAGS) -DTESTING_SUPPLE -o $@ $< -llua$(LUA_VER) -chown root:root $@ -chmod u+s $@ ls -l $@ install: build mkdir -p $(LINST_ROOT)/supple mkdir -p $(CINST_ROOT)/supple for MOD in $(sort $(LMOD_FILES)); do \ cp lib/$${MOD} $(LINST_ROOT)/$${MOD}; \ done for MOD in $(sort $(CMOD_FILES)); do \ cp lib/$${MOD} $(CINST_ROOT)/$${MOD}; \ done ifeq ($(DEBUG),gdb) GDB := gdb --args endif LUA := LUA_PATH="$(shell pwd)/lib/?.lua;$(shell pwd)/extras/luacov/src/?.lua;;" LUA_CPATH="$(shell pwd)/lib/?.so;;" $(GDB) $(LUA_INTERP_PATH) clean: $(RM) luacov.report.out luacov.stats.out $(RM) $(CMOD_TARGETS) $(CMOD_OBJECTS) $(RM) wrapper testwrapper distclean: clean find . -name "*~" -delete .PHONY: example example: $(LUA) example/supple-example.lua .PHONY: test test: build testwrapper @$(RM) luacov.stats.out @ERR=0; \ for MOD in $(sort $(TEST_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. $(TEST_MODULES); \ exit $$ERR .PHONY: interactive interactive: build $(LUA) -e'lace=require"supple"' -i