@@ -7,7 +7,7 @@ CCLEANUP_OBJ  ?= ccleanup.obj
77CLEANUP       ?= YES
88#----------------------------
99
10- VERSION := 7.4 
10+ VERSION := 7.5 
1111
1212#----------------------------
1313# try not to edit anything below these lines unless you know what you are doing
@@ -16,10 +16,6 @@ VERSION := 7.4
1616#----------------------------
1717
1818# define some common makefile things
19- 
20- # source: http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html
21- rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d))
22- 
2319empty :=
2420space := $(empty) $(empty)
2521comma := $(empty),$(empty)
@@ -83,15 +79,15 @@ ICON_OBJ      := $(ICON_ASM:%.src=%.obj)
8379ALLDIRS       := $(sort $(dir $(wildcard $(SRCDIR)/*/)))
8480
8581# find all of the available C, H and ASM files (Remember, you can create C <-> assembly routines easily this way)
86- CSOURCES      := $(call NATIVEPATH,$(call rwildcard ,$(SRCDIR), *.c))
87- CPPSOURCES    := $(call NATIVEPATH,$(call rwildcard ,$(SRCDIR), *.cpp))
88- USERHEADERS   := $(call NATIVEPATH,$(call rwildcard ,$(SRCDIR), *.h))
89- USERHEADERS   += $(call NATIVEPATH,$(call rwildcard ,$(SRCDIR), *.hpp))
90- ASMSOURCES    := $(call NATIVEPATH,$(call rwildcard ,$(SRCDIR), *.asm))
82+ CSOURCES      := $(call NATIVEPATH,$(foreach dir ,$(ALLDIRS),$(wildcard $(dir) *.c) ))
83+ CPPSOURCES    := $(call NATIVEPATH,$(foreach dir ,$(ALLDIRS),$(wildcard $(dir) *.cpp) ))
84+ USERHEADERS   := $(call NATIVEPATH,$(foreach dir ,$(ALLDIRS),$(wildcard $(dir) *.h) ))
85+ USERHEADERS   += $(call NATIVEPATH,$(foreach dir ,$(ALLDIRS),$(wildcard $(dir) *.hpp) ))
86+ ASMSOURCES    := $(call NATIVEPATH,$(foreach dir ,$(ALLDIRS),$(wildcard $(dir) *.asm) ))
9187
9288# figure out what the names of the sources will become once made into objects
93- OBJECTS       : = $(filter %.obj,$(patsubst $(SRCDIR)/%.c,$( OBJDIR)/%.obj ,$(subst \,/, $(CSOURCES) )))
94- OBJECTS       += $(filter %.obj,$(patsubst $(SRCDIR)/%.asm,$( OBJDIR)/%.obj ,$(subst \,/, $(ASMSOURCES) )))
89+ OBJECTS       + = $(addprefix $( OBJDIR)/,$(notdir  $(CSOURCES:%.c=%.obj )))
90+ OBJECTS       += $(addprefix $( OBJDIR)/,$(notdir  $(ASMSOURCES:%.asm=%.obj )))
9591
9692# check if there is an icon present that we can convert; if so, generate a recipe to build it properly
9793ifneq ("$(wildcard $(ICONPNG))","")
@@ -212,11 +208,9 @@ LDFLAGS := \
212208
213209ifneq ($(OS),Windows_NT)
214210	LDFLAGS := '$(LDFLAGS)'
215- 	SAFEMKDIR = $(MKDIR) $(call NATIVEPATH,$1)
216211else
217212	WINCHKBINDIR := $(WINCHKDIR) $(BINDIR)
218213	WINCHKOBJDIR := $(WINCHKDIR) $(OBJDIR)
219- 	SAFEMKDIR = $(WINCHKDIR) $(call NATIVEPATH,$1) $(MKDIR) $(call NATIVEPATH,$1)
220214endif
221215
222216# this rule is trigged to build everything
@@ -226,7 +220,7 @@ dirs:
226220	@echo C CE SDK Version $(VERSION) && \
227221	$(WINCHKBINDIR) $(MKDIR) $(BINDIR) && \
228222	$(WINCHKOBJDIR) $(MKDIR) $(OBJDIR)
229- 
223+ 	 
230224$(BINDIR)/$(TARGET8XP): $(BINDIR)/$(TARGETHEX)
231225	@$(CD) $(BINDIR) && \
232226	$(CV) $(CVFLAGS) $(notdir $<)
@@ -236,43 +230,36 @@ $(BINDIR)/$(TARGETHEX): $(OBJECTS)
236230
237231# this rule handles conversion of the icon, if it is ever updated
238232$(OBJDIR)/$(ICON_OBJ): $(ICONPNG)
239- 	@$(call SAFEMKDIR,$(@D)) && \
240- 	$(ICON_CONV) && \
241- 	$(CD) $(call NATIVEPATH,$(@D)) && \
233+ 	@$(ICON_CONV) && \
234+ 	$(CD) $(OBJDIR) && \
242235	$(AS) $(ASM_FLAGS) $(ICON_ASM)
243236
244237$(OBJDIR)/%.obj: $(GFXDIR)/%.c $(USERHEADERS)
245- 	@$(call SAFEMKDIR,$(@D)) && \
246- 	$(CD) $(call NATIVEPATH,$(@D)) && \
238+ 	@$(CD) $(OBJDIR) && \
247239	$(CC) $(CFLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
248240
249241$(OBJDIR)/%.obj: $(GFXDIR)/%.asm $(USERHEADERS)
250- 	@$(call SAFEMKDIR,$(@D)) && \
251- 	$(CD) $(call NATIVEPATH,$(@D)) && \
242+ 	@$(CD) $(OBJDIR) && \
252243	$(AS) $(ASM_FLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
253244
254245# this rule builds the assembly files and places them in the object directory
255246$(OBJDIR)/%.obj: $(SRCDIR)/%.asm $(USERHEADERS)
256- 	@$(call SAFEMKDIR,$(@D)) && \
257- 	$(CD) $(call NATIVEPATH,$(@D)) && \
247+ 	@$(CD) $(OBJDIR) && \
258248	$(AS) $(ASM_FLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
259249
260250# these rules compile the source files into object files
261251$(OBJDIR)/%.obj: $(SRCDIR)/%.c $(USERHEADERS)
262- 	@$(call SAFEMKDIR,$(@D)) && \
263- 	$(CD) $(call NATIVEPATH,$(@D)) && \
252+ 	@$(CD) $(OBJDIR) && \
264253	$(CC) $(CFLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
265254
266255# these rules compile the source files into object files
267256$(OBJDIR)/%.obj: $(SRCDIR)/*/%.c $(USERHEADERS)
268- 	@$(call SAFEMKDIR,$(@D)) && \
269- 	$(CD) $(call NATIVEPATH,$(@D)) && \
257+ 	@$(CD) $(OBJDIR) && \
270258	$(CC) $(CFLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
271259
272260# this rule builds the assembly files and places them in the object directory
273261$(OBJDIR)/%.obj: $(SRCDIR)/*/%.asm $(USERHEADERS)
274- 	@$(call SAFEMKDIR,$(@D)) && \
275- 	$(CD) $(call NATIVEPATH,$(@D)) && \
262+ 	@$(CD) $(OBJDIR) && \
276263	$(AS) $(ASM_FLAGS) $(call WINPATH,$(addprefix $(CURDIR)/,$<))
277264
278265clean:
0 commit comments