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