resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmGlobalMSYSMakefileGenerator.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include <memory>
6 #include <string>
7 #include <vector>
8
9 #include "cmGlobalGeneratorFactory.h"
10 #include "cmGlobalUnixMakefileGenerator3.h"
11
12 class cmMakefile;
13 class cmake;
14 struct cmDocumentationEntry;
15
16 /** \class cmGlobalMSYSMakefileGenerator
17  * \brief Write a NMake makefiles.
18  *
19  * cmGlobalMSYSMakefileGenerator manages nmake build process for a tree
20  */
21 class cmGlobalMSYSMakefileGenerator : public cmGlobalUnixMakefileGenerator3
22 {
23 public:
24   cmGlobalMSYSMakefileGenerator(cmake* cm);
25   static std::unique_ptr<cmGlobalGeneratorFactory> NewFactory()
26   {
27     return std::unique_ptr<cmGlobalGeneratorFactory>(
28       new cmGlobalGeneratorSimpleFactory<cmGlobalMSYSMakefileGenerator>());
29   }
30
31   //! Get the name for the generator.
32   virtual std::string GetName() const
33   {
34     return cmGlobalMSYSMakefileGenerator::GetActualName();
35   }
36   static std::string GetActualName() { return "MSYS Makefiles"; }
37
38   /** Get the documentation entry for this generator.  */
39   static void GetDocumentation(cmDocumentationEntry& entry);
40
41   /**
42    * Try to determine system information such as shared library
43    * extension, pthreads, byte order etc.
44    */
45   virtual void EnableLanguage(std::vector<std::string> const& languages,
46                               cmMakefile*, bool optional);
47
48 private:
49   std::string FindMinGW(std::string const& makeloc);
50 };