changeset 2594:669b71e8b868

Rename Makefile.gen to Makefile.common
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 03 Aug 2023 09:07:10 +0300
parents 81f45b2fa118
children ee6225ed27ec
files Makefile Makefile.common Makefile.cross-mingw Makefile.gen
diffstat 4 files changed, 559 insertions(+), 559 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Fri Dec 30 10:35:52 2022 +0200
+++ b/Makefile	Thu Aug 03 09:07:10 2023 +0300
@@ -42,7 +42,7 @@
 
 TOOL_LDFLAGS ?=
 
-include $(DMLIB)Makefile.gen
+include $(DMLIB)Makefile.common
 
 
 install: all
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.common	Thu Aug 03 09:07:10 2023 +0300
@@ -0,0 +1,557 @@
+###
+### Get settings from config.mak or other include
+###
+ifneq ($(DM_CONFIG),)
+ifneq ($(DM_CONFIG),no)
+include $(DM_CONFIG)
+else
+DM_CONFIG=
+endif
+else
+include config.mak
+DM_CONFIG=config.mak
+endif
+
+
+###
+### Compiler flags
+###
+ifeq ($(EXTRA_CFLAGS),)
+EXTRA_CFLAGS =-O3
+# -march=corei7
+endif
+
+CFLAGS += -g -W -Wall -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200808L $(EXTRA_CFLAGS)
+CXXFLAGS = $(CFLAGS)
+CFLAGS += -std=c11
+#CFLAGS += -pedantic
+
+DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS)
+DM_LDFLAGS += $(LDFLAGS)
+
+
+###
+### Tools, paths and directories
+###
+MKDIR ?= mkdir
+MKDIR_P ?= $(MKDIR) -p
+BINPATH ?= ./
+DMLIB ?= ./
+TOOL_SRC = $(DMLIB)tools/
+TESTS_SRC = $(DMLIB)tests/
+
+TOOL_BINPATH ?= $(TOOL_SRC)
+TESTS_BINPATH ?= $(TESTS_SRC)
+
+DMLIB_SRC = $(DMLIB)src/
+
+
+###
+### Extra debug messages etc?
+###
+ifeq ($(DM_DEBUG),yes)
+DM_CFLAGS += -DDM_DEBUG
+
+# Disable JSS_LIGHT
+JSS_LIGHT=no
+endif
+
+
+###
+### Build demo target?
+###
+ifneq ($(DEMO_BIN),)
+BINARIES += $(DEMO_BIN)
+endif
+
+ifeq ($(DM_BUILT_IN_SETUP),yes)
+DM_CFLAGS += -DDM_BUILT_IN_SETUP
+endif
+
+
+###
+### Editor
+###
+ifeq ($(DM_USE_TIMELINE),yes)
+DM_CFLAGS+=-DDM_USE_TIMELINE
+DMLIB_OBJS += dmtimeline.o dmtimelinew.o
+
+ifeq ($(DM_BUILD_EDITOR),yes)
+ifneq ($(DEMO_BIN),)
+BINARIES += ed_$(DEMO_BIN)
+TARGETS += $(EDITOR_MAKEFILE) $(EDITOR_PRO)
+TMPFILES += $(OBJPATH)moc_*
+endif
+endif
+endif
+
+EDITOR_PRO = editor.pro
+EDITOR_MAKEFILE = Makefile.editor
+EDITOR_SOURCES = editor/edmain.cpp editor/edgui.cpp editor/edview.cpp \
+	editor/edtlobj.cpp editor/edtimeline.cpp editor/edwaveform.cpp \
+	editor/edres.cpp
+EDITOR_HEADERS = editor/edmain.h editor/edtlobj.h editor/edview.h \
+	editor/edtimeline.h editor/edwaveform.h editor/edres.h
+
+
+###
+### Form additional compilation defines based on settings
+###
+
+# Enable SIMD routines, if requested
+ifeq ($(DM_USE_SIMD),yes)
+DM_CFLAGS+=-DDM_USE_SIMD -msse2
+endif
+
+# Enable Tremor Ogg Vorbis decoder
+ifeq ($(DM_USE_TREMOR),yes)
+DM_CFLAGS+=-DDM_USE_TREMOR $(TREMOR_CFLAGS)
+DEMO_LDFLAGS+=$(TREMOR_LDFLAGS)
+endif
+
+
+###
+### Filesystem
+###
+ifeq ($(DM_USE_PACKFS),yes)
+BUILD_RES=yes
+DM_CFLAGS += -DDM_USE_PACKFS
+DMLIB_OBJS += dmpack.o
+ifeq ($(DM_BUILD_TOOLS),yes)
+TOOL_BINARIES += packed
+endif
+endif
+
+ifeq ($(DM_USE_STDIO),yes)
+BUILD_RES=yes
+DM_CFLAGS += -DDM_USE_STDIO
+endif
+
+ifeq ($(DM_USE_MEMIO),yes)
+BUILD_RES=yes
+DM_CFLAGS += -DDM_USE_MEMIO
+endif
+
+ifeq ($(BUILD_RES),yes)
+DMLIB_OBJS += dmres.o dmresw.o
+endif
+
+###
+### Graphics support
+###
+
+ifeq ($(DM_GFX_LINES),yes)
+DM_CFLAGS += -DDM_GFX_LINES
+DMLIB_OBJS += dmline.o
+endif
+
+ifeq ($(DM_GFX_BLITS),yes)
+DM_CFLAGS += -DDM_GFX_BLITS
+DMLIB_OBJS += dmblit.o
+
+ifeq ($(DM_GFX_BM_TEXT),yes)
+DM_CFLAGS += -DDM_GFX_BM_TEXT
+DMLIB_OBJS += dmtext_bm.o
+ifeq ($(DM_BUILD_TOOLS),yes)
+ifeq ($(DM_USE_STDIO),yes)
+TOOL_BINARIES += fontconv
+endif
+endif
+endif
+endif
+
+ifeq ($(DM_GFX_TTF_TEXT),yes)
+DM_CFLAGS += -DDM_GFX_TTF_TEXT
+DMLIB_OBJS += dmtext_ttf.o
+
+ifeq ($(DM_BUILD_TESTS),yes)
+ifeq ($(DM_GFX_BLITS),yes)
+ifeq ($(DM_USE_STDIO),yes)
+#TESTS_BINARIES += blittest
+endif
+endif
+endif
+else
+SDL_TTF_LDFLAGS=
+SDL_TTF_CFLAGS=
+endif
+
+
+###
+### miniJSS
+###
+MINIJSS=$(DMLIB)/minijss/
+
+
+ifeq ($(JSS),yes)
+DM_CFLAGS+=-DDM_USE_JSS -I$(MINIJSS)
+
+ifeq ($(JSS_LIGHT),yes)
+DM_CFLAGS+=-DJSS_LIGHT -Os
+else
+ifeq ($(JSS_USE_ASSERTS),yes)
+DM_CFLAGS+=-DJSS_USE_ASSERTS
+endif
+ifeq ($(JSS_DEBUG),yes)
+DM_CFLAGS+=-DJSS_DEBUG
+endif
+endif
+
+ifeq ($(JSS_MIX_FP),yes)
+DM_CFLAGS+=-DJSS_MIX_FP
+endif
+
+ifeq ($(JSS_SUP_THREADS),yes)
+DM_CFLAGS+=-DJSS_SUP_THREADS
+endif
+
+
+SUP_MODLOAD=no
+ifeq ($(JSS_SUP_XM),yes)
+SUP_MODLOAD=yes
+DMLIB_OBJS+= jloadxm.o 
+DM_CFLAGS+=-DJSS_SUP_XM
+endif
+
+ifeq ($(JSS_SUP_JSSMOD),yes)
+SUP_MODLOAD=yes
+DMLIB_OBJS+= jloadjss.o
+DM_CFLAGS+=-DJSS_SUP_JSSMOD $(JSSMOD_FLAGS)
+endif
+
+ifeq ($(DM_USE_C),yes)
+DM_CFLAGS+=-DDM_USE_C
+TARGETS += $(MINIJSS)jmix_c.c
+DMLIB_OBJS+=jmix_c.o
+endif
+
+#ifeq ($(DM_USE_SIMD),yes)
+#DMLIB_OBJS+=jmix_simd.o
+#endif
+
+ifeq ($(DM_BUILD_TOOLS),yes)
+ifeq ($(DM_USE_STDIO),yes)
+ifeq ($(JSS_SUP_JSSMOD),yes)
+ifeq ($(JSS_SUP_XM),yes)
+TOOL_BINARIES+= xm2jss
+endif
+endif
+endif
+endif
+DMLIB_OBJS += jss.o jssmix.o jssmod.o jssplr.o
+endif
+
+
+### Dependancies
+ifeq ($(DM_BUILD_TOOLS),yes)
+ifeq ($(DM_USE_STDIO),yes)
+TOOL_BINARIES+= objlink data2inc gfxconv fanalyze
+ifeq ($(SUP_MODLOAD),yes)
+TOOL_BINARIES+= dumpmod mod2wav
+TESTS_BINARIES+= plrtest
+ifeq ($(DM_GFX_BLITS),yes)
+TOOL_BINARIES+= 64vw
+ifeq ($(DM_GFX_BM_TEXT),yes)
+TOOL_BINARIES+= ppl
+endif
+endif
+endif
+
+endif
+endif
+
+
+### libPNG handling
+ifeq ($(DM_USE_LIBPNG),yes)
+DM_CFLAGS += -DDM_USE_LIBPNG $(LIBPNG_CFLAGS)
+endif
+
+
+### Check requirements for zlib
+ifeq ($(DM_USE_ZLIB),yes)
+DM_CFLAGS += -DDM_USE_ZLIB $(ZLIB_CFLAGS)
+DEMO_LDFLAGS += $(ZLIB_LDFLAGS)
+else
+DEMO_LDFLAGS +=
+endif
+
+
+### What tests to build?
+ifeq ($(DM_BUILD_TESTS),yes)
+TESTS_BINARIES += vecmattest fptest dzlibtest encbr1test
+endif
+
+FONTCONV_BIN=$(TOOL_BINPATH)fontconv$(BINEXT)
+DATA2INC_BIN=$(TOOL_BINPATH)data2inc$(BINEXT)
+
+ifeq ($(BINEXT),.exe)
+# Cross-building Windows binaries requires locally installed utilities
+FONTCONV_DEP=
+DATA2INC_DEP=
+else
+ifeq ($(DM_BUILD_TOOLS),yes)
+FONTCONV_DEP=$(FONTCONV_BIN)
+DATA2INC_DEP=$(DATA2INC_BIN)
+endif
+endif
+
+
+###
+### Main targets and objects
+###
+DMLIB_A = $(OBJPATH)dmlib.a
+DMLIB_OBJS += \
+	dmfile.o dmlib.o dmcurves.o dmstring.o \
+	dmgrowbuf.o dmargs.o dmvecmat.o dmperlin.o \
+	dmimage.o dmengine.o dmzlib.o \
+	dmlicense.o
+
+
+TESTS_TARGETS = $(addprefix $(TESTS_BINPATH),$(addsuffix $(BINEXT),$(TESTS_BINARIES)))
+TOOL_TARGETS = $(addprefix $(TOOL_BINPATH),$(addsuffix $(BINEXT),$(TOOL_BINARIES)))
+
+TARGETS += \
+	$(DMLIB_A) \
+	$(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) \
+	$(TOOL_TARGETS) $(TESTS_TARGETS)
+
+NOBUILD_TARGETS +=
+NOINST_TARGETS += 
+
+
+###
+### Functions and compilation/link commands
+###
+ifneq ($(V),1)
+DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
+else
+DO_CMD=/bin/echo -E $(3) && $(3)
+endif
+DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi
+
+
+COMPILE_C_OBJ = \
+	@$(call DO_MKDIR,$(OBJPATH)) ; \
+	$(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
+
+LINK_C_BIN = \
+	@$(call DO_MKDIR,$(BINPATH)) ; \
+	$(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
+
+COMPILE_CXX_OBJ = \
+	@$(call DO_MKDIR,$(OBJPATH)) ; \
+	$(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
+
+LINK_CXX_BIN = \
+	@$(call DO_MKDIR,$(BINPATH)) ; \
+	$(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
+
+LINK_STATIC_LIB = \
+	@$(call DO_MKDIR,$(OBJPATH)) ; \
+	$(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
+	$(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
+
+
+###
+### Generic target rules
+###
+all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
+
+
+$(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(DMLIB)tests/%.c
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(DMLIB)tools/%.c
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: %.c %.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: %.c
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(MINIJSS)%.c
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(DMLIB_SRC)%.c $(DMLIB_SRC)%.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)%.o: $(DMLIB_SRC)%.c
+	$(call COMPILE_C_OBJ,)
+
+
+###
+### dmlib-specific rules
+###
+$(MINIJSS)jmix_c.c: $(MINIJSS)jmix_c_in.c $(MINIJSS)jmixtmpl_c.h $(MINIJSS)jmix_post_c.h
+	(echo "#include \"jssmix.h\"" && cpp $< $(DM_CFLAGS)) | sed "s/^# .*//g" > $@
+
+$(OBJPATH)dmimage.o: $(DMLIB_SRC)dmimage.c $(DMLIB_SRC)stb_image.c $(DMLIB_SRC)dmimage.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h
+	$(call COMPILE_C_OBJ,)
+
+
+$(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(OBJPATH)jss.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(OBJPATH)jssmod.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(OBJPATH)jssmix.o
+	$(call COMPILE_C_OBJ,)
+
+
+$(OBJPATH)dmblit.o: $(DMLIB_SRC)dmblit.c $(DMLIB_SRC)dmscaledblit.h $(DMLIB_SRC)dmunscaledblit.h $(DMLIB_SRC)dmblitfunc.h $(DMLIB_SRC)dmlib.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)dmline.o: $(DMLIB_SRC)dmline.c $(DMLIB_SRC)dmdrawline.h $(DMLIB_SRC)dmlinefunc.h $(DMLIB_SRC)dmlineclip.h $(DMLIB_SRC)dmlib.h
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h $(DMLIB_A)
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)lib64gfx.o: $(DMLIB)tools/lib64gfx.c $(DMLIB)tools/lib64gfx.h $(OBJPATH)libgfx.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)lib64util.o: $(DMLIB)tools/lib64util.c $(DMLIB)tools/lib64util.h $(OBJPATH)lib64gfx.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(OBJPATH)lib64gfx.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)64vw.o: $(DMLIB)tools/64vw.c $(OBJPATH)lib64util.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)gfxconv.o: $(DMLIB)tools/gfxconv.c $(OBJPATH)lib64util.o
+	$(call COMPILE_C_OBJ,)
+
+$(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(DMLIB_SRC)setupfont.h \
+	$(OBJPATH)libgutil.o $(DMLIB_A)
+	$(call COMPILE_C_OBJ,)
+
+
+$(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt $(FONTCONV_DEP)
+	@$(call DO_CMD,FONT,$@ $<,$(FONTCONV_BIN) $< $@)
+
+$(DMLIB_SRC)setupfont.h: $(DMLIB)assets/SetupFont.dmf $(DATA2INC_DEP)
+	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupFont -t Uint8 $< $@ > /dev/null)
+
+$(DMLIB_SRC)setupimage.h: $(DMLIB)assets/SetupImage.png $(DATA2INC_DEP)
+	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupImage -t Uint8 $< $@ > /dev/null)
+
+$(DMLIB_SRC)setupmenubar.h: $(DMLIB)assets/SetupMenuBar.png  $(DATA2INC_DEP)
+	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupMenuBar -t Uint8 $< $@ > /dev/null)
+
+
+$(OBJPATH)dmsimple.o: $(addprefix $(DMLIB_SRC), dmsimple.c dmengine.h \
+		setupmenubar.h setupfont.h setupimage.h dmsimple.c)
+	$(call COMPILE_C_OBJ,)
+
+
+$(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.common $(DM_CONFIG)
+	$(call LINK_STATIC_LIB,)
+
+
+###
+### Tests
+###
+define RULE_TESTS_BIN
+$$(TESTS_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A)
+	$$(call LINK_C_BIN,$$(DM_LDFLAGS) $$(SDL_LDFLAGS) $(3))
+
+endef
+
+$(eval $(call RULE_TESTS_BIN,blittest,,$$(SDL_TTF_LDFLAGS) -lm))
+$(eval $(call RULE_TESTS_BIN,dzlibtest,,$$(ZLIB_LDFLAGS)))
+$(eval $(call RULE_TESTS_BIN,plrtest,,$$(ZLIB_LDFLAGS) -lm))
+$(eval $(call RULE_TESTS_BIN,%test,,$$(TOOL_LDFLAGS) -lm))
+
+
+###
+### Tools
+###
+define RULE_TOOL_BIN
+$$(TOOL_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A)
+	$$(call LINK_C_BIN, $$(DM_LDFLAGS) $$(TOOL_LDFLAGS) $(3))
+
+endef
+
+$(eval $(call RULE_TOOL_BIN,fontconv,,\
+	$$(SDL_LDFLAGS) $$(SDL_TTF_LDFLAGS) $$(ZLIB_LDFLAGS) -lm))
+$(eval $(call RULE_TOOL_BIN,data2inc,,))
+$(eval $(call RULE_TOOL_BIN,packed,,$(ZLIB_LDFLAGS)))
+$(eval $(call RULE_TOOL_BIN,mod2wav,,$(ZLIB_LDFLAGS) -lm))
+$(eval $(call RULE_TOOL_BIN,xm2jss,,$(ZLIB_LDFLAGS)))
+$(eval $(call RULE_TOOL_BIN,dumpmod,,$(ZLIB_LDFLAGS)))
+$(eval $(call RULE_TOOL_BIN,ppl,\
+	$$(OBJPATH)libgutil.o,$$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS) -lm))
+$(eval $(call RULE_TOOL_BIN,objlink,,))
+$(eval $(call RULE_TOOL_BIN,fanalyze,,))
+
+$(eval $(call RULE_TOOL_BIN,gfxconv,\
+	$$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \
+	$$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\
+	$$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS)))
+
+$(eval $(call RULE_TOOL_BIN,64vw,\
+	$$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \
+	$$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\
+	$$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS)))
+
+
+###
+### Demo binary
+###
+ifneq ($(DEMO_BIN),)
+$(BINPATH)$(DEMO_BIN)$(BINEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A)
+	$(call LINK_C_BIN, $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm)
+endif
+
+
+###
+### Editor targets
+###
+$(EDITOR_PRO): $(DMLIB)Makefile.common $(DM_CONFIG) $(addprefix $(DMLIB),$(EDITOR_SOURCES) $(EDITOR_HEADERS)) $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A)
+	@echo " CREATE $@"
+	@echo "OBJECTS_DIR = $(OBJPATH)" > $@
+	@echo "MOC_DIR = $(OBJPATH)" >> $@
+	@echo "QMAKE_CXXFLAGS += $(DM_CFLAGS) $(SDL_CFLAGS)" >> $@
+	@echo "QMAKE_LIBS += $(filter-out %dmsimple.o,$(filter %.o %.a,$+))" >> $@
+	@echo "QMAKE_LIBS += $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS)" >> $@
+	@echo "MAKEFILE = $(EDITOR_MAKEFILE)" >> $@
+	@echo "CONFIG += debug" >> $@
+	@echo "QT += core gui opengl" >> $@
+	@echo "TARGET = $(BINPATH)ed_$(DEMO_BIN)$(BINEXT)" >> $@
+	@echo "TEMPLATE = app" >> $@
+	@echo "SOURCES = $(addprefix $(DMLIB),$(EDITOR_SOURCES))" >> $@
+	@echo "HEADERS = $(addprefix $(DMLIB),$(EDITOR_HEADERS))" >> $@
+	
+
+$(EDITOR_MAKEFILE): $(EDITOR_PRO)
+	@$(call DO_CMD,QMAKE,$+,qmake -Wall $<)
+
+$(BINPATH)ed_$(DEMO_BIN)$(BINEXT): $(EDITOR_MAKEFILE)
+	@$(MAKE) -f $<
+
+
+###
+### Special targets
+###
+clean:
+	-$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o
+
+distclean: clean
+	-$(RM) $(DISTCLEAN_TARGETS) *~ core *.core
+
+.PHONY: clean distclean all
--- a/Makefile.cross-mingw	Fri Dec 30 10:35:52 2022 +0200
+++ b/Makefile.cross-mingw	Thu Aug 03 09:07:10 2023 +0300
@@ -66,4 +66,4 @@
 
 TOOL_LDFLAGS ?= -mconsole -lmingw32
 
