|  | @@ -5,6 +5,7 @@
 | 
											
												
													
														|  |  #include <sstream>
 |  |  #include <sstream>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  #include "cmAlgorithms.h"
 |  |  #include "cmAlgorithms.h"
 | 
											
												
													
														|  | 
 |  | +#include "cmExecutionStatus.h"
 | 
											
												
													
														|  |  #include "cmGeneratorExpression.h"
 |  |  #include "cmGeneratorExpression.h"
 | 
											
												
													
														|  |  #include "cmGlobalGenerator.h"
 |  |  #include "cmGlobalGenerator.h"
 | 
											
												
													
														|  |  #include "cmMakefile.h"
 |  |  #include "cmMakefile.h"
 | 
											
										
											
												
													
														|  | @@ -14,21 +15,19 @@
 | 
											
												
													
														|  |  #include "cmSystemTools.h"
 |  |  #include "cmSystemTools.h"
 | 
											
												
													
														|  |  #include "cmTarget.h"
 |  |  #include "cmTarget.h"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -class cmExecutionStatus;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -// cmLibraryCommand
 |  | 
 | 
											
												
													
														|  | -bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 |  | 
 | 
											
												
													
														|  | -                                      cmExecutionStatus&)
 |  | 
 | 
											
												
													
														|  | 
 |  | +bool cmAddLibraryCommand(std::vector<std::string> const& args,
 | 
											
												
													
														|  | 
 |  | +                         cmExecutionStatus& status)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  |    if (args.empty()) {
 |  |    if (args.empty()) {
 | 
											
												
													
														|  | -    this->SetError("called with incorrect number of arguments");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    status.SetError("called with incorrect number of arguments");
 | 
											
												
													
														|  |      return false;
 |  |      return false;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  cmMakefile& mf = status.GetMakefile();
 | 
											
												
													
														|  |    // Library type defaults to value of BUILD_SHARED_LIBS, if it exists,
 |  |    // Library type defaults to value of BUILD_SHARED_LIBS, if it exists,
 | 
											
												
													
														|  |    // otherwise it defaults to static library.
 |  |    // otherwise it defaults to static library.
 | 
											
												
													
														|  |    cmStateEnums::TargetType type = cmStateEnums::SHARED_LIBRARY;
 |  |    cmStateEnums::TargetType type = cmStateEnums::SHARED_LIBRARY;
 | 
											
												
													
														|  | -  if (cmSystemTools::IsOff(
 |  | 
 | 
											
												
													
														|  | -        this->Makefile->GetDefinition("BUILD_SHARED_LIBS"))) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +  if (cmSystemTools::IsOff(mf.GetDefinition("BUILD_SHARED_LIBS"))) {
 | 
											
												
													
														|  |      type = cmStateEnums::STATIC_LIBRARY;
 |  |      type = cmStateEnums::STATIC_LIBRARY;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |    bool excludeFromAll = false;
 |  |    bool excludeFromAll = false;
 | 
											
										
											
												
													
														|  | @@ -52,7 +51,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting STATIC type.";
 |  |          e << "INTERFACE library specified with conflicting STATIC type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -62,7 +61,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting SHARED type.";
 |  |          e << "INTERFACE library specified with conflicting SHARED type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -72,7 +71,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting MODULE type.";
 |  |          e << "INTERFACE library specified with conflicting MODULE type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -82,7 +81,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting OBJECT type.";
 |  |          e << "INTERFACE library specified with conflicting OBJECT type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -92,7 +91,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting UNKNOWN type.";
 |  |          e << "INTERFACE library specified with conflicting UNKNOWN type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -102,7 +101,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting ALIAS type.";
 |  |          e << "INTERFACE library specified with conflicting ALIAS type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -111,19 +110,19 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (haveSpecifiedType) {
 |  |        if (haveSpecifiedType) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting/multiple types.";
 |  |          e << "INTERFACE library specified with conflicting/multiple types.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        if (isAlias) {
 |  |        if (isAlias) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library specified with conflicting ALIAS type.";
 |  |          e << "INTERFACE library specified with conflicting ALIAS type.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        if (excludeFromAll) {
 |  |        if (excludeFromAll) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library may not be used with EXCLUDE_FROM_ALL.";
 |  |          e << "INTERFACE library may not be used with EXCLUDE_FROM_ALL.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -133,7 +132,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 |  |        if (type == cmStateEnums::INTERFACE_LIBRARY) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "INTERFACE library may not be used with EXCLUDE_FROM_ALL.";
 |  |          e << "INTERFACE library may not be used with EXCLUDE_FROM_ALL.";
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        ++s;
 |  |        ++s;
 | 
											
										
											
												
													
														|  | @@ -147,7 +146,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |      } else if (type == cmStateEnums::INTERFACE_LIBRARY && *s == "GLOBAL") {
 |  |      } else if (type == cmStateEnums::INTERFACE_LIBRARY && *s == "GLOBAL") {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "GLOBAL option may only be used with IMPORTED libraries.";
 |  |        e << "GLOBAL option may only be used with IMPORTED libraries.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      } else {
 |  |      } else {
 | 
											
												
													
														|  |        break;
 |  |        break;
 | 
											
										
											
												
													
														|  | @@ -158,13 +157,13 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |      if (s != args.end()) {
 |  |      if (s != args.end()) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "INTERFACE library requires no source arguments.";
 |  |        e << "INTERFACE library requires no source arguments.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (importGlobal && !importTarget) {
 |  |      if (importGlobal && !importTarget) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "INTERFACE library specified as GLOBAL, but not as IMPORTED.";
 |  |        e << "INTERFACE library specified as GLOBAL, but not as IMPORTED.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
										
											
												
													
														|  | @@ -175,47 +174,46 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |    if (nameOk && !importTarget && !isAlias) {
 |  |    if (nameOk && !importTarget && !isAlias) {
 | 
											
												
													
														|  |      nameOk = libName.find(':') == std::string::npos;
 |  |      nameOk = libName.find(':') == std::string::npos;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | -  if (!nameOk && !this->Makefile->CheckCMP0037(libName, type)) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +  if (!nameOk && !mf.CheckCMP0037(libName, type)) {
 | 
											
												
													
														|  |      return false;
 |  |      return false;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    if (isAlias) {
 |  |    if (isAlias) {
 | 
											
												
													
														|  |      if (!cmGeneratorExpression::IsValidTargetName(libName)) {
 |  |      if (!cmGeneratorExpression::IsValidTargetName(libName)) {
 | 
											
												
													
														|  | -      this->SetError("Invalid name for ALIAS: " + libName);
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError("Invalid name for ALIAS: " + libName);
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (excludeFromAll) {
 |  |      if (excludeFromAll) {
 | 
											
												
													
														|  | -      this->SetError("EXCLUDE_FROM_ALL with ALIAS makes no sense.");
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError("EXCLUDE_FROM_ALL with ALIAS makes no sense.");
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (importTarget || importGlobal) {
 |  |      if (importTarget || importGlobal) {
 | 
											
												
													
														|  | -      this->SetError("IMPORTED with ALIAS is not allowed.");
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError("IMPORTED with ALIAS is not allowed.");
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (args.size() != 3) {
 |  |      if (args.size() != 3) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "ALIAS requires exactly one target argument.";
 |  |        e << "ALIAS requires exactly one target argument.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      std::string const& aliasedName = *s;
 |  |      std::string const& aliasedName = *s;
 | 
											
												
													
														|  | -    if (this->Makefile->IsAlias(aliasedName)) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if (mf.IsAlias(aliasedName)) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 |  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 | 
											
												
													
														|  |          << aliasedName << "\" is itself an ALIAS.";
 |  |          << aliasedName << "\" is itself an ALIAS.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    cmTarget* aliasedTarget =
 |  | 
 | 
											
												
													
														|  | -      this->Makefile->FindTargetToUse(aliasedName, true);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    cmTarget* aliasedTarget = mf.FindTargetToUse(aliasedName, true);
 | 
											
												
													
														|  |      if (!aliasedTarget) {
 |  |      if (!aliasedTarget) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 |  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 | 
											
												
													
														|  |          << aliasedName
 |  |          << aliasedName
 | 
											
												
													
														|  |          << "\" does not already "
 |  |          << "\" does not already "
 | 
											
												
													
														|  |             "exist.";
 |  |             "exist.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      cmStateEnums::TargetType aliasedType = aliasedTarget->GetType();
 |  |      cmStateEnums::TargetType aliasedType = aliasedTarget->GetType();
 | 
											
										
											
												
													
														|  | @@ -229,7 +227,7 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 |  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 | 
											
												
													
														|  |          << aliasedName << "\" is not a library.";
 |  |          << aliasedName << "\" is not a library.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (aliasedTarget->IsImported() &&
 |  |      if (aliasedTarget->IsImported() &&
 | 
											
										
											
												
													
														|  | @@ -237,15 +235,15 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 |  |        e << "cannot create ALIAS target \"" << libName << "\" because target \""
 | 
											
												
													
														|  |          << aliasedName << "\" is imported but not globally visible.";
 |  |          << aliasedName << "\" is imported but not globally visible.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    this->Makefile->AddAlias(libName, aliasedName);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mf.AddAlias(libName, aliasedName);
 | 
											
												
													
														|  |      return true;
 |  |      return true;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    if (importTarget && excludeFromAll) {
 |  |    if (importTarget && excludeFromAll) {
 | 
											
												
													
														|  | -    this->SetError("excludeFromAll with IMPORTED target makes no sense.");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    status.SetError("excludeFromAll with IMPORTED target makes no sense.");
 | 
											
												
													
														|  |      return false;
 |  |      return false;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -255,14 +253,13 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |      yet its linker language. */
 |  |      yet its linker language. */
 | 
											
												
													
														|  |    if ((type == cmStateEnums::SHARED_LIBRARY ||
 |  |    if ((type == cmStateEnums::SHARED_LIBRARY ||
 | 
											
												
													
														|  |         type == cmStateEnums::MODULE_LIBRARY) &&
 |  |         type == cmStateEnums::MODULE_LIBRARY) &&
 | 
											
												
													
														|  | -      !this->Makefile->GetState()->GetGlobalPropertyAsBool(
 |  | 
 | 
											
												
													
														|  | -        "TARGET_SUPPORTS_SHARED_LIBS")) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +      !mf.GetState()->GetGlobalPropertyAsBool("TARGET_SUPPORTS_SHARED_LIBS")) {
 | 
											
												
													
														|  |      std::ostringstream w;
 |  |      std::ostringstream w;
 | 
											
												
													
														|  |      w << "ADD_LIBRARY called with "
 |  |      w << "ADD_LIBRARY called with "
 | 
											
												
													
														|  |        << (type == cmStateEnums::SHARED_LIBRARY ? "SHARED" : "MODULE")
 |  |        << (type == cmStateEnums::SHARED_LIBRARY ? "SHARED" : "MODULE")
 | 
											
												
													
														|  |        << " option but the target platform does not support dynamic linking. "
 |  |        << " option but the target platform does not support dynamic linking. "
 | 
											
												
													
														|  |           "Building a STATIC library instead. This may lead to problems.";
 |  |           "Building a STATIC library instead. This may lead to problems.";
 | 
											
												
													
														|  | -    this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING, w.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mf.IssueMessage(MessageType::AUTHOR_WARNING, w.str());
 | 
											
												
													
														|  |      type = cmStateEnums::STATIC_LIBRARY;
 |  |      type = cmStateEnums::STATIC_LIBRARY;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -270,14 +267,13 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |    if (importTarget) {
 |  |    if (importTarget) {
 | 
											
												
													
														|  |      // The IMPORTED signature requires a type to be specified explicitly.
 |  |      // The IMPORTED signature requires a type to be specified explicitly.
 | 
											
												
													
														|  |      if (!haveSpecifiedType) {
 |  |      if (!haveSpecifiedType) {
 | 
											
												
													
														|  | -      this->SetError("called with IMPORTED argument but no library type.");
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError("called with IMPORTED argument but no library type.");
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      if (type == cmStateEnums::OBJECT_LIBRARY) {
 |  |      if (type == cmStateEnums::OBJECT_LIBRARY) {
 | 
											
												
													
														|  |        std::string reason;
 |  |        std::string reason;
 | 
											
												
													
														|  | -      if (!this->Makefile->GetGlobalGenerator()->HasKnownObjectFileLocation(
 |  | 
 | 
											
												
													
														|  | -            &reason)) {
 |  | 
 | 
											
												
													
														|  | -        this->Makefile->IssueMessage(
 |  | 
 | 
											
												
													
														|  | 
 |  | +      if (!mf.GetGlobalGenerator()->HasKnownObjectFileLocation(&reason)) {
 | 
											
												
													
														|  | 
 |  | +        mf.IssueMessage(
 | 
											
												
													
														|  |            MessageType::FATAL_ERROR,
 |  |            MessageType::FATAL_ERROR,
 | 
											
												
													
														|  |            "The OBJECT library type may not be used for IMPORTED libraries" +
 |  |            "The OBJECT library type may not be used for IMPORTED libraries" +
 | 
											
												
													
														|  |              reason + ".");
 |  |              reason + ".");
 | 
											
										
											
												
													
														|  | @@ -288,28 +284,28 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |        if (!cmGeneratorExpression::IsValidTargetName(libName)) {
 |  |        if (!cmGeneratorExpression::IsValidTargetName(libName)) {
 | 
											
												
													
														|  |          std::ostringstream e;
 |  |          std::ostringstream e;
 | 
											
												
													
														|  |          e << "Invalid name for IMPORTED INTERFACE library target: " << libName;
 |  |          e << "Invalid name for IMPORTED INTERFACE library target: " << libName;
 | 
											
												
													
														|  | -        this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        status.SetError(e.str());
 | 
											
												
													
														|  |          return false;
 |  |          return false;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // Make sure the target does not already exist.
 |  |      // Make sure the target does not already exist.
 | 
											
												
													
														|  | -    if (this->Makefile->FindTargetToUse(libName)) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if (mf.FindTargetToUse(libName)) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "cannot create imported target \"" << libName
 |  |        e << "cannot create imported target \"" << libName
 | 
											
												
													
														|  |          << "\" because another target with the same name already exists.";
 |  |          << "\" because another target with the same name already exists.";
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // Create the imported target.
 |  |      // Create the imported target.
 | 
											
												
													
														|  | -    this->Makefile->AddImportedTarget(libName, type, importGlobal);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mf.AddImportedTarget(libName, type, importGlobal);
 | 
											
												
													
														|  |      return true;
 |  |      return true;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    // A non-imported target may not have UNKNOWN type.
 |  |    // A non-imported target may not have UNKNOWN type.
 | 
											
												
													
														|  |    if (type == cmStateEnums::UNKNOWN_LIBRARY) {
 |  |    if (type == cmStateEnums::UNKNOWN_LIBRARY) {
 | 
											
												
													
														|  | -    this->Makefile->IssueMessage(
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mf.IssueMessage(
 | 
											
												
													
														|  |        MessageType::FATAL_ERROR,
 |  |        MessageType::FATAL_ERROR,
 | 
											
												
													
														|  |        "The UNKNOWN library type may be used only for IMPORTED libraries.");
 |  |        "The UNKNOWN library type may be used only for IMPORTED libraries.");
 | 
											
												
													
														|  |      return true;
 |  |      return true;
 | 
											
										
											
												
													
														|  | @@ -318,8 +314,8 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |    // Enforce name uniqueness.
 |  |    // Enforce name uniqueness.
 | 
											
												
													
														|  |    {
 |  |    {
 | 
											
												
													
														|  |      std::string msg;
 |  |      std::string msg;
 | 
											
												
													
														|  | -    if (!this->Makefile->EnforceUniqueName(libName, msg)) {
 |  | 
 | 
											
												
													
														|  | -      this->SetError(msg);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    if (!mf.EnforceUniqueName(libName, msg)) {
 | 
											
												
													
														|  | 
 |  | +      status.SetError(msg);
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
										
											
												
													
														|  | @@ -331,17 +327,17 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
 | 
											
												
													
														|  |          libName.find("::") != std::string::npos) {
 |  |          libName.find("::") != std::string::npos) {
 | 
											
												
													
														|  |        std::ostringstream e;
 |  |        std::ostringstream e;
 | 
											
												
													
														|  |        e << "Invalid name for INTERFACE library target: " << libName;
 |  |        e << "Invalid name for INTERFACE library target: " << libName;
 | 
											
												
													
														|  | -      this->SetError(e.str());
 |  | 
 | 
											
												
													
														|  | 
 |  | +      status.SetError(e.str());
 | 
											
												
													
														|  |        return false;
 |  |        return false;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    this->Makefile->AddLibrary(libName, type, srclists, excludeFromAll);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mf.AddLibrary(libName, type, srclists, excludeFromAll);
 | 
											
												
													
														|  |      return true;
 |  |      return true;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    cmAppend(srclists, s, args.end());
 |  |    cmAppend(srclists, s, args.end());
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  this->Makefile->AddLibrary(libName, type, srclists, excludeFromAll);
 |  | 
 | 
											
												
													
														|  | 
 |  | +  mf.AddLibrary(libName, type, srclists, excludeFromAll);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    return true;
 |  |    return true;
 | 
											
												
													
														|  |  }
 |  |  }
 |