[Scummvm-git-logs] scummvm master -> 7cfae77aadda88de1e5b169f378ef62fba639572

lephilousophe noreply at scummvm.org
Sat Mar 2 17:09:16 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7cfae77aad DISTS: Fix out-of-source-tree Win builds and multiple deps problems


Commit: 7cfae77aadda88de1e5b169f378ef62fba639572
    https://github.com/scummvm/scummvm/commit/7cfae77aadda88de1e5b169f378ef62fba639572
Author: elasota (1137273+elasota at users.noreply.github.com)
Date: 2024-03-02T18:09:12+01:00

Commit Message:
DISTS: Fix out-of-source-tree Win builds and multiple deps problems

Make .rh files dependent on their contents (maybe they should be deps of the .rc file?)
Make .rh files dependent on the .mk file that their item lists come from
Fix .rh files not creating destination directory
Fix .rh dependencies of .rc file being source-relative instead of build-relative
Fix .rh clean paths being source-relative instead of build-relative
Fix .rh generation appending to the old .rh instead of overwriting

Changed paths:
    Makefile.common
    backends/platform/sdl/win32/win32.mk


diff --git a/Makefile.common b/Makefile.common
index c381ead739f..a879a75ae45 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -220,17 +220,27 @@ endif
 	$(QUIET_AS)$(AS) $(ASFLAGS) $(<) -o $@
 
 # Build rule for Windows resource files
-# The regular expression is a portable form of ^(.*\s(FILE|ICON|RT_MANIFEST|DATA)|#include)\s+"([^"]*)".*$
-# This finds lines in the form '... FILE "path/file.ext" ...' (and also ICON and #include)
-# and replaces them with the $(srcdir)/path/file.ext \
-# The second sed removes winresrc.h (system include) and config.h (not in srcdir, printed
-# by the echo before sed), and strips the trailing backslash on the last line.
+# This has multiple passes to generate the deps file:
+# First is to include config.h and config.mk
+# Second is to process all #include "*.h" form includes into source-tree deps
+# Third is to process all #include "*.rh" form includes into build-tree deps
+# Fourth is to process all FILE, ICON, RT_MANIFEST, and DATA lines into source-tree deps
+# The regexes are portable forms of:
+#     ^#include\s+"([^"]*).h".*$
+#     ^#include\s+"([^"]*).rh".*$
+#     ^(.*\s(FILE|ICON|RT_MANIFEST|DATA))\s+"([^"]*)".*$
+# The first sed removes winresrc.h (system include) and config.h (not in srcdir, printed
+# by the echo before sed), the last strips the trailing backslash on the last line.
 %.o: %.rc
 	$(QUIET)$(MKDIR) $(*D)
 	$(QUIET)$(MKDIR) $(*D)/$(DEPDIR)
 	$(QUIET)echo "$@: $< config.h config.mk \\" > $(*D)/$(DEPDIR)/scummvm.d
-	$(QUIET)sed -n 's:^\(.*[[:space:]]\(FILE\|ICON\|RT_MANIFEST\|DATA\)\|#include\)[[:space:]][[:space:]]*"\([^"]*\)".*$$:    $(srcdir)/\3 \\:p; ' $(<) | \
-		sed '/winresrc\.h\|config\.h/d; $$ s/ \\//' >> $(*D)/$(DEPDIR)/scummvm.d
+	$(QUIET)sed -n 's:^\#include[[:space:]][[:space:]]*"\([^"]*\.h\)".*$$:    $(srcdir)/\1 \\:p; ' $(<) | \
+		sed '/winresrc\.h\|config\.h/d' >> $(*D)/$(DEPDIR)/scummvm.d
+	$(QUIET)sed -n 's:^\#include[[:space:]][[:space:]]*"\([^"]*\.rh\)".*$$:    \1 \\:p; ' $(<) \
+		>> $(*D)/$(DEPDIR)/scummvm.d
+	$(QUIET)sed -n 's:^\(.*[[:space:]]\(FILE\|ICON\|RT_MANIFEST\|DATA\)\)[[:space:]][[:space:]]*"\([^"]*\)".*$$:    $(srcdir)/\3 \\:p; ' $(<) | \
+		sed '$$ s/ \\//' >> $(*D)/$(DEPDIR)/scummvm.d
 	$(QUIET_WINDRES)$(WINDRES) $(WINDRESFLAGS) $(CPPFLAGS) $(<) -o $@
 
 ifdef USE_NASM
