From a6bdf54a5e2ca2023136640f423e32fb1f01112e Mon Sep 17 00:00:00 2001 From: Jiri Malak Date: Wed, 25 Jan 2023 14:42:20 +0100 Subject: Watcom: Fix double-quote to be single-quote in response files for wlink Response files contained double-quote for any response file, but response files for wlink must contains single-quote. This is fix for libraries list response file. Problem for object file list was fixed by MR !8115 --- Source/cmMakefileLibraryTargetGenerator.cxx | 2 +- Source/cmMakefileTargetGenerator.cxx | 15 ++++++++++----- Source/cmMakefileTargetGenerator.h | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 09c9c7e..9669293 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -821,7 +821,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( if (useArchiveRules) { // Construct the individual object list strings. std::vector object_strings; - this->WriteObjectsStrings(object_strings, archiveCommandLimit); + this->WriteObjectsStrings(object_strings, false, archiveCommandLimit); // Add the cuda device object to the list of archive files. This will // only occur on archives which have CUDA_RESOLVE_DEVICE_SYMBOLS enabled diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 20cc2c3..9df1af7 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1888,10 +1888,12 @@ class cmMakefileTargetGeneratorObjectStrings public: cmMakefileTargetGeneratorObjectStrings(std::vector& strings, cmOutputConverter* outputConverter, + bool useWatcomQuote, cmStateDirectory const& stateDir, std::string::size_type limit) : Strings(strings) , OutputConverter(outputConverter) + , UseWatcomQuote(useWatcomQuote) , StateDir(stateDir) , LengthLimit(limit) { @@ -1902,7 +1904,7 @@ public: // Construct the name of the next object. this->NextObject = this->OutputConverter->ConvertToOutputFormat( this->OutputConverter->MaybeRelativeToCurBinDir(obj), - cmOutputConverter::RESPONSE); + cmOutputConverter::RESPONSE, this->UseWatcomQuote); // Roll over to next string if the limit will be exceeded. if (this->LengthLimit != std::string::npos && @@ -1925,6 +1927,7 @@ public: private: std::vector& Strings; cmOutputConverter* OutputConverter; + bool UseWatcomQuote; cmStateDirectory StateDir; std::string::size_type LengthLimit; std::string CurrentString; @@ -1933,12 +1936,13 @@ private: }; void cmMakefileTargetGenerator::WriteObjectsStrings( - std::vector& objStrings, std::string::size_type limit) + std::vector& objStrings, bool useWatcomQuote, + std::string::size_type limit) { cmValue pchExtension = this->Makefile->GetDefinition("CMAKE_PCH_EXTENSION"); cmMakefileTargetGeneratorObjectStrings helper( - objStrings, this->LocalGenerator, + objStrings, this->LocalGenerator, useWatcomQuote, this->LocalGenerator->GetStateSnapshot().GetDirectory(), limit); for (std::string const& obj : this->Objects) { if (cmHasSuffix(obj, pchExtension)) { @@ -2259,7 +2263,8 @@ void cmMakefileTargetGenerator::CreateObjectLists( // Construct the individual object list strings. std::vector object_strings; - this->WriteObjectsStrings(object_strings, responseFileLimit); + this->WriteObjectsStrings(object_strings, useWatcomQuote, + responseFileLimit); // Lookup the response file reference flag. std::string responseFlag = this->GetResponseFlag(responseMode); @@ -2289,7 +2294,7 @@ void cmMakefileTargetGenerator::CreateObjectLists( } else if (useLinkScript) { if (!useArchiveRules) { std::vector objStrings; - this->WriteObjectsStrings(objStrings); + this->WriteObjectsStrings(objStrings, useWatcomQuote); buildObjs = objStrings[0]; } } else { diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index dafa650..5d614fe 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -123,6 +123,7 @@ protected: std::string& variableNameExternal, bool useWatcomQuote); void WriteObjectsStrings(std::vector& objStrings, + bool useWatcomQuote, std::string::size_type limit = std::string::npos); // write the driver rule to build target outputs -- cgit v0.12