resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmMakefileLibraryTargetGenerator.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 "cmConfigure.h" // IWYU pragma: keep
6
7 #include <string>
8 #include <vector>
9
10 #include "cmMakefileTargetGenerator.h"
11
12 class cmGeneratorTarget;
13
14 class cmMakefileLibraryTargetGenerator : public cmMakefileTargetGenerator
15 {
16 public:
17   cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target);
18   ~cmMakefileLibraryTargetGenerator() override;
19
20   /* the main entry point for this class. Writes the Makefiles associated
21      with this target */
22   void WriteRuleFiles() override;
23
24 protected:
25   void WriteObjectLibraryRules();
26   void WriteStaticLibraryRules();
27   void WriteSharedLibraryRules(bool relink);
28   void WriteModuleLibraryRules(bool relink);
29
30   void WriteDeviceLibraryRules(const std::string& linkRule, bool relink);
31   void WriteNvidiaDeviceLibraryRules(const std::string& linkRuleVar,
32                                      bool relink,
33                                      std::vector<std::string>& commands,
34                                      const std::string& targetOutput);
35   void WriteLibraryRules(const std::string& linkRule,
36                          const std::string& extraFlags, bool relink);
37   // MacOSX Framework support methods
38   void WriteFrameworkRules(bool relink);
39
40   // Store the computd framework version for OS X Frameworks.
41   std::string FrameworkVersion;
42
43 private:
44   std::string DeviceLinkObject;
45 };