[Scummvm-git-logs] scummvm master -> 4dc9ef2771537226b31311d0fed079d7c0b8ac05

sev- noreply at scummvm.org
Tue Feb 27 16:12:18 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:
4dc9ef2771 DISTS: Move engine data defs to dedicated files


Commit: 4dc9ef2771537226b31311d0fed079d7c0b8ac05
    https://github.com/scummvm/scummvm/commit/4dc9ef2771537226b31311d0fed079d7c0b8ac05
Author: elasota (1137273+elasota at users.noreply.github.com)
Date: 2024-02-27T17:12:15+01:00

Commit Message:
DISTS: Move engine data defs to dedicated files

Changed paths:
  A dists/engine-data/engine_data.mk
  A dists/engine-data/engine_data_big.mk
  A dists/engine-data/engine_data_core.mk
    .gitignore
    Makefile.common
    backends/platform/sdl/win32/win32.mk
    devtools/create_project/create_project.cpp
    devtools/create_project/create_project.h
    devtools/create_project/msvc.cpp
    devtools/create_project/msvc.h
    devtools/create_project/xcode.cpp
    dists/scummvm.rc


diff --git a/.gitignore b/.gitignore
index 0d6b9b7ebf4..42f087cbea5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,6 +121,8 @@ project.xcworkspace
 /dists/engine-data/testbed-audiocd-files/testbed.out
 /dists/engine-data/playground3d
 
