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