[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