Resync.
[CMakeLuaTailorHgBridge.git] / CMakeLua / Source / CPack / cmCPackGeneratorFactory.cxx
blob933a3844c58c53ad3bc148998bc77b44dcc7f801
1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmCPackGeneratorFactory.cxx,v $
5 Language: C++
6 Date: $Date: 2007/11/05 21:55:45 $
7 Version: $Revision: 1.2 $
9 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notices for more information.
16 =========================================================================*/
18 #include "cmCPackGeneratorFactory.h"
20 #include "cmCPackGenerator.h"
21 #include "cmCPackTGZGenerator.h"
22 #include "cmCPackTarBZip2Generator.h"
23 #include "cmCPackTarCompressGenerator.h"
24 #include "cmCPackZIPGenerator.h"
25 #include "cmCPackSTGZGenerator.h"
26 #include "cmCPackNSISGenerator.h"
27 #ifdef __APPLE__
28 # include "cmCPackPackageMakerGenerator.h"
29 # include "cmCPackOSXX11Generator.h"
30 #endif
32 #ifdef __CYGWIN__
33 # include "cmCPackCygwinBinaryGenerator.h"
34 # include "cmCPackCygwinSourceGenerator.h"
35 #endif
37 #if !defined(_WIN32) && !defined(__APPLE__) \
38 && !defined(__QNXNTO__) && !defined(__BEOS__)
39 # include "cmCPackDebGenerator.h"
40 # include "cmCPackRPMGenerator.h"
41 #endif
44 #include "cmCPackLog.h"
46 //----------------------------------------------------------------------
47 cmCPackGeneratorFactory::cmCPackGeneratorFactory()
49 this->RegisterGenerator("TGZ", "Tar GZip compression",
50 cmCPackTGZGenerator::CreateGenerator);
51 this->RegisterGenerator("STGZ", "Self extracting Tar GZip compression",
52 cmCPackSTGZGenerator::CreateGenerator);
53 this->RegisterGenerator("NSIS", "Null Soft Installer",
54 cmCPackNSISGenerator::CreateGenerator);
55 #ifdef __CYGWIN__
56 this->RegisterGenerator("CygwinBinary", "Cygwin Binary Installer",
57 cmCPackCygwinBinaryGenerator::CreateGenerator);
58 this->RegisterGenerator("CygwinSource", "Cygwin Source Installer",
59 cmCPackCygwinSourceGenerator::CreateGenerator);
60 #endif
62 this->RegisterGenerator("ZIP", "ZIP file format",
63 cmCPackZIPGenerator::CreateGenerator);
64 this->RegisterGenerator("TBZ2", "Tar BZip2 compression",
65 cmCPackTarBZip2Generator::CreateGenerator);
66 this->RegisterGenerator("TZ", "Tar Compress compression",
67 cmCPackTarCompressGenerator::CreateGenerator);
68 #ifdef __APPLE__
69 this->RegisterGenerator("PackageMaker", "Mac OSX Package Maker installer",
70 cmCPackPackageMakerGenerator::CreateGenerator);
71 this->RegisterGenerator("OSXX11", "Mac OSX X11 bundle",
72 cmCPackOSXX11Generator::CreateGenerator);
73 #endif
74 #if !defined(_WIN32) && !defined(__APPLE__) \
75 && !defined(__QNXNTO__) && !defined(__BEOS__)
76 this->RegisterGenerator("DEB", "Debian packages",
77 cmCPackDebGenerator::CreateGenerator);
78 this->RegisterGenerator("RPM", "RPM packages",
79 cmCPackRPMGenerator::CreateGenerator);
80 #endif
83 //----------------------------------------------------------------------
84 cmCPackGeneratorFactory::~cmCPackGeneratorFactory()
86 std::vector<cmCPackGenerator*>::iterator it;
87 for ( it = this->Generators.begin(); it != this->Generators.end(); ++ it )
89 delete *it;
93 //----------------------------------------------------------------------
94 cmCPackGenerator* cmCPackGeneratorFactory::NewGenerator(const char* name)
96 cmCPackGenerator* gen = this->NewGeneratorInternal(name);
97 if ( !gen )
99 return 0;
101 this->Generators.push_back(gen);
102 gen->SetLogger(this->Logger);
103 return gen;
106 //----------------------------------------------------------------------
107 cmCPackGenerator* cmCPackGeneratorFactory::NewGeneratorInternal(
108 const char* name)
110 if ( !name )
112 return 0;
114 cmCPackGeneratorFactory::t_GeneratorCreatorsMap::iterator it
115 = this->GeneratorCreators.find(name);
116 if ( it == this->GeneratorCreators.end() )
118 return 0;
120 return (it->second)();
123 //----------------------------------------------------------------------
124 void cmCPackGeneratorFactory::RegisterGenerator(const char* name,
125 const char* generatorDescription,
126 CreateGeneratorCall* createGenerator)
128 if ( !name || !createGenerator )
130 cmCPack_Log(this->Logger, cmCPackLog::LOG_ERROR,
131 "Cannot register generator" << std::endl);
132 return;
134 this->GeneratorCreators[name] = createGenerator;
135 this->GeneratorDescriptions[name] = generatorDescription;