summaryrefslogtreecommitdiffstats
path: root/Source/CPack/cmCPackCygwinBinaryGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-06-09 17:45:09 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-06-09 17:45:09 (GMT)
commitbba61bc8a7a7f399a5c9d18172160d424bbc9f7d (patch)
treeedccf84ef59b5910e029bc0cb66f319a065542c7 /Source/CPack/cmCPackCygwinBinaryGenerator.cxx
parent3eec8a91fc4980739a99d8ae17324960f94e96d2 (diff)
downloadCMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.zip
CMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.tar.gz
CMake-bba61bc8a7a7f399a5c9d18172160d424bbc9f7d.tar.bz2
ENH: check in partial cygwin generator
Diffstat (limited to 'Source/CPack/cmCPackCygwinBinaryGenerator.cxx')
-rw-r--r--Source/CPack/cmCPackCygwinBinaryGenerator.cxx95
1 files changed, 95 insertions, 0 deletions
diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx
new file mode 100644
index 0000000..c31de15
--- /dev/null
+++ b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx
@@ -0,0 +1,95 @@
+/*=========================================================================
+
+ 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 "cmCPackCygwinBinaryGenerator.h"
+
+#include "cmake.h"
+#include "cmGlobalGenerator.h"
+#include "cmLocalGenerator.h"
+#include "cmSystemTools.h"
+#include "cmMakefile.h"
+#include "cmGeneratedFileStream.h"
+#include "cmCPackLog.h"
+
+#include <cmsys/SystemTools.hxx>
+
+//----------------------------------------------------------------------
+cmCPackCygwinBinaryGenerator::cmCPackCygwinBinaryGenerator()
+{
+ this->Compress = false;
+}
+
+//----------------------------------------------------------------------
+cmCPackCygwinBinaryGenerator::~cmCPackCygwinBinaryGenerator()
+{
+}
+
+//----------------------------------------------------------------------
+int cmCPackCygwinBinaryGenerator::InitializeInternal()
+{
+ this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "1");
+ std::vector<std::string> path;
+ std::string pkgPath = cmSystemTools::FindProgram("bzip2", path, false);
+ if ( pkgPath.empty() )
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR, "Cannot find BZip2" << std::endl);
+ return 0;
+ }
+ this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", pkgPath.c_str());
+ cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Found Compress program: "
+ << pkgPath.c_str()
+ << std::endl);
+
+ return this->Superclass::InitializeInternal();
+}
+
+//----------------------------------------------------------------------
+int cmCPackCygwinBinaryGenerator::CompressFiles(const char* outFileName,
+ const char* toplevel, const std::vector<std::string>& files)
+{
+ std::string packageName = this->GetOption("CPACK_PACKAGE_NAME");
+ packageName += this->GetOption("CPACK_PACKAGE_VERSION");
+ packageName = cmsys::SystemTools::LowerCase(packageName);
+ std::string manifest = "/share/doc/";
+ manifest += packageName;
+ manifest += "/MANIFEST";
+ std::string manifestFile
+ = this->GetOption("CPACK_TEMPORARY_DIRECTORY");
+ std::string tempdir = manifestFile;
+ manifestFile += manifest;
+ // create an extra scope to force the stream
+ // to create the file before the super class is called
+ {
+ cmGeneratedFileStream ofs(manifestFile.c_str());
+ for(std::vector<std::string>::const_iterator i = files.begin();
+ i != files.end(); ++i)
+ {
+#undef cerr
+ // remove the temp dir and replace with /usr
+ ofs << "/usr" << (*i).substr(tempdir.size()) << "\n";
+ std::cerr << "/usr" << (*i).substr(tempdir.size()) << "\n";
+
+ }
+ ofs << "/usr" << manifest << "\n";
+ }
+ // Now compress up everything
+ std::vector<std::string> filesWithManifest = files;
+ filesWithManifest.push_back(manifestFile);
+ return this->Superclass::CompressFiles(outFileName, toplevel,
+ filesWithManifest);
+}
+