summaryrefslogtreecommitdiff
path: root/Makefile
blob: 60a1d7e302594cf3ba7bc347841f4caac8f85204 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
all: test

LMODULES := supple supple.request supple.objects
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)

INCS := -I/usr/include/lua$(LUA_VER)
OPT := -O0 -g
WARN := -Wall -Werror
CFLAGS := $(INCS) $(OPT) $(WARN) $(CFLAGS)
LFLAGS := -O1 -g -shared $(LFLAGS)

%.so: %.o
	$(CC) $(LFLAGS) -shared -o $@ $^ -llua$(LUA_VER)

%.o: %.c
	$(CC) $(CFLAGS) -fPIC -o $@ -c $<

build: $(CMOD_TARGETS)

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$(LUA_VER)

clean:
	$(RM) luacov.report.out luacov.stats.out
	$(RM) $(CMOD_TARGETS) $(CMOD_OBJECTS)

distclean: clean
	find . -name "*~" -delete

.PHONY: example
example:
	$(LUA) example/supple-example.lua

.PHONY: test
test: build
	@$(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