+/dists/scummvm_rc_*.rh
+
 
 /doc/*.aux
 /doc/*.dvi
diff --git a/Makefile.common b/Makefile.common
index a1ffdc70e37..c381ead739f 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -406,110 +406,20 @@ DIST_FILES_VKEYBD:=$(addprefix $(srcdir)/backends/vkeybd/packs/,vkeybd_default.z
 endif
 
 # Engine data files
-DIST_FILES_ENGINEDATA=
-ifdef ENABLE_ACCESS
-DIST_FILES_ENGINEDATA+=access.dat
-endif
-ifdef ENABLE_CRYO
-DIST_FILES_ENGINEDATA+=cryo.dat
-endif
-ifdef ENABLE_CRYOMNI3D
-DIST_FILES_ENGINEDATA+=cryomni3d.dat
-endif
-ifdef ENABLE_DRASCULA
-DIST_FILES_ENGINEDATA+=drascula.dat
-endif
-ifdef ENABLE_HADESCH
-DIST_FILES_ENGINEDATA+=hadesch_translations.dat
-endif
-ifdef ENABLE_HUGO
-DIST_FILES_ENGINEDATA+=hugo.dat
-endif
-ifdef ENABLE_KYRA
-DIST_FILES_ENGINEDATA+=kyra.dat
-endif
-ifdef ENABLE_LURE
-DIST_FILES_ENGINEDATA+=lure.dat
-endif
-ifdef ENABLE_MACVENTURE
-DIST_FILES_ENGINEDATA+=macventure.dat
-endif
-ifdef ENABLE_MORTEVIELLE
-DIST_FILES_ENGINEDATA+=mort.dat
-endif
-ifdef ENABLE_NANCY
-DIST_FILES_ENGINEDATA+=nancy.dat
-endif
-ifdef ENABLE_NEVERHOOD
-DIST_FILES_ENGINEDATA+=neverhood.dat
-endif
-ifdef ENABLE_PRINCE
-DIST_FILES_ENGINEDATA+=prince_translation.dat
-endif
-ifdef ENABLE_QUEEN
-DIST_FILES_ENGINEDATA+=queen.tbl
-endif
-ifdef ENABLE_SKY
-DIST_FILES_ENGINEDATA+=sky.cpt
-endif
-ifdef ENABLE_SUPERNOVA
-DIST_FILES_ENGINEDATA+=supernova.dat
-endif
-ifdef ENABLE_TEENAGENT
-DIST_FILES_ENGINEDATA+=teenagent.dat
-endif
-ifdef ENABLE_TITANIC
-DIST_FILES_ENGINEDATA+=titanic.dat
-endif
-ifdef ENABLE_TONY
-DIST_FILES_ENGINEDATA+=tony.dat
-endif
-ifdef ENABLE_TOON
-DIST_FILES_ENGINEDATA+=toon.dat
-endif
-ifdef ENABLE_ULTIMA
-DIST_FILES_ENGINEDATA+=ultima.dat
-DIST_FILES_ENGINEDATA+=ultima8.dat
-endif
-ifdef ENABLE_WINTERMUTE
-DIST_FILES_ENGINEDATA+=wintermute.zip
-endif
-ifdef ENABLE_MM
-DIST_FILES_ENGINEDATA+=mm.dat
-endif
-ifdef ENABLE_FREESCAPE
-DIST_FILES_ENGINEDATA+=freescape.dat
-endif
-ifdef USE_FREETYPE2
-DIST_FILES_ENGINEDATA+=fonts.dat
-endif
-ifdef ENABLE_GRIM
-DIST_FILES_ENGINEDATA+=grim-patch.lab
-endif
-ifdef ENABLE_MONKEY4
-DIST_FILES_ENGINEDATA+=monkey4-patch.m4b
-endif
-ifdef ENABLE_MYST3
-DIST_FILES_ENGINEDATA+=myst3.dat
-endif
-DIST_FILES_ENGINEDATA+=achievements.dat
-DIST_FILES_ENGINEDATA+=classicmacfonts.dat
-DIST_FILES_ENGINEDATA+=encoding.dat
-DIST_FILES_ENGINEDATA+=helpdialog.zip
-DIST_FILES_ENGINEDATA+=macgui.dat
-DIST_FILES_ENGINEDATA:=$(addprefix $(srcdir)/dists/engine-data/,$(DIST_FILES_ENGINEDATA))
+DIST_FILES_LIST=
+-include $(srcdir)/dists/engine-data/engine_data_core.mk
+DIST_FILES_ENGINEDATA_BASE_CORE:=$(DIST_FILES_LIST)
 
-# pred.dic is currently only used for the AGI engine
-ifdef ENABLE_AGI
-DIST_FILES_ENGINEDATA+=$(srcdir)/dists/pred.dic
-endif
+DIST_FILES_LIST=
+-include $(srcdir)/dists/engine-data/engine_data.mk
+DIST_FILES_ENGINEDATA_BASE:=$(DIST_FILES_LIST)
 
-# fonts-cjk.dat is used only on systems with plenty of memory
-ifdef USE_FREETYPE2
-DIST_FILES_ENGINEDATA_BIG+=fonts-cjk.dat
-endif
+DIST_FILES_LIST=
+-include $(srcdir)/dists/engine-data/engine_data_big.mk
+DIST_FILES_ENGINEDATA_BASE_BIG:=$(DIST_FILES_LIST)
 
-DIST_FILES_ENGINEDATA_BIG:=$(addprefix $(srcdir)/dists/engine-data/,$(DIST_FILES_ENGINEDATA_BIG))
+DIST_FILES_ENGINEDATA:=$(addprefix $(srcdir)/,$(DIST_FILES_ENGINEDATA_BASE_CORE) $(DIST_FILES_ENGINEDATA_BASE))
+DIST_FILES_ENGINEDATA_BIG:=$(addprefix $(srcdir)/,$(DIST_FILES_ENGINEDATA_BASE_BIG))
 
 # Shaders: install if USE_OPENGL_SHADERS is defined
 DIST_FILES_SHADERS=
diff --git a/backends/platform/sdl/win32/win32.mk b/backends/platform/sdl/win32/win32.mk
index b8ea9b28da8..3340c0dd439 100644
--- a/backends/platform/sdl/win32/win32.mk
+++ b/backends/platform/sdl/win32/win32.mk
@@ -4,6 +4,32 @@
 
 WIN32PATH ?= $(DESTDIR)
 
+clean-win32-resource-embed:
+
+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' >> $$@
+
+dists/scummvm.o: $(1)
+
+clean-win32-resource-embed-$(1):
+	$(RM) $(srcdir)/$(1)
+
+clean-win32-resource-embed: clean-win32-resource-embed-$(1)
+
+.PHONY: clean-win32-resource-embed-$(1)
+
+endef
+
+$(eval $(call win32-resource-embed-macro,dists/scummvm_rc_engine_data_core.rh,DIST_FILES_ENGINEDATA_BASE_CORE))
+$(eval $(call win32-resource-embed-macro,dists/scummvm_rc_engine_data.rh,DIST_FILES_ENGINEDATA_BASE))
+$(eval $(call win32-resource-embed-macro,dists/scummvm_rc_engine_data_big.rh,DIST_FILES_ENGINEDATA_BASE_BIG))
+
 # Special target to create a win32 snapshot binary (for Inno Setup)
 win32-data: all
 	mkdir -p $(WIN32PATH)
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index e315c090314..8e8e67c1fa8 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -1638,6 +1638,11 @@ void ProjectProvider::createProject(BuildSetup &setup) {
 		_allProjUuidMap[detProject] = _engineUuidMap[detProject] = detUUID;
 	}
 
+	// Scan for resources
+	for (int i = 0; i < kEngineDataGroupCount; i++) {
+		createDataFilesList(static_cast<EngineDataGroup>(i), setup.srcDir, setup.defines, _engineDataGroupDefs[i].dataFiles, _engineDataGroupDefs[i].winHeaderPath);
+	}
+
 	createWorkspace(setup);
 
 	StringList in, ex, pchDirs, pchEx;
@@ -2264,6 +2269,117 @@ void ProjectProvider::createModuleList(const std::string &moduleDir, const Strin
 		error("Malformed file " + moduleMkFile);
 }
 
+static EngineDataGroupResolution s_engineDataResolutions[] = {
+	{kEngineDataGroupNormal,	"dists/engine-data/engine_data.mk",			"dists/scummvm_rc_engine_data.rh"},
+	{kEngineDataGroupBig,		"dists/engine-data/engine_data_big.mk",		"dists/scummvm_rc_engine_data_big.rh"},
+	{kEngineDataGroupCore,		"dists/engine-data/engine_data_core.mk",	"dists/scummvm_rc_engine_data_core.rh"},
+};
+
+void ProjectProvider::createDataFilesList(EngineDataGroup engineDataGroup, const std::string &baseDir, const StringList &defines, StringList &outDataFiles, std::string &outWinHeaderPath) const {
+	outDataFiles.clear();
+
+	const EngineDataGroupResolution *resolution = nullptr;
+
+	for (const EngineDataGroupResolution &resolutionCandidate : s_engineDataResolutions) {
+		if (resolutionCandidate.engineDataGroup == engineDataGroup) {
+			resolution = &resolutionCandidate;
+			break;
+		}
+	}
+
+	if (!resolution)
+		error("Engine data group resolution wasn't defined");
+
+	std::string mkFile = baseDir + "/" + resolution->mkFilePath;
+	std::ifstream moduleMk(mkFile.c_str());
+	if (!moduleMk)
+		error(mkFile + " is not present");
+
+	outWinHeaderPath = resolution->winHeaderPath;
+
+	std::stack<bool> shouldInclude;
+	shouldInclude.push(true);
+
+	std::string line;
+	for (;;) {
+		std::getline(moduleMk, line);
+
+		if (moduleMk.eof())
+			break;
+
+		if (moduleMk.fail())
+			error(std::string("Failed while reading from ") + mkFile);
+
+		TokenList tokens = tokenize(line);
+		if (tokens.empty())
+			continue;
+
+		TokenList::const_iterator i = tokens.begin();
+		if (*i == "DIST_FILES_LIST") {
+			if (tokens.size() < 3)
+				error("Malformed DIST_FILES_LIST definition in " + mkFile);
+			++i;
+
+			if (*i != "+=")
+				error("Malformed DIST_FILES_LIST definition in " + mkFile);
+
+			++i;
+
+			while (i != tokens.end()) {
+				if (*i == "\\") {
+					std::getline(moduleMk, line);
+					tokens = tokenize(line);
+					i = tokens.begin();
+				} else {
+					const std::string filename = unifyPath(*i);
+
+					if (shouldInclude.top()) {
+						outDataFiles.push_back(filename);
+					}
+					++i;
+				}
+			}
+		} else if (*i == "ifdef") {
+			if (tokens.size() < 2)
+				error("Malformed ifdef in " + mkFile);
+			++i;
+
+			if (std::find(defines.begin(), defines.end(), *i) == defines.end())
+				shouldInclude.push(false);
+			else
+				shouldInclude.push(true && shouldInclude.top());
+		} else if (*i == "ifndef") {
+			if (tokens.size() < 2)
+				error("Malformed ifndef in " + mkFile);
+			++i;
+
+			if (std::find(defines.begin(), defines.end(), *i) == defines.end())
+				shouldInclude.push(true && shouldInclude.top());
+			else
+				shouldInclude.push(false);
+		} else if (*i == "else") {
+			bool last = shouldInclude.top();
+			shouldInclude.pop();
+			shouldInclude.push(!last && shouldInclude.top());
+		} else if (*i == "endif") {
+			if (shouldInclude.size() <= 1)
+				error("endif without ifdef found in " + mkFile);
+			shouldInclude.pop();
+		} else if (*i == "elif") {
+			error("Unsupported operation 'elif' in " + mkFile);
+		} else if (*i == "ifeq" || *i == "ifneq") {
+			// XXX
+			shouldInclude.push(false);
+		} else if (*i == "#") {
+			// Comment, ignore
+		} else
+			error("Unknown definition line in " + mkFile);
+	}
+
+	if (shouldInclude.size() != 1)
+		error("Malformed file " + mkFile);
+}
+
 void ProjectProvider::createEnginePluginsTable(const BuildSetup &setup) {
 	// First we need to create the "engines" directory.
 	createDirectory(setup.outputDir + "/engines");
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index 36785291359..e225f3ede35 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -107,6 +107,9 @@ struct EngineDesc {
 	bool operator==(const std::string &n) const {
 		return (name == n);
 	}
+
+	EngineDesc() : enable(false) {
+	}
 };
 
 typedef std::list<EngineDesc> EngineDescList;
@@ -315,6 +318,20 @@ enum MSVC_Architecture {
 std::string getMSVCArchName(MSVC_Architecture arch);
 std::string getMSVCConfigName(MSVC_Architecture arch);
 
+enum EngineDataGroup {
+	kEngineDataGroupNormal,
+	kEngineDataGroupCore,
+	kEngineDataGroupBig,
+
+	kEngineDataGroupCount,
+};
+
+struct EngineDataGroupResolution {
+	EngineDataGroup engineDataGroup;
+	const char *mkFilePath;
+	const char *winHeaderPath;
+};
+
 /**
  * Creates a list of all supported versions of Visual Studio.
  *
@@ -500,6 +517,11 @@ struct FileNode {
 
 class ProjectProvider {
 public:
+	struct EngineDataGroupDef {
+		StringList dataFiles;
+		std::string winHeaderPath;
+	};
+
 	typedef std::map<std::string, std::string> UUIDMap;
 
 	/**
@@ -536,6 +558,8 @@ protected:
 	UUIDMap _engineUuidMap; ///< List of (project name, UUID) pairs
 	UUIDMap _allProjUuidMap;
 
+	EngineDataGroupDef _engineDataGroupDefs[kEngineDataGroupCount];
+
 	/**
 	 *  Create workspace/solution file
 	 *
@@ -623,6 +647,16 @@ protected:
 	 */
 	void createModuleList(const std::string &moduleDir, const StringList &defines, StringList &testDirs, StringList &includeList, StringList &excludeList, StringList &pchDirs, StringList &pchExclude, bool forDetection = false) const;
 
+	/**
+	 * Creates a list of data files from a specified .mk file
+	 *
+	 * @param makeFilePath Path to the engine data makefile.
+	 * @param defines List of set defines.
+	 * @param outDataFiles Output list of data files.
+	 * @param outWinHeaderPath Output Windows resource header path.
+	 */
+	void createDataFilesList(EngineDataGroup engineDataGroup, const std::string &baseDir, const StringList &defines, StringList &outDataFiles, std::string &outWinHeaderPath) const;
+
 	/**
 	 * Creates an UUID for every enabled engine of the
 	 * passed build description.
diff --git a/devtools/create_project/msvc.cpp b/devtools/create_project/msvc.cpp
index 97e3966c419..2c32e6ccecf 100644
--- a/devtools/create_project/msvc.cpp
+++ b/devtools/create_project/msvc.cpp
@@ -227,11 +227,19 @@ void MSVCProvider::createOtherBuildFiles(const BuildSetup &setup) {
 		createBuildProp(setup, false, *arch, "Analysis");
 		createBuildProp(setup, false, *arch, "LLVM");
 	}
+
+	createResourceEmbeds(setup);
 }
 
 void MSVCProvider::addResourceFiles(const BuildSetup &setup, StringList &includeList, StringList &excludeList) {
 	includeList.push_back(setup.srcDir + "/icons/" + setup.projectName + ".ico");
 	includeList.push_back(setup.srcDir + "/dists/" + setup.projectName + ".rc");
+
+	for (int i = 0; i < kEngineDataGroupCount; i++) {
+		const EngineDataGroupDef &groupDef = _engineDataGroupDefs[i];
+
+		includeList.push_back(setup.srcDir + "/" + groupDef.winHeaderPath);
+	}
 }
 
 void MSVCProvider::createGlobalProp(const BuildSetup &setup) {
@@ -314,4 +322,33 @@ std::string MSVCProvider::getPostBuildEvent(MSVC_Architecture arch, const BuildS
 	return cmdLine;
 }
 
+void MSVCProvider::createResourceEmbeds(const BuildSetup &setup) const {
+	for (int i = 0; i < kEngineDataGroupCount; i++) {
+		const EngineDataGroupDef &groupDef = _engineDataGroupDefs[i];
+
+		std::string outPath = setup.srcDir + "/" + groupDef.winHeaderPath;
+
+		std::ofstream resEmbedFile(outPath.c_str());
+
+		if (!resEmbedFile || !resEmbedFile.is_open()) {
+			error("Could not open \"" + outPath + "\" for writing");
+			return;
+		}
+
+		resEmbedFile << "// This file was generated by create_project" << std::endl;
+		resEmbedFile << "// Do not edit this file manually" << std::endl;
+		resEmbedFile << std::endl;
+
+		for (const std::string &fileName : groupDef.dataFiles) {
+			size_t lastSlashPos = fileName.find_last_of('/');
+			if (lastSlashPos == std::string::npos)
+				error("Data file definition " + fileName + " wasn't located in a subdirectory");
+
+			std::string shortName = fileName.substr(lastSlashPos + 1);
+
+			resEmbedFile << shortName << " FILE \"" << fileName << "\"" << std::endl;
+		}
+	}
+}
+
 } // namespace CreateProjectTool
diff --git a/devtools/create_project/msvc.h b/devtools/create_project/msvc.h
index 86ea9c61ba5..6e610abe0bd 100644
--- a/devtools/create_project/msvc.h
+++ b/devtools/create_project/msvc.h
@@ -118,6 +118,11 @@ protected:
 	 * @return	The post build event.
 	 */
 	std::string getPostBuildEvent(MSVC_Architecture arch, const BuildSetup &setup, bool isRelease) const;
+
+	/**
+	 * Creates resource embed files
+	 */
+	void createResourceEmbeds(const BuildSetup &setup) const;
 };
 
 } // namespace CreateProjectTool
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index 74198561ee3..0da5e13d8c2 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -1038,45 +1038,9 @@ XcodeProvider::ValueList& XcodeProvider::getResourceFiles(const BuildSetup &setu
 		files.push_back("gui/themes/gui-icons.dat");
 		files.push_back("gui/themes/shaders.dat");
 		files.push_back("gui/themes/translations.dat");
-		files.push_back("dists/engine-data/access.dat");
-		files.push_back("dists/engine-data/achievements.dat");
-		files.push_back("dists/engine-data/classicmacfonts.dat");
-		files.push_back("dists/engine-data/cryo.dat");
-		files.push_back("dists/engine-data/cryomni3d.dat");
-		files.push_back("dists/engine-data/drascula.dat");
-		files.push_back("dists/engine-data/encoding.dat");
-		files.push_back("dists/engine-data/fonts.dat");
-		files.push_back("dists/engine-data/fonts-cjk.dat");
-		files.push_back("dists/engine-data/freescape.dat");
-		files.push_back("dists/engine-data/hadesch_translations.dat");
-		files.push_back("dists/engine-data/helpdialog.zip");
-		files.push_back("dists/engine-data/hugo.dat");
-		files.push_back("dists/engine-data/kyra.dat");
-		files.push_back("dists/engine-data/lure.dat");
-		files.push_back("dists/engine-data/macgui.dat");
-		files.push_back("dists/engine-data/myst3.dat");
-		files.push_back("dists/engine-data/monkey4-patch.m4b");
-		files.push_back("dists/engine-data/grim-patch.lab");
-		files.push_back("dists/engine-data/macventure.dat");
-		files.push_back("dists/engine-data/mm.dat");
-		files.push_back("dists/engine-data/mort.dat");
-		files.push_back("dists/engine-data/nancy.dat");
-		files.push_back("dists/engine-data/neverhood.dat");
-		files.push_back("dists/engine-data/prince_translation.dat");
-		files.push_back("dists/engine-data/queen.tbl");
-		files.push_back("dists/engine-data/sky.cpt");
-		files.push_back("dists/engine-data/supernova.dat");
-		files.push_back("dists/engine-data/teenagent.dat");
-		files.push_back("dists/engine-data/titanic.dat");
-		files.push_back("dists/engine-data/tony.dat");
-		files.push_back("dists/engine-data/toon.dat");
-		files.push_back("dists/engine-data/ultima.dat");
-		files.push_back("dists/engine-data/ultima8.dat");
-		files.push_back("dists/engine-data/wintermute.zip");
 		files.push_back("dists/ios7/ios-help.zip");
 		files.push_back("dists/ios7/LaunchScreen_ios.storyboard");
 		files.push_back("dists/tvos/LaunchScreen_tvos.storyboard");
-		files.push_back("dists/pred.dic");
 		files.push_back("dists/networking/wwwroot.zip");
 		if (CONTAINS_DEFINE(setup.defines, "ENABLE_GRIM")) {
 			files.push_back("engines/grim/shaders/grim_dim.fragment");
@@ -1184,7 +1148,17 @@ XcodeProvider::ValueList& XcodeProvider::getResourceFiles(const BuildSetup &setu
 		files.push_back("LICENSES/CatharonLicense.txt");
 		files.push_back("NEWS.md");
 		files.push_back("README.md");
+
+		for (int i = 0; i < kEngineDataGroupCount; i++) {
+			for (const std::string &filename : _engineDataGroupDefs[i].dataFiles) {
+				if (std::find(files.begin(), files.end(), filename) != files.end())
+					error("Resource file " + filename + " was included multiple times");
+
+				files.push_back(filename);
+			}
+		}
 	}
+
 	return files;
 }
 
diff --git a/dists/engine-data/engine_data.mk b/dists/engine-data/engine_data.mk
new file mode 100644
index 00000000000..51cb4df42bc
--- /dev/null
+++ b/dists/engine-data/engine_data.mk
@@ -0,0 +1,91 @@
+ifdef ENABLE_ACCESS
+DIST_FILES_LIST += dists/engine-data/access.dat
+endif
+ifdef ENABLE_CRYO
+DIST_FILES_LIST += dists/engine-data/cryo.dat
+endif
+ifdef ENABLE_CRYOMNI3D
+DIST_FILES_LIST += dists/engine-data/cryomni3d.dat
+endif
+ifdef ENABLE_DRASCULA
+DIST_FILES_LIST += dists/engine-data/drascula.dat
+endif
+ifdef ENABLE_HADESCH
+DIST_FILES_LIST += dists/engine-data/hadesch_translations.dat
+endif
+ifdef ENABLE_HUGO
+DIST_FILES_LIST += dists/engine-data/hugo.dat
+endif
+ifdef ENABLE_KYRA
+DIST_FILES_LIST += dists/engine-data/kyra.dat
+endif
+ifdef ENABLE_LURE
+DIST_FILES_LIST += dists/engine-data/lure.dat
+endif
+ifdef ENABLE_MACVENTURE
+DIST_FILES_LIST += dists/engine-data/macventure.dat
+endif
+ifdef ENABLE_MORTEVIELLE
+DIST_FILES_LIST += dists/engine-data/mort.dat
+endif
+ifdef ENABLE_NANCY
+DIST_FILES_LIST += dists/engine-data/nancy.dat
+endif
+ifdef ENABLE_NEVERHOOD
+DIST_FILES_LIST += dists/engine-data/neverhood.dat
+endif
+ifdef ENABLE_PRINCE
+DIST_FILES_LIST += dists/engine-data/prince_translation.dat
+endif
+ifdef ENABLE_QUEEN
+DIST_FILES_LIST += dists/engine-data/queen.tbl
+endif
+ifdef ENABLE_SKY
+DIST_FILES_LIST += dists/engine-data/sky.cpt
+endif
+ifdef ENABLE_SUPERNOVA
+DIST_FILES_LIST += dists/engine-data/supernova.dat
+endif
+ifdef ENABLE_TEENAGENT
+DIST_FILES_LIST += dists/engine-data/teenagent.dat
+endif
+ifdef ENABLE_TITANIC
+DIST_FILES_LIST += dists/engine-data/titanic.dat
+endif
+ifdef ENABLE_TONY
+DIST_FILES_LIST += dists/engine-data/tony.dat
+endif
+ifdef ENABLE_TOON
+DIST_FILES_LIST += dists/engine-data/toon.dat
+endif
+ifdef ENABLE_ULTIMA
+DIST_FILES_LIST += dists/engine-data/ultima.dat
+DIST_FILES_LIST += dists/engine-data/ultima8.dat
+endif
+ifdef ENABLE_WINTERMUTE
+DIST_FILES_LIST += dists/engine-data/wintermute.zip
+endif
+ifdef ENABLE_MM
+DIST_FILES_LIST += dists/engine-data/mm.dat
+endif
+ifdef ENABLE_FREESCAPE
+DIST_FILES_LIST += dists/engine-data/freescape.dat
+endif
+ifdef USE_FREETYPE2
+DIST_FILES_LIST += dists/engine-data/fonts.dat
+endif
+ifdef ENABLE_GRIM
+DIST_FILES_LIST += dists/engine-data/grim-patch.lab
+endif
+ifdef ENABLE_MONKEY4
+DIST_FILES_LIST += dists/engine-data/monkey4-patch.m4b
+endif
+ifdef ENABLE_MYST3
+DIST_FILES_LIST += dists/engine-data/myst3.dat
+endif
+
+
+# pred.dic is currently only used for the AGI engine
+ifdef ENABLE_AGI
+DIST_FILES_LIST += dists/pred.dic
+endif
diff --git a/dists/engine-data/engine_data_big.mk b/dists/engine-data/engine_data_big.mk
new file mode 100644
index 00000000000..742fc5fe07e
--- /dev/null
+++ b/dists/engine-data/engine_data_big.mk
@@ -0,0 +1,4 @@
+# fonts-cjk.dat is used only on systems with plenty of memory
+ifdef USE_FREETYPE2
+DIST_FILES_LIST += dists/engine-data/fonts-cjk.dat
+endif
diff --git a/dists/engine-data/engine_data_core.mk b/dists/engine-data/engine_data_core.mk
new file mode 100644
index 00000000000..8e7309df014
--- /dev/null
+++ b/dists/engine-data/engine_data_core.mk
@@ -0,0 +1,5 @@
+DIST_FILES_LIST += dists/engine-data/achievements.dat
+DIST_FILES_LIST += dists/engine-data/classicmacfonts.dat
+DIST_FILES_LIST += dists/engine-data/encoding.dat
+DIST_FILES_LIST += dists/engine-data/helpdialog.zip
+DIST_FILES_LIST += dists/engine-data/macgui.dat
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index ed6f8f003fa..b01b9a967aa 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -26,11 +26,8 @@ scummremastered.zip    FILE    "gui/themes/scummremastered.zip"
 residualvm.zip         FILE    "gui/themes/residualvm.zip"
 gui-icons.dat          FILE    "gui/themes/gui-icons.dat"
 shaders.dat            FILE    "gui/themes/shaders.dat"
-achievements.dat       FILE    "dists/engine-data/achievements.dat"
-encoding.dat           FILE    "dists/engine-data/encoding.dat"
-helpdialog.zip         FILE    "dists/engine-data/helpdialog.zip"
-macgui.dat             FILE    "dists/engine-data/macgui.dat"
-classicmacfonts.dat    FILE    "dists/engine-data/classicmacfonts.dat"
+
+#include "dists/scummvm_rc_engine_data_core.rh"
 
 #ifdef USE_FLUIDSYNTH
 Roland_SC-55.sf2       FILE    "dists/soundfonts/Roland_SC-55.sf2"
@@ -38,100 +35,17 @@ Roland_SC-55.sf2       FILE    "dists/soundfonts/Roland_SC-55.sf2"
 
 // Engine or feature specific resources
 #ifdef BUILTIN_RESOURCES
-#if PLUGIN_ENABLED_STATIC(FREESCAPE)
-freescape.dat              FILE    "dists/engine-data/freescape.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(GRIM)
-grim-patch.lab         FILE    "dists/engine-data/grim-patch.lab"
-monkey4-patch.m4b      FILE    "dists/engine-data/monkey4-patch.m4b"
-#endif
-#if PLUGIN_ENABLED_STATIC(MYST3)
-myst3.dat              FILE    "dists/engine-data/myst3.dat"
-#endif
+
+#include "dists/scummvm_rc_engine_data.rh"
+#include "dists/scummvm_rc_engine_data_big.rh"
+
 #ifdef USE_TRANSLATION
 translations.dat       FILE    "gui/themes/translations.dat"
 #endif
 #ifdef USE_SDL_NET
 wwwroot.zip            FILE    "dists/networking/wwwroot.zip"
 #endif
-#ifdef USE_FREETYPE2
-fonts.dat              FILE    "dists/engine-data/fonts.dat"
-fonts-cjk.dat          FILE    "dists/engine-data/fonts-cjk.dat"
-#endif
 
-#if PLUGIN_ENABLED_STATIC(ACCESS)
-access.dat             FILE    "dists/engine-data/access.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(CRYO)
-cryo.dat               FILE    "dists/engine-data/cryo.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(CRYOMNI3D)
-cryomni3d.dat          FILE    "dists/engine-data/cryomni3d.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(DRASCULA)
-drascula.dat           FILE    "dists/engine-data/drascula.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(HADESCH)
-hadesch_translations.dat          FILE    "dists/engine-data/hadesch_translations.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(HUGO)
-hugo.dat               FILE    "dists/engine-data/hugo.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(KYRA)
-kyra.dat               FILE    "dists/engine-data/kyra.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(LURE)
-lure.dat               FILE    "dists/engine-data/lure.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(MACVENTURE)
-macventure.dat         FILE    "dists/engine-data/macventure.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(MORTEVIELLE)
-mort.dat               FILE    "dists/engine-data/mort.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(NANCY)
-nancy.dat              FILE    "dists/engine-data/nancy.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(NEVERHOOD)
-neverhood.dat          FILE    "dists/engine-data/neverhood.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(PRINCE)
-prince_translation.dat FILE    "dists/engine-data/prince_translation.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(QUEEN)
-queen.tbl              FILE    "dists/engine-data/queen.tbl"
-#endif
-#if PLUGIN_ENABLED_STATIC(SKY)
-sky.cpt                FILE    "dists/engine-data/sky.cpt"
-#endif
-#if PLUGIN_ENABLED_STATIC(SUPERNOVA)
-supernova.dat          FILE    "dists/engine-data/supernova.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(TEENAGENT)
-teenagent.dat          FILE    "dists/engine-data/teenagent.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(TITANIC)
-titanic.dat            FILE    "dists/engine-data/titanic.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(TONY)
-tony.dat               FILE    "dists/engine-data/tony.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(TOON)
-toon.dat               FILE    "dists/engine-data/toon.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(ULTIMA)
-ultima.dat             FILE    "dists/engine-data/ultima.dat"
-ultima8.dat            FILE    "dists/engine-data/ultima8.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(WINTERMUTE)
-wintermute.zip         FILE    "dists/engine-data/wintermute.zip"
-#endif
-#if PLUGIN_ENABLED_STATIC(MM)
-mm.dat                 FILE    "dists/engine-data/mm.dat"
-#endif
-#if PLUGIN_ENABLED_STATIC(AGI)
-pred.dic               FILE    "dists/pred.dic"
-#endif
 #if defined(USE_OPENGL_SHADERS)
 #if PLUGIN_ENABLED_STATIC(GRIM)
 shaders/grim_dim.fragment            FILE    "engines/grim/shaders/grim_dim.fragment"




More information about the Scummvm-git-logs mailing list