1#-----------------------------------------------------------------------------
2# appmake - Z88dk application creator
3#-----------------------------------------------------------------------------
4PROJ		:= z88dk-appmake
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 -I../common
15
16INSTALL 	?= install
17
18SRCS 		:= $(wildcard *.c) ../common/dirname.c
19
20OBJS_ALL	:= $(SRCS:.c=.o)
21OBJS		:= $(OBJS_ALL:$(PROJ).o=)
22
23DEPENDS		:= $(SRCS:.c=.d) $(T_SRCS:.c=.d)
24
25#------------------------------------------------------------------------------
26.PHONY: all clean test install
27
28#------------------------------------------------------------------------------
29define MAKE_EXE
30all: $(1)$(EXESUFFIX)
31
32$(1)$(EXESUFFIX): $(2)
33	$(CC) $(CFLAGS) -o $(1)$(EXESUFFIX) $(2) $(LDFLAGS)
34
35clean::
36	$(RM) $(1)$(EXESUFFIX) $(2)
37
38test:: $(1)$(EXESUFFIX)
39ifeq ($(3),1)
40	./$(1)$(EXESUFFIX)
41endif
42
43valgrind:: $(1)$(EXESUFFIX)
44	$(VALGRIND) $(1)$(EXESUFFIX)
45endef
46
47#------------------------------------------------------------------------------
48$(eval $(call MAKE_EXE,$(PROJ),$(OBJS_ALL),0))
49
50#------------------------------------------------------------------------------
51test:: $(PROJ)$(EXESUFFIX)
52	perl -S prove t/*.t
53
54#------------------------------------------------------------------------------
55clean::
56	$(RM) $(OBJS) $(DEPENDS) *.bak t/*.bak
57
58#------------------------------------------------------------------------------
59install: $(PROJ)$(EXESUFFIX)
60	$(BSD_INSTALL_PROGRAM) $(PROJ)$(EXESUFFIX) $(PREFIX)/bin/$(PROJ)$(EXESUFFIX)
61
62-include $(DEPENDS)
63