diff options
Diffstat (limited to 'Source/cmInstallGenerator.cxx')
-rw-r--r-- | Source/cmInstallGenerator.cxx | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx new file mode 100644 index 0000000..5448383 --- /dev/null +++ b/Source/cmInstallGenerator.cxx @@ -0,0 +1,82 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmInstallGenerator.h" + +#include "cmSystemTools.h" +#include "cmTarget.h" + +//---------------------------------------------------------------------------- +cmInstallGenerator +::cmInstallGenerator() +{ + this->ConfigurationName = 0; + this->ConfigurationTypes = 0; +} + +//---------------------------------------------------------------------------- +cmInstallGenerator +::~cmInstallGenerator() +{ +} + +//---------------------------------------------------------------------------- +void +cmInstallGenerator +::Generate(std::ostream& os, const char* config, + std::vector<std::string> const& configurationTypes) +{ + this->ConfigurationName = config; + this->ConfigurationTypes = &configurationTypes; + this->GenerateScript(os); + this->ConfigurationName = 0; + this->ConfigurationTypes = 0; +} + +//---------------------------------------------------------------------------- +void cmInstallGenerator::AddInstallRule(std::ostream& os, + const char* dest, + int type, + const char* files, + bool optional /* = false */, + const char* properties /* = 0 */) +{ + // TODO: Make optional files use IF(EXISTS) to not report if not + // installing. + std::string sfiles = files; + std::string destination = dest; + std::string stype; + switch(type) + { + case cmTarget::INSTALL_PROGRAMS: stype = "PROGRAM"; break; + case cmTarget::EXECUTABLE: stype = "EXECUTABLE"; break; + case cmTarget::STATIC_LIBRARY: stype = "STATIC_LIBRARY"; break; + case cmTarget::SHARED_LIBRARY: stype = "SHARED_LIBRARY"; break; + case cmTarget::MODULE_LIBRARY: stype = "MODULE"; break; + case cmTarget::INSTALL_FILES: + default: stype = "FILE"; break; + } + std::string fname = cmSystemTools::GetFilenameName(sfiles.c_str()); + os << "MESSAGE(STATUS \"Installing " << destination.c_str() + << "/" << fname.c_str() << "\")\n" + << "FILE(INSTALL DESTINATION \"" << destination.c_str() + << "\" TYPE " << stype.c_str() << (optional?" OPTIONAL":"") ; + if(properties && *properties) + { + os << " PROPERTIES" << properties; + } + os << " FILES \"" << sfiles.c_str() << "\")\n"; +} |