18 .PHONY: all mostlyclean clean install zip avail unavail bin $(PROGS)
22 bindir := $(prefix)/bin
23 datadir := $(if $(prefix),$(prefix)/share/cc65,$(abspath ..))
25 CA65_INC = $(datadir)/asminc
26 CC65_INC = $(datadir)/include
27 CL65_TGT = $(datadir)/target
28 LD65_LIB = $(datadir)/lib
29 LD65_OBJ = $(datadir)/lib
30 LD65_CFG = $(datadir)/cfg
34 DIRLIST = $(strip $(foreach dir,$1,$(wildcard $(dir))))
35 MKDIR = mkdir $(subst /,\,$1)
36 RMDIR = $(if $(DIRLIST),rmdir /s /q $(subst /,\,$(DIRLIST)))
43 CC = $(CROSS_COMPILE)gcc
44 AR = $(CROSS_COMPILE)ar
52 $(info USER_CFLAGS: $(USER_CFLAGS))
56 $(info GIT_SHA: $(GIT_SHA))
58 GIT_SHA := $(shell git rev-parse --short HEAD 2>$(NULLDEV))
59 ifneq ($(words $(GIT_SHA)),1)
65 CFLAGS += -MMD -MP -O -I common \
66 -Wall -Wextra -Wno-char-subscripts $(USER_CFLAGS) \
67 -DCA65_INC=$(CA65_INC) -DCC65_INC=$(CC65_INC) -DCL65_TGT=$(CL65_TGT) \
68 -DLD65_LIB=$(LD65_LIB) -DLD65_OBJ=$(LD65_OBJ) -DLD65_CFG=$(LD65_CFG)
87 $(call RMDIR,../wrk ../bin)
91 install avail unavail:
99 ln -s $(abspath ../bin/$(prog)) /usr/local/bin/$(prog)
103 define UNAVAIL_recipe
105 $(RM) /usr/local/bin/$(prog)
107 endef # UNAVAIL_recipe
110 $(if $(prefix),,$(error variable `prefix' must be set))
111 $(INSTALL) -d $(DESTDIR)$(bindir)
112 $(INSTALL) ../bin/* $(DESTDIR)$(bindir)
115 $(foreach prog,$(PROGS),$(AVAIL_recipe))
118 $(foreach prog,$(PROGS),$(UNAVAIL_recipe))
123 @cd .. && zip cc65 bin/*
127 $1_OBJS := $$(patsubst %.c,../wrk/%.o,$$(wildcard $1/*.c))
129 $$($1_OBJS): | ../wrk/$1
134 DEPS += $$($1_OBJS:.o=.d)
136 endef # OBJS_template
140 $$(eval $$(call OBJS_template,$1))
142 ../bin/$1$(EXE_SUFFIX): $$($1_OBJS) ../wrk/common/common.a | ../bin
143 $$(CC) $$(LDFLAGS) -o $$@ $$^ $$(LDLIBS)
145 $1: ../bin/$1$(EXE_SUFFIX)
147 endef # PROG_template
151 @$(CC) -c $(CFLAGS) -o $@ $<
156 $(eval $(call OBJS_template,common))
158 ../wrk/common/common.a: $(common_OBJS)
161 $(foreach prog,$(PROGS),$(eval $(call PROG_template,$(prog))))