-include $(DMLIB)Makefile.gen
+include $(DMLIB)Makefile.common
--- a/Makefile.gen	Fri Dec 30 10:35:52 2022 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,557 +0,0 @@
-###
-### Get settings from config.mak or other include
-###
-ifneq ($(DM_CONFIG),)
-ifneq ($(DM_CONFIG),no)
-include $(DM_CONFIG)
-else
-DM_CONFIG=
-endif
-else
-include config.mak
-DM_CONFIG=config.mak
-endif
-
-
-###
-### Compiler flags
-###
-ifeq ($(EXTRA_CFLAGS),)
-EXTRA_CFLAGS =-O3
-# -march=corei7
-endif
-
-CFLAGS += -g -W -Wall -D_FILE_OFFSET_BITS=64 -D_POSIX_C_SOURCE=200808L $(EXTRA_CFLAGS)
-CXXFLAGS = $(CFLAGS)
-CFLAGS += -std=c11
-#CFLAGS += -pedantic
-
-DM_CFLAGS += -I$(DMLIB_SRC) $(SDL_CFLAGS)
-DM_LDFLAGS += $(LDFLAGS)
-
-
-###
-### Tools, paths and directories
-###
-MKDIR ?= mkdir
-MKDIR_P ?= $(MKDIR) -p
-BINPATH ?= ./
-DMLIB ?= ./
-TOOL_SRC = $(DMLIB)tools/
-TESTS_SRC = $(DMLIB)tests/
-
-TOOL_BINPATH ?= $(TOOL_SRC)
-TESTS_BINPATH ?= $(TESTS_SRC)
-
-DMLIB_SRC = $(DMLIB)src/
-
-
-###
-### Extra debug messages etc?
-###
-ifeq ($(DM_DEBUG),yes)
-DM_CFLAGS += -DDM_DEBUG
-
-# Disable JSS_LIGHT
-JSS_LIGHT=no
-endif
-
-
-###
-### Build demo target?
-###
-ifneq ($(DEMO_BIN),)
-BINARIES += $(DEMO_BIN)
-endif
-
-ifeq ($(DM_BUILT_IN_SETUP),yes)
-DM_CFLAGS += -DDM_BUILT_IN_SETUP
-endif
-
-
-###
-### Editor
-###
-ifeq ($(DM_USE_TIMELINE),yes)
-DM_CFLAGS+=-DDM_USE_TIMELINE
-DMLIB_OBJS += dmtimeline.o dmtimelinew.o
-
-ifeq ($(DM_BUILD_EDITOR),yes)
-ifneq ($(DEMO_BIN),)
-BINARIES += ed_$(DEMO_BIN)
-TARGETS += $(EDITOR_MAKEFILE) $(EDITOR_PRO)
-TMPFILES += $(OBJPATH)moc_*
-endif
-endif
-endif
-
-EDITOR_PRO = editor.pro
-EDITOR_MAKEFILE = Makefile.editor
-EDITOR_SOURCES = editor/edmain.cpp editor/edgui.cpp editor/edview.cpp \
-	editor/edtlobj.cpp editor/edtimeline.cpp editor/edwaveform.cpp \
-	editor/edres.cpp
-EDITOR_HEADERS = editor/edmain.h editor/edtlobj.h editor/edview.h \
-	editor/edtimeline.h editor/edwaveform.h editor/edres.h
-
-
-###
-### Form additional compilation defines based on settings
-###
-
-# Enable SIMD routines, if requested
-ifeq ($(DM_USE_SIMD),yes)
-DM_CFLAGS+=-DDM_USE_SIMD -msse2
-endif
-
-# Enable Tremor Ogg Vorbis decoder
-ifeq ($(DM_USE_TREMOR),yes)
-DM_CFLAGS+=-DDM_USE_TREMOR $(TREMOR_CFLAGS)
-DEMO_LDFLAGS+=$(TREMOR_LDFLAGS)
-endif
-
-
-###
-### Filesystem
-###
-ifeq ($(DM_USE_PACKFS),yes)
-BUILD_RES=yes
-DM_CFLAGS += -DDM_USE_PACKFS
-DMLIB_OBJS += dmpack.o
-ifeq ($(DM_BUILD_TOOLS),yes)
-TOOL_BINARIES += packed
-endif
-endif
-
-ifeq ($(DM_USE_STDIO),yes)
-BUILD_RES=yes
-DM_CFLAGS += -DDM_USE_STDIO
-endif
-
-ifeq ($(DM_USE_MEMIO),yes)
-BUILD_RES=yes
-DM_CFLAGS += -DDM_USE_MEMIO
-endif
-
-ifeq ($(BUILD_RES),yes)
-DMLIB_OBJS += dmres.o dmresw.o
-endif
-
-###
-### Graphics support
-###
-
-ifeq ($(DM_GFX_LINES),yes)
-DM_CFLAGS += -DDM_GFX_LINES
-DMLIB_OBJS += dmline.o
-endif
-
-ifeq ($(DM_GFX_BLITS),yes)
-DM_CFLAGS += -DDM_GFX_BLITS
-DMLIB_OBJS += dmblit.o
-
-ifeq ($(DM_GFX_BM_TEXT),yes)
-DM_CFLAGS += -DDM_GFX_BM_TEXT
-DMLIB_OBJS += dmtext_bm.o
-ifeq ($(DM_BUILD_TOOLS),yes)
-ifeq ($(DM_USE_STDIO),yes)
-TOOL_BINARIES += fontconv
-endif
-endif
-endif
-endif
-
-ifeq ($(DM_GFX_TTF_TEXT),yes)
-DM_CFLAGS += -DDM_GFX_TTF_TEXT
-DMLIB_OBJS += dmtext_ttf.o
-
-ifeq ($(DM_BUILD_TESTS),yes)
-ifeq ($(DM_GFX_BLITS),yes)
-ifeq ($(DM_USE_STDIO),yes)
-#TESTS_BINARIES += blittest
-endif
-endif
-endif
-else
-SDL_TTF_LDFLAGS=
-SDL_TTF_CFLAGS=
-endif
-
-
-###
-### miniJSS
-###
-MINIJSS=$(DMLIB)/minijss/
-
-
-ifeq ($(JSS),yes)
-DM_CFLAGS+=-DDM_USE_JSS -I$(MINIJSS)
-
-ifeq ($(JSS_LIGHT),yes)
-DM_CFLAGS+=-DJSS_LIGHT -Os
-else
-ifeq ($(JSS_USE_ASSERTS),yes)
-DM_CFLAGS+=-DJSS_USE_ASSERTS
-endif
-ifeq ($(JSS_DEBUG),yes)
-DM_CFLAGS+=-DJSS_DEBUG
-endif
-endif
-
-ifeq ($(JSS_MIX_FP),yes)
-DM_CFLAGS+=-DJSS_MIX_FP
-endif
-
-ifeq ($(JSS_SUP_THREADS),yes)
-DM_CFLAGS+=-DJSS_SUP_THREADS
-endif
-
-
-SUP_MODLOAD=no
-ifeq ($(JSS_SUP_XM),yes)
-SUP_MODLOAD=yes
-DMLIB_OBJS+= jloadxm.o 
-DM_CFLAGS+=-DJSS_SUP_XM
-endif
-
-ifeq ($(JSS_SUP_JSSMOD),yes)
-SUP_MODLOAD=yes
-DMLIB_OBJS+= jloadjss.o
-DM_CFLAGS+=-DJSS_SUP_JSSMOD $(JSSMOD_FLAGS)
-endif
-
-ifeq ($(DM_USE_C),yes)
-DM_CFLAGS+=-DDM_USE_C
-TARGETS += $(MINIJSS)jmix_c.c
-DMLIB_OBJS+=jmix_c.o
-endif
-
-#ifeq ($(DM_USE_SIMD),yes)
-#DMLIB_OBJS+=jmix_simd.o
-#endif
-
-ifeq ($(DM_BUILD_TOOLS),yes)
-ifeq ($(DM_USE_STDIO),yes)
-ifeq ($(JSS_SUP_JSSMOD),yes)
-ifeq ($(JSS_SUP_XM),yes)
-TOOL_BINARIES+= xm2jss
-endif
-endif
-endif
-endif
-DMLIB_OBJS += jss.o jssmix.o jssmod.o jssplr.o
-endif
-
-
-### Dependancies
-ifeq ($(DM_BUILD_TOOLS),yes)
-ifeq ($(DM_USE_STDIO),yes)
-TOOL_BINARIES+= objlink data2inc gfxconv fanalyze
-ifeq ($(SUP_MODLOAD),yes)
-TOOL_BINARIES+= dumpmod mod2wav
-TESTS_BINARIES+= plrtest
-ifeq ($(DM_GFX_BLITS),yes)
-TOOL_BINARIES+= 64vw
-ifeq ($(DM_GFX_BM_TEXT),yes)
-TOOL_BINARIES+= ppl
-endif
-endif
-endif
-
-endif
-endif
-
-
-### libPNG handling
-ifeq ($(DM_USE_LIBPNG),yes)
-DM_CFLAGS += -DDM_USE_LIBPNG $(LIBPNG_CFLAGS)
-endif
-
-
-### Check requirements for zlib
-ifeq ($(DM_USE_ZLIB),yes)
-DM_CFLAGS += -DDM_USE_ZLIB $(ZLIB_CFLAGS)
-DEMO_LDFLAGS += $(ZLIB_LDFLAGS)
-else
-DEMO_LDFLAGS +=
-endif
-
-
-### What tests to build?
-ifeq ($(DM_BUILD_TESTS),yes)
-TESTS_BINARIES += vecmattest fptest dzlibtest encbr1test
-endif
-
-FONTCONV_BIN=$(TOOL_BINPATH)fontconv$(BINEXT)
-DATA2INC_BIN=$(TOOL_BINPATH)data2inc$(BINEXT)
-
-ifeq ($(BINEXT),.exe)
-# Cross-building Windows binaries requires locally installed utilities
-FONTCONV_DEP=
-DATA2INC_DEP=
-else
-ifeq ($(DM_BUILD_TOOLS),yes)
-FONTCONV_DEP=$(FONTCONV_BIN)
-DATA2INC_DEP=$(DATA2INC_BIN)
-endif
-endif
-
-
-###
-### Main targets and objects
-###
-DMLIB_A = $(OBJPATH)dmlib.a
-DMLIB_OBJS += \
-	dmfile.o dmlib.o dmcurves.o dmstring.o \
-	dmgrowbuf.o dmargs.o dmvecmat.o dmperlin.o \
-	dmimage.o dmengine.o dmzlib.o \
-	dmlicense.o
-
-
-TESTS_TARGETS = $(addprefix $(TESTS_BINPATH),$(addsuffix $(BINEXT),$(TESTS_BINARIES)))
-TOOL_TARGETS = $(addprefix $(TOOL_BINPATH),$(addsuffix $(BINEXT),$(TOOL_BINARIES)))
-
-TARGETS += \
-	$(DMLIB_A) \
-	$(addprefix $(BINPATH),$(addsuffix $(BINEXT),$(BINARIES))) \
-	$(TOOL_TARGETS) $(TESTS_TARGETS)
-
-NOBUILD_TARGETS +=
-NOINST_TARGETS += 
-
-
-###
-### Functions and compilation/link commands
-###
-ifneq ($(V),1)
-DO_CMD=/bin/echo -E " $(1) $(2)" && $(3)
-else
-DO_CMD=/bin/echo -E $(3) && $(3)
-endif
-DO_MKDIR=if test ! -z "$(1)" -a ! -d "$(1)"; then /bin/echo -E " MKDIR $(1)"; mkdir -p "$(1)"; fi
-
-
-COMPILE_C_OBJ = \
-	@$(call DO_MKDIR,$(OBJPATH)) ; \
-	$(call DO_CMD,CC,$<,$(CC) $(CFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
-
-LINK_C_BIN = \
-	@$(call DO_MKDIR,$(BINPATH)) ; \
-	$(call DO_CMD,LINK,$@,$(CC) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
-
-COMPILE_CXX_OBJ = \
-	@$(call DO_MKDIR,$(OBJPATH)) ; \
-	$(call DO_CMD,CXX,$<,$(CXX) $(CXXFLAGS) $(DM_CFLAGS) -c -o $@ $< $(1))
-
-LINK_CXX_BIN = \
-	@$(call DO_MKDIR,$(BINPATH)) ; \
-	$(call DO_CMD,LINK,$@,$(CXX) -o $@ $(filter %.o %.a,$+) $(LDFLAGS) $(1))
-
-LINK_STATIC_LIB = \
-	@$(call DO_MKDIR,$(OBJPATH)) ; \
-	$(call DO_CMD,AR,$@ $(filter %.o,$+),$(AR) cru $@ $(filter %.o,$+)) ; \
-	$(call DO_CMD,RANLIB,$@,$(RANLIB) $@)
-
-
-###
-### Generic target rules
-###
-all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
-
-
-$(OBJPATH)%.o: $(DMLIB)tests/%.c $(DMLIB)tests/%.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(DMLIB)tests/%.c
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(DMLIB)tools/%.c $(DMLIB)tools/%.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(DMLIB)tools/%.c
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: %.c %.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: %.c
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(MINIJSS)%.c $(MINIJSS)%.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(MINIJSS)%.c
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(DMLIB_SRC)%.c $(DMLIB_SRC)%.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)%.o: $(DMLIB_SRC)%.c
-	$(call COMPILE_C_OBJ,)
-
-
-###
-### dmlib-specific rules
-###
-$(MINIJSS)jmix_c.c: $(MINIJSS)jmix_c_in.c $(MINIJSS)jmixtmpl_c.h $(MINIJSS)jmix_post_c.h
-	(echo "#include \"jssmix.h\"" && cpp $< $(DM_CFLAGS)) | sed "s/^# .*//g" > $@
-
-$(OBJPATH)dmimage.o: $(DMLIB_SRC)dmimage.c $(DMLIB_SRC)stb_image.c $(DMLIB_SRC)dmimage.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)dmresw.o: $(DMLIB_SRC)dmresw.c $(DMLIB_SRC)dmres.h
-	$(call COMPILE_C_OBJ,)
-
-
-$(OBJPATH)jssmod.o: $(MINIJSS)jssmod.c $(MINIJSS)jssmod.h $(OBJPATH)jss.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)jssmix.o: $(MINIJSS)jssmix.c $(MINIJSS)jssmix.h $(OBJPATH)jssmod.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)jssplr.o: $(MINIJSS)jssplr.c $(MINIJSS)jssplr.h $(OBJPATH)jssmix.o
-	$(call COMPILE_C_OBJ,)
-
-
-$(OBJPATH)dmblit.o: $(DMLIB_SRC)dmblit.c $(DMLIB_SRC)dmscaledblit.h $(DMLIB_SRC)dmunscaledblit.h $(DMLIB_SRC)dmblitfunc.h $(DMLIB_SRC)dmlib.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)dmline.o: $(DMLIB_SRC)dmline.c $(DMLIB_SRC)dmdrawline.h $(DMLIB_SRC)dmlinefunc.h $(DMLIB_SRC)dmlineclip.h $(DMLIB_SRC)dmlib.h
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)libgfx.o: $(DMLIB)tools/libgfx.c $(DMLIB)tools/libgfx.h $(DMLIB_A)
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)lib64gfx.o: $(DMLIB)tools/lib64gfx.c $(DMLIB)tools/lib64gfx.h $(OBJPATH)libgfx.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)lib64util.o: $(DMLIB)tools/lib64util.c $(DMLIB)tools/lib64util.h $(OBJPATH)lib64gfx.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)lib64fmts.o: $(DMLIB)tools/lib64fmts.c $(OBJPATH)lib64gfx.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)64vw.o: $(DMLIB)tools/64vw.c $(OBJPATH)lib64util.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)gfxconv.o: $(DMLIB)tools/gfxconv.c $(OBJPATH)lib64util.o
-	$(call COMPILE_C_OBJ,)
-
-$(OBJPATH)ppl.o: $(TOOL_SRC)ppl.c $(DMLIB_SRC)setupfont.h \
-	$(OBJPATH)libgutil.o $(DMLIB_A)
-	$(call COMPILE_C_OBJ,)
-
-
-$(DMLIB)assets/SetupFont.dmf: $(DMLIB)assets/SetupFont.fnt $(FONTCONV_DEP)
-	@$(call DO_CMD,FONT,$@ $<,$(FONTCONV_BIN) $< $@)
-
-$(DMLIB_SRC)setupfont.h: $(DMLIB)assets/SetupFont.dmf $(DATA2INC_DEP)
-	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupFont -t Uint8 $< $@ > /dev/null)
-
-$(DMLIB_SRC)setupimage.h: $(DMLIB)assets/SetupImage.png $(DATA2INC_DEP)
-	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupImage -t Uint8 $< $@ > /dev/null)
-
-$(DMLIB_SRC)setupmenubar.h: $(DMLIB)assets/SetupMenuBar.png  $(DATA2INC_DEP)
-	@$(call DO_CMD,DATA,$@ $<,$(DATA2INC_BIN) -q -f c -n engineSetupMenuBar -t Uint8 $< $@ > /dev/null)
-
-
-$(OBJPATH)dmsimple.o: $(addprefix $(DMLIB_SRC), dmsimple.c dmengine.h \
-		setupmenubar.h setupfont.h setupimage.h dmsimple.c)
-	$(call COMPILE_C_OBJ,)
-
-
-$(DMLIB_A): $(addprefix $(OBJPATH),$(DMLIB_OBJS)) $(DMLIB)Makefile.gen $(DM_CONFIG)
-	$(call LINK_STATIC_LIB,)
-
-
-###
-### Tests
-###
-define RULE_TESTS_BIN
-$$(TESTS_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A)
-	$$(call LINK_C_BIN,$$(DM_LDFLAGS) $$(SDL_LDFLAGS) $(3))
-
-endef
-
-$(eval $(call RULE_TESTS_BIN,blittest,,$$(SDL_TTF_LDFLAGS) -lm))
-$(eval $(call RULE_TESTS_BIN,dzlibtest,,$$(ZLIB_LDFLAGS)))
-$(eval $(call RULE_TESTS_BIN,plrtest,,$$(ZLIB_LDFLAGS) -lm))
-$(eval $(call RULE_TESTS_BIN,%test,,$$(TOOL_LDFLAGS) -lm))
-
-
-###
-### Tools
-###
-define RULE_TOOL_BIN
-$$(TOOL_BINPATH)$(1)$$(BINEXT): $$(OBJPATH)$(1).o $(2) $$(DMLIB_A)
-	$$(call LINK_C_BIN, $$(DM_LDFLAGS) $$(TOOL_LDFLAGS) $(3))
-
-endef
-
-$(eval $(call RULE_TOOL_BIN,fontconv,,\
-	$$(SDL_LDFLAGS) $$(SDL_TTF_LDFLAGS) $$(ZLIB_LDFLAGS) -lm))
-$(eval $(call RULE_TOOL_BIN,data2inc,,))
-$(eval $(call RULE_TOOL_BIN,packed,,$(ZLIB_LDFLAGS)))
-$(eval $(call RULE_TOOL_BIN,mod2wav,,$(ZLIB_LDFLAGS) -lm))
-$(eval $(call RULE_TOOL_BIN,xm2jss,,$(ZLIB_LDFLAGS)))
-$(eval $(call RULE_TOOL_BIN,dumpmod,,$(ZLIB_LDFLAGS)))
-$(eval $(call RULE_TOOL_BIN,ppl,\
-	$$(OBJPATH)libgutil.o,$$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS) -lm))
-$(eval $(call RULE_TOOL_BIN,objlink,,))
-$(eval $(call RULE_TOOL_BIN,fanalyze,,))
-
-$(eval $(call RULE_TOOL_BIN,gfxconv,\
-	$$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \
-	$$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\
-	$$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS)))
-
-$(eval $(call RULE_TOOL_BIN,64vw,\
-	$$(OBJPATH)lib64gfx.o $$(OBJPATH)lib64fmts.o \
-	$$(OBJPATH)lib64util.o $$(OBJPATH)libgfx.o,\
-	$$(LIBPNG_LDFLAGS) $$(ZLIB_LDFLAGS) $$(SDL_LDFLAGS)))
-
-
-###
-### Demo binary
-###
-ifneq ($(DEMO_BIN),)
-$(BINPATH)$(DEMO_BIN)$(BINEXT): $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A)
-	$(call LINK_C_BIN, $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS) -lm)
-endif
-
-
-###
-### Editor targets
-###
-$(EDITOR_PRO): $(DMLIB)Makefile.gen $(DM_CONFIG) $(addprefix $(DMLIB),$(EDITOR_SOURCES) $(EDITOR_HEADERS)) $(addprefix $(OBJPATH),$(DEMO_OBJS)) $(DMLIB_A)
-	@echo " CREATE $@"
-	@echo "OBJECTS_DIR = $(OBJPATH)" > $@
-	@echo "MOC_DIR = $(OBJPATH)" >> $@
-	@echo "QMAKE_CXXFLAGS += $(DM_CFLAGS) $(SDL_CFLAGS)" >> $@
-	@echo "QMAKE_LIBS += $(filter-out %dmsimple.o,$(filter %.o %.a,$+))" >> $@
-	@echo "QMAKE_LIBS += $(DM_LDFLAGS) $(SDL_LDFLAGS) $(DEMO_LDFLAGS)" >> $@
-	@echo "MAKEFILE = $(EDITOR_MAKEFILE)" >> $@
-	@echo "CONFIG += debug" >> $@
-	@echo "QT += core gui opengl" >> $@
-	@echo "TARGET = $(BINPATH)ed_$(DEMO_BIN)$(BINEXT)" >> $@
-	@echo "TEMPLATE = app" >> $@
-	@echo "SOURCES = $(addprefix $(DMLIB),$(EDITOR_SOURCES))" >> $@
-	@echo "HEADERS = $(addprefix $(DMLIB),$(EDITOR_HEADERS))" >> $@
-	
-
-$(EDITOR_MAKEFILE): $(EDITOR_PRO)
-	@$(call DO_CMD,QMAKE,$+,qmake -Wall $<)
-
-$(BINPATH)ed_$(DEMO_BIN)$(BINEXT): $(EDITOR_MAKEFILE)
-	@$(MAKE) -f $<
-
-
-###
-### Special targets
-###
-clean:
-	-$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o
-
-distclean: clean
-	-$(RM) $(DISTCLEAN_TARGETS) *~ core *.core
-
-.PHONY: clean distclean all