diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-05-04 20:40:11 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-05-14 18:36:28 (GMT) |
commit | b17686d2bbc193f19c60cdf44a228e49b4ffe386 (patch) | |
tree | e2af5214e7af7f0b98050429db9ae4d59df3b5db | |
parent | ed41a8e7b4cf665ebab8e4780f8b0b299113fd11 (diff) | |
download | CMake-b17686d2bbc193f19c60cdf44a228e49b4ffe386.zip CMake-b17686d2bbc193f19c60cdf44a228e49b4ffe386.tar.gz CMake-b17686d2bbc193f19c60cdf44a228e49b4ffe386.tar.bz2 |
cmGlobalGenerator: Move some flags from cmLocalGenerator.
These flags are global, and so they belong here instead of being
set on each local generator.
-rw-r--r-- | Source/cmGlobalBorlandMakefileGenerator.cxx | 2 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 7 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 7 | ||||
-rw-r--r-- | Source/cmGlobalJOMMakefileGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalMSYSMakefileGenerator.cxx | 3 | ||||
-rw-r--r-- | Source/cmGlobalMinGWMakefileGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalNMakeMakefileGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 3 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudioGenerator.cxx | 2 | ||||
-rw-r--r-- | Source/cmGlobalWatcomWMakeGenerator.cxx | 8 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 46 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 13 | ||||
-rw-r--r-- | Source/cmLocalNinjaGenerator.cxx | 3 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 22 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.h | 30 | ||||
-rw-r--r-- | Source/cmLocalVisualStudioGenerator.cxx | 2 |
16 files changed, 79 insertions, 81 deletions
diff --git a/Source/cmGlobalBorlandMakefileGenerator.cxx b/Source/cmGlobalBorlandMakefileGenerator.cxx index 0220799..d191056 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.cxx +++ b/Source/cmGlobalBorlandMakefileGenerator.cxx @@ -21,6 +21,7 @@ cmGlobalBorlandMakefileGenerator::cmGlobalBorlandMakefileGenerator() this->ForceUnixPaths = false; this->ToolSupportsColor = true; this->UseLinkScript = false; + this->WindowsShell = true; } @@ -43,7 +44,6 @@ cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator( cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); lg->SetIncludeDirective("!include"); - lg->SetWindowsShell(true); lg->SetDefineWindowsNULL(true); lg->SetMakefileVariableSize(32); lg->SetPassMakeflags(true); diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index bc32c53..1c9c475 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -71,6 +71,13 @@ cmGlobalGenerator::cmGlobalGenerator() this->ExtraGenerator = 0; this->CurrentLocalGenerator = 0; this->TryCompileOuterMakefile = 0; + + this->WindowsShell = false; + this->WindowsVSIDE = false; + this->WatcomWMake = false; + this->MinGWMake = false; + this->NMake = false; + this->MSYSShell = false; } cmGlobalGenerator::~cmGlobalGenerator() diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 22ba288..3b2a41f 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -354,6 +354,13 @@ public: cmFileLockPool& GetFileLockPool() { return FileLockPool; } #endif + bool WindowsShell; + bool WindowsVSIDE; + bool WatcomWMake; + bool MinGWMake; + bool NMake; + bool MSYSShell; + protected: virtual void Generate(); diff --git a/Source/cmGlobalJOMMakefileGenerator.cxx b/Source/cmGlobalJOMMakefileGenerator.cxx index 1caa730..25613eb 100644 --- a/Source/cmGlobalJOMMakefileGenerator.cxx +++ b/Source/cmGlobalJOMMakefileGenerator.cxx @@ -19,6 +19,8 @@ cmGlobalJOMMakefileGenerator::cmGlobalJOMMakefileGenerator() this->ForceUnixPaths = false; this->ToolSupportsColor = true; this->UseLinkScript = false; + this->WindowsShell = true; + this->NMake = true; } void cmGlobalJOMMakefileGenerator @@ -51,11 +53,9 @@ cmGlobalJOMMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); lg->SetDefineWindowsNULL(true); - lg->SetWindowsShell(true); lg->SetMakeSilentFlag("/nologo"); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(true); - lg->SetNMake(true); lg->SetUnixCD(false); return lg; } diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx index 319eeaf..b6adcbb 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.cxx +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -21,6 +21,7 @@ cmGlobalMSYSMakefileGenerator::cmGlobalMSYSMakefileGenerator() this->ForceUnixPaths = true; this->ToolSupportsColor = true; this->UseLinkScript = false; + this->MSYSShell = true; } std::string @@ -98,8 +99,6 @@ cmGlobalMSYSMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); - lg->SetWindowsShell(false); - lg->SetMSYSShell(true); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(false); lg->SetUnixCD(true); diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index 8774a70..5b92eeb 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -19,6 +19,8 @@ cmGlobalMinGWMakefileGenerator::cmGlobalMinGWMakefileGenerator() this->ForceUnixPaths = true; this->ToolSupportsColor = true; this->UseLinkScript = true; + this->WindowsShell = true; + this->MinGWMake = true; } void cmGlobalMinGWMakefileGenerator @@ -62,11 +64,9 @@ cmGlobalMinGWMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); - lg->SetWindowsShell(true); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(false); lg->SetUnixCD(true); - lg->SetMinGWMake(true); return lg; } diff --git a/Source/cmGlobalNMakeMakefileGenerator.cxx b/Source/cmGlobalNMakeMakefileGenerator.cxx index 2732e22..98d7fb4 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.cxx +++ b/Source/cmGlobalNMakeMakefileGenerator.cxx @@ -19,6 +19,8 @@ cmGlobalNMakeMakefileGenerator::cmGlobalNMakeMakefileGenerator() this->ForceUnixPaths = false; this->ToolSupportsColor = true; this->UseLinkScript = false; + this->WindowsShell = true; + this->NMake = true; } void cmGlobalNMakeMakefileGenerator @@ -51,11 +53,9 @@ cmGlobalNMakeMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); lg->SetDefineWindowsNULL(true); - lg->SetWindowsShell(true); lg->SetMakeSilentFlag("/nologo"); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(true); - lg->SetNMake(true); lg->SetUnixCD(false); return lg; } diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 0e4fbaf..9a952a3 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -488,6 +488,9 @@ cmGlobalNinjaGenerator::cmGlobalNinjaGenerator() , ComputingUnknownDependencies(false) , PolicyCMP0058(cmPolicies::WARN) { +#ifdef _WIN32 + this->WindowsShell = true; +#endif // // Ninja is not ported to non-Unix OS yet. // this->ForceUnixPaths = true; this->FindMakeProgramFile = "CMakeNinjaFindMake.cmake"; diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 60d545b..b74ba6f 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -23,6 +23,8 @@ //---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator() { + this->WindowsShell = true; + this->WindowsVSIDE = true; } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalWatcomWMakeGenerator.cxx b/Source/cmGlobalWatcomWMakeGenerator.cxx index 49c516f..181178f 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.cxx +++ b/Source/cmGlobalWatcomWMakeGenerator.cxx @@ -22,6 +22,10 @@ cmGlobalWatcomWMakeGenerator::cmGlobalWatcomWMakeGenerator() this->ToolSupportsColor = true; this->NeedSymbolicMark = true; this->EmptyRuleHackCommand = "@cd ."; +#ifdef _WIN32 + this->WindowsShell = true; +#endif + this->WatcomWMake = true; } void cmGlobalWatcomWMakeGenerator @@ -47,10 +51,6 @@ cmGlobalWatcomWMakeGenerator::CreateLocalGenerator(cmLocalGenerator* parent) cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3(this, parent); lg->SetDefineWindowsNULL(true); -#ifdef _WIN32 - lg->SetWindowsShell(true); -#endif - lg->SetWatcomWMake(true); lg->SetMakeSilentFlag("-h"); lg->SetIgnoreLibPrefix(true); lg->SetPassMakeflags(false); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 5ef0a3b..bd6af8c 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -61,12 +61,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, } this->Makefile = new cmMakefile(this); - this->WindowsShell = false; - this->WindowsVSIDE = false; - this->WatcomWMake = false; - this->MinGWMake = false; - this->NMake = false; - this->MSYSShell = false; this->LinkScriptShell = false; this->IgnoreLibPrefix = false; this->UseRelativePaths = false; @@ -1254,7 +1248,7 @@ cmLocalGenerator::ConvertToOutputForExistingCommon(const std::string& remote, // If this is a windows shell, the result has a space, and the path // already exists, we can use a short-path to reference it without a // space. - if(this->WindowsShell && result.find(' ') != result.npos && + if(this->GlobalGenerator->WindowsShell && result.find(' ') != result.npos && cmSystemTools::FileExists(remote.c_str())) { std::string tmp; @@ -2626,7 +2620,7 @@ void cmLocalGenerator::JoinDefines(const std::set<std::string>& defines, { // Append the definition with proper escaping. std::string def = dflag; - if(this->WatcomWMake) + if(this->GlobalGenerator->WatcomWMake) { // The Watcom compiler does its own command line parsing instead // of using the windows shell rules. Definitions are one of @@ -2805,7 +2799,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, // For the MSYS shell convert drive letters to posix paths, so // that c:/some/path becomes /c/some/path. This is needed to // avoid problems with the shell path translation. - if(this->MSYSShell && !this->LinkScriptShell) + if(this->GlobalGenerator->MSYSShell && !this->LinkScriptShell) { if(result.size() > 2 && result[1] == ':') { @@ -2813,7 +2807,7 @@ std::string cmLocalGenerator::ConvertToOutputFormat(const std::string& source, result[0] = '/'; } } - if(this->WindowsShell) + if(this->GlobalGenerator->WindowsShell) { std::replace(result.begin(), result.end(), '/', '\\'); } @@ -3324,6 +3318,26 @@ void cmLocalGenerator::ComputeObjectFilenames( } +bool cmLocalGenerator::IsWindowsShell() const +{ + return this->GlobalGenerator->WindowsShell; +} + +bool cmLocalGenerator::IsWatcomWMake() const +{ + return this->GlobalGenerator->WatcomWMake; +} + +bool cmLocalGenerator::IsMinGWMake() const +{ + return this->GlobalGenerator->MinGWMake; +} + +bool cmLocalGenerator::IsNMake() const +{ + return this->GlobalGenerator->NMake; +} + //---------------------------------------------------------------------------- std::string cmLocalGenerator @@ -3467,7 +3481,7 @@ std::string cmLocalGenerator::EscapeForShell(const std::string& str, // Compute the flags for the target shell environment. int flags = 0; - if(this->WindowsVSIDE) + if(this->GlobalGenerator->WindowsVSIDE) { flags |= cmsysSystem_Shell_Flag_VSIDE; } @@ -3487,27 +3501,27 @@ std::string cmLocalGenerator::EscapeForShell(const std::string& str, { flags |= cmsysSystem_Shell_Flag_WatcomQuote; } - if(this->WatcomWMake) + if(this->GlobalGenerator->WatcomWMake) { flags |= cmsysSystem_Shell_Flag_WatcomWMake; } - if(this->MinGWMake) + if(this->GlobalGenerator->MinGWMake) { flags |= cmsysSystem_Shell_Flag_MinGWMake; } - if(this->NMake) + if(this->GlobalGenerator->NMake) { flags |= cmsysSystem_Shell_Flag_NMake; } // Compute the buffer size needed. - int size = (this->WindowsShell ? + int size = (this->GlobalGenerator->WindowsShell ? cmsysSystem_Shell_GetArgumentSizeForWindows(str.c_str(), flags) : cmsysSystem_Shell_GetArgumentSizeForUnix(str.c_str(), flags)); // Compute the shell argument itself. std::vector<char> arg(size); - if(this->WindowsShell) + if(this->GlobalGenerator->WindowsShell) { cmsysSystem_Shell_GetArgumentForWindows(str.c_str(), &arg[0], flags); } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 100d27b..47c0877 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -383,6 +383,11 @@ public: std::map<cmSourceFile const*, std::string>& mapping, cmGeneratorTarget const* gt = 0); + bool IsWindowsShell() const; + bool IsWatcomWMake() const; + bool IsMinGWMake() const; + bool IsNMake() const; + protected: ///! put all the libraries for a target on into the given stream virtual void OutputLinkLibraries(std::string& linkLibraries, @@ -457,17 +462,13 @@ protected: std::map<std::string, std::string> UniqueObjectNamesMap; std::string::size_type ObjectPathMax; std::set<std::string> ObjectMaxPathViolations; - bool WindowsShell; - bool WindowsVSIDE; - bool WatcomWMake; - bool MinGWMake; - bool NMake; - bool MSYSShell; + bool LinkScriptShell; bool UseRelativePaths; bool IgnoreLibPrefix; bool Configured; bool EmitUniversalBinaryFlags; + // Hack for ExpandRuleVariable until object-oriented version is // committed. std::string TargetImplib; diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index ac10f09..ded4c25 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -28,9 +28,6 @@ cmLocalNinjaGenerator::cmLocalNinjaGenerator(cmGlobalGenerator* gg, , ConfigName("") , HomeRelativeOutputPath("") { -#ifdef _WIN32 - this->WindowsShell = true; -#endif this->TargetImplib = "$TARGET_IMPLIB"; } diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index a2a3725..f11c79e 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -83,7 +83,6 @@ cmLocalUnixMakefileGenerator3:: cmLocalUnixMakefileGenerator3(cmGlobalGenerator* gg, cmLocalGenerator* parent) : cmLocalGenerator(gg, parent) { - this->WindowsShell = false; this->IncludeDirective = "include"; this->MakefileVariableSize = 0; this->IgnoreLibPrefix = false; @@ -679,7 +678,7 @@ cmLocalUnixMakefileGenerator3 // Write the list of commands. os << cmWrap("\t", commands, "", "\n") << "\n"; - if(symbolic && !this->WatcomWMake) + if(symbolic && !this->IsWatcomWMake()) { os << ".PHONY : " << cmMakeSafe(tgt) << "\n"; } @@ -696,7 +695,7 @@ std::string cmLocalUnixMakefileGenerator3 ::ConvertShellCommand(std::string const& cmd, RelativeRoot root) { - if(this->WatcomWMake && + if(this->IsWatcomWMake() && cmSystemTools::FileIsFullPath(cmd.c_str()) && cmd.find_first_of("( )") != cmd.npos) { @@ -730,7 +729,7 @@ cmLocalUnixMakefileGenerator3 << "NULL=nul\n" << "!ENDIF\n"; } - if(this->WindowsShell) + if(this->IsWindowsShell()) { makefileStream << "SHELL = cmd.exe\n" @@ -798,7 +797,8 @@ cmLocalUnixMakefileGenerator3 makefileStream, "Disable implicit rules so canonical targets will work.", ".SUFFIXES", no_depends, no_commands, false); - if(!this->NMake && !this->WatcomWMake && !this->BorlandMakeCurlyHack) + if(!this->IsNMake() + && !this->IsWatcomWMake() && !this->BorlandMakeCurlyHack) { // turn off RCS and SCCS automatic stuff from gmake makefileStream @@ -810,7 +810,7 @@ cmLocalUnixMakefileGenerator3 depends.push_back(".hpux_make_needs_suffix_list"); this->WriteMakeRule(makefileStream, 0, ".SUFFIXES", depends, no_commands, false); - if(this->WatcomWMake) + if(this->IsWatcomWMake()) { // Switch on WMake feature, if an error or interrupt occurs during // makefile processing, the current target being made may be deleted @@ -828,7 +828,7 @@ cmLocalUnixMakefileGenerator3 << "VERBOSE = 1\n" << "\n"; } - if(this->WatcomWMake) + if(this->IsWatcomWMake()) { makefileStream << "!ifndef VERBOSE\n" @@ -962,7 +962,7 @@ cmLocalUnixMakefileGenerator3 void cmLocalUnixMakefileGenerator3::AppendFlags(std::string& flags, const std::string& newFlags) { - if(this->WatcomWMake && !newFlags.empty()) + if(this->IsWatcomWMake() && !newFlags.empty()) { std::string newf = newFlags; if(newf.find("\\\"") != newf.npos) @@ -1112,7 +1112,7 @@ cmLocalUnixMakefileGenerator3 // bool useCall = false; - if (this->WindowsShell) + if (this->IsWindowsShell()) { std::string suffix; if (cmd.size() > 4) @@ -1179,7 +1179,7 @@ cmLocalUnixMakefileGenerator3 { cmd = "call " + cmd; } - else if (this->NMake && cmd[0]=='"') + else if (this->IsNMake() && cmd[0]=='"') { cmd = "echo >nul && " + cmd; } @@ -2344,7 +2344,7 @@ void cmLocalUnixMakefileGenerator3 // used by NMake and Borland make does not support "cd /d" so this // feature simply cannot work with them (Borland make does not even // support changing the drive letter with just "d:"). - const char* cd_cmd = this->MinGWMake? "cd /d " : "cd "; + const char* cd_cmd = this->IsMinGWMake() ? "cd /d " : "cd "; if(!this->UnixCD) { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 4e48ad7..7b436a5 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -81,36 +81,6 @@ public: std::string &GetMakeSilentFlag() { return this->MakeSilentFlag; } /** - * Set to true if the shell being used is the windows shell. - * This controls if statements in the makefile and the SHELL variable. - * The default is false. - */ - void SetWindowsShell(bool v) {this->WindowsShell = v;} - - /** - * Set to true if the make tool being used is Watcom WMake. - */ - void SetWatcomWMake(bool v) {this->WatcomWMake = v;} - - /** - * Set to true if the make tool being used is MinGW Make. - */ - void SetMinGWMake(bool v) {this->MinGWMake = v;} - bool IsMinGWMake() const { return this->MinGWMake; } - - /** - * Set to true if the make tool being used is NMake. - */ - void SetNMake(bool v) {this->NMake = v;} - - /** - * Set to true if the shell being used is the MSYS shell. - * This controls if statements in the makefile and the SHELL variable. - * The default is false. - */ - void SetMSYSShell(bool v) {this->MSYSShell = v;} - - /** * If set to true, then NULL is set to nil for non Windows_NT. * This uses make syntax used by nmake and borland. * The default is false. diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index f95d09b..4a596d5 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -23,8 +23,6 @@ cmLocalVisualStudioGenerator cmLocalGenerator* parent) : cmLocalGenerator(gg, parent) { - this->WindowsShell = true; - this->WindowsVSIDE = true; this->Version = v; } |