1#-----------------------------------------------------------------------------
2# zpragma - Parse files and create zcc_opt.def
3#-----------------------------------------------------------------------------
4PROJ		:= z88dk-zpragma
5
6# EXESUFFIX is passed when cross-compiling Win32 on Linux
7ifeq ($(OS),Windows_NT)
8  EXESUFFIX 		:= .exe
9else
10  EXESUFFIX 		?=
11endif
12
13CC			?= gcc
14CFLAGS		+= -Wall -std=gnu11 -MMD -pedantic \
15-I../../ext/optparse \
16-I../../ext/regex
17
18INSTALL 	?= install
19
20SRCS 		:= $(wildcard *.c)
21
22OBJS_ALL	:= $(SRCS:.c=.o)
23OBJS		:= $(OBJS_ALL:$(PROJ).o=)
24
25DEPENDS		:= $(SRCS:.c=.d) $(T_SRCS:.c=.d)
26
27#------------------------------------------------------------------------------
28.PHONY: all clean test install
29
30#------------------------------------------------------------------------------
31define MAKE_EXE
32all: $(1)$(EXESUFFIX)
33
34$(1)$(EXESUFFIX): $(2)
35	$(CC) $(CFLAGS) -o $(1)$(EXESUFFIX) $(2) $(LDFLAGS)
36
37clean::
38	$(RM) $(1)$(EXESUFFIX) $(2)
39
40test:: $(1)$(EXESUFFIX)
41ifeq ($(3),1)
42	./$(1)$(EXESUFFIX)
43endif
44
45valgrind:: $(1)$(EXESUFFIX)
46	$(VALGRIND) $(1)$(EXESUFFIX)
47endef
48
49#------------------------------------------------------------------------------
50$(eval $(call MAKE_EXE,$(PROJ),$(OBJS_ALL),0))
51
52#------------------------------------------------------------------------------
53test:: $(PROJ)$(EXESUFFIX)
54	perl -S prove t/*.t
55
56#------------------------------------------------------------------------------
57clean::
58	$(RM) $(OBJS) $(DEPENDS) *.bak t/*.bak
59
60#------------------------------------------------------------------------------
61install: $(PROJ)$(EXESUFFIX)
62	$(BSD_INSTALL_PROGRAM) $(PROJ)$(EXESUFFIX) $(PREFIX)/bin/$(PROJ)$(EXESUFFIX)
63
64-include $(DEPENDS)
65