@@ -406,16 +416,19 @@ DIST_FILES_VKEYBD:=$(addprefix $(srcdir)/backends/vkeybd/packs/,vkeybd_default.z
 endif
 
 # Engine data files
+DIST_FILES_ENGINEDATA_BASE_CORE_SOURCE:=$(srcdir)/dists/engine-data/engine_data_core.mk
 DIST_FILES_LIST=
--include $(srcdir)/dists/engine-data/engine_data_core.mk
+-include $(DIST_FILES_ENGINEDATA_BASE_CORE_SOURCE)
 DIST_FILES_ENGINEDATA_BASE_CORE:=$(DIST_FILES_LIST)
 
+DIST_FILES_ENGINEDATA_BASE_SOURCE:=$(srcdir)/dists/engine-data/engine_data.mk
 DIST_FILES_LIST=
--include $(srcdir)/dists/engine-data/engine_data.mk
+-include $(DIST_FILES_ENGINEDATA_BASE_SOURCE)
 DIST_FILES_ENGINEDATA_BASE:=$(DIST_FILES_LIST)
 
+DIST_FILES_ENGINEDATA_BASE_BIG_SOURCE:=$(srcdir)/dists/engine-data/engine_data_big.mk
 DIST_FILES_LIST=
--include $(srcdir)/dists/engine-data/engine_data_big.mk
+-include $(DIST_FILES_ENGINEDATA_BASE_BIG_SOURCE)
 DIST_FILES_ENGINEDATA_BASE_BIG:=$(DIST_FILES_LIST)
 
 DIST_FILES_ENGINEDATA:=$(addprefix $(srcdir)/,$(DIST_FILES_ENGINEDATA_BASE_CORE) $(DIST_FILES_ENGINEDATA_BASE))
diff --git a/backends/platform/sdl/win32/win32.mk b/backends/platform/sdl/win32/win32.mk
index 3340c0dd439..5236805a6b2 100644
--- a/backends/platform/sdl/win32/win32.mk
+++ b/backends/platform/sdl/win32/win32.mk
@@ -11,14 +11,16 @@ clean: clean-win32-resource-embed
 .PHONY: clean-win32-resource-embed
 
 define win32-resource-embed-macro=
-$(1): configure.stamp
-	@echo '    GENERATE' $$@
-	@echo $$(foreach filename,$$($(2)),$$(filename)) | sed -e 's/ /\n/g' | sed -E 's/(.*\/)(.+)/\2 FILE "\1\2"/g' >> $$@
+$(1): configure.stamp $(foreach filename,$($(2)), $(srcdir)/$(filename)) $($(2)_SOURCE)
+	$(QUIET)echo '    GENERATE' $$@
+	$(QUIET)mkdir -p $$(dir $$@)
+	$(QUIET)echo -n '' > $$@
+	$(QUIET)echo $$(foreach filename,$$($(2)),$$(filename)) | sed -e 's/ /\n/g' | sed -E 's/(.*\/)(.+)/\2 FILE "\1\2"/g' >> $$@
 
 dists/scummvm.o: $(1)
 
 clean-win32-resource-embed-$(1):
-	$(RM) $(srcdir)/$(1)
+	$(RM) $(1)
 
 clean-win32-resource-embed: clean-win32-resource-embed-$(1)
 




More information about the Scummvm-git-logs mailing list