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

orgads noreply at scummvm.org
Thu Mar 21 16:06:05 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:
4fa89cd73d CREATE_PROJECT: Move resource embeds from MSVC to general project


Commit: 4fa89cd73db93936113f3ba3374bf32c9cbae739
    https://github.com/scummvm/scummvm/commit/4fa89cd73db93936113f3ba3374bf32c9cbae739
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2024-03-21T18:06:01+02:00

Commit Message:
CREATE_PROJECT: Move resource embeds from MSVC to general project

It is also needed for CMake project.

Amends commit 4dc9ef2771537226b31311d0fed079d7c0b8ac05.

Changed paths:
    devtools/create_project/create_project.cpp
    devtools/create_project/create_project.h
    devtools/create_project/msvc.cpp
    devtools/create_project/msvc.h


diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index 8e8e67c1fa8..0836aaba13c 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -406,7 +406,6 @@ int main(int argc, char *argv[]) {
 	StringList featureDefines = getFeatureDefines(setup.features);
 	setup.defines.splice(setup.defines.begin(), featureDefines);
 
-	bool backendWin32 = false;
 	if (projectType == kProjectXcode) {
 		setup.defines.push_back("POSIX");
 		// Define both MACOSX, and IPHONE, but only one of them will be associated to the
@@ -419,13 +418,13 @@ int main(int argc, char *argv[]) {
 		setup.defines.push_back("SCUMMVM_NEON");
 	} else if (projectType == kProjectMSVC || projectType == kProjectCodeBlocks) {
 		setup.defines.push_back("WIN32");
-		backendWin32 = true;
+		setup.win32 = true;
 	} else {
 		// As a last resort, select the backend files to build based on the platform used to build create_project.
 		// This is broken when cross compiling.
 #if defined(_WIN32) || defined(WIN32)
 		setup.defines.push_back("WIN32");
-		backendWin32 = true;
+		setup.win32 = true;
 #else
 		setup.defines.push_back("POSIX");
 #endif
@@ -435,7 +434,7 @@ int main(int argc, char *argv[]) {
 		if (i->enable) {
 			if (!strcmp(i->name, "updates"))
 				setup.defines.push_back("USE_SPARKLE");
-			else if (backendWin32 && !strcmp(i->name, "libcurl"))
+			else if (setup.win32 && !strcmp(i->name, "libcurl"))
 				setup.defines.push_back("CURL_STATICLIB");
 			else if (!strcmp(i->name, "fluidlite"))
 				setup.defines.push_back("USE_FLUIDSYNTH");
@@ -1721,6 +1720,10 @@ void ProjectProvider::createProject(BuildSetup &setup) {
 		} else {
 			// Resource files
 			addResourceFiles(setup, in, ex);
+			if (setup.win32) {
+				for (const EngineDataGroupDef &groupDef : _engineDataGroupDefs)
+					in.push_back(setup.srcDir + "/" + groupDef.winHeaderPath);
+			}
 
 			// Various text files
 			in.push_back(setup.srcDir + "/AUTHORS");
@@ -1747,6 +1750,7 @@ void ProjectProvider::createProject(BuildSetup &setup) {
 
 	// Create other misc. build files
 	createOtherBuildFiles(setup);
+	createResourceEmbeds(setup);
 
 	// In case we create the main ScummVM project files we will need to
 	// generate engines/plugins_table.h & engines/detection_table.h
@@ -2426,6 +2430,38 @@ void ProjectProvider::createEnginePluginsTable(const BuildSetup &setup) {
 					   << "#endif\n";
 	}
 }
+
+void ProjectProvider::createResourceEmbeds(const BuildSetup &setup) const {
+	if (!setup.win32)
+		return;
+
+	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
 
 void error(const std::string &message) {
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index 3c48a89e234..7327434d8e1 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -251,6 +251,7 @@ struct BuildSetup {
 	bool useWindowsSubsystem = false;  ///< Whether to use Windows subsystem or Console subsystem (default: Console)
 	bool useXCFramework = false;       ///< Whether to use Apple XCFrameworks instead of static libraries
 	bool useVcpkg = false;             ///< Whether to load libraries from vcpkg or SCUMMVM_LIBS
+	bool win32 = false;                ///< Target is Windows
 
 	bool featureEnabled(const std::string &feature) const;
 	Feature getFeature(const std::string &feature) const;
@@ -689,6 +690,11 @@ private:
 	 * @param setup Description of the desired build.
 	 */
 	void createEnginePluginsTable(const BuildSetup &setup);
+
+	/**
+	 * Creates resource embed files
+	 */
+	void createResourceEmbeds(const BuildSetup &setup) const;
 };
 
 } // namespace CreateProjectTool
diff --git a/devtools/create_project/msvc.cpp b/devtools/create_project/msvc.cpp
index 2c32e6ccecf..97e3966c419 100644
--- a/devtools/create_project/msvc.cpp
+++ b/devtools/create_project/msvc.cpp
@@ -227,19 +227,11 @@ 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) {
@@ -322,33 +314,4 @@ 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 6e610abe0bd..86ea9c61ba5 100644
--- a/devtools/create_project/msvc.h
+++ b/devtools/create_project/msvc.h
@@ -118,11 +118,6 @@ 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




More information about the Scummvm-git-logs mailing list