@@ -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