source: CMT/HEAD/source/cmt_generators.h @ 663

Last change on this file since 663 was 663, checked in by rybkin, 10 years ago

See C.L. 522

  • Property svn:eol-style set to native
File size: 7.4 KB
Line 
1//-----------------------------------------------------------
2// Copyright Christian Arnault LAL-Orsay CNRS
3// arnault@lal.in2p3.fr
4// Modified by Grigory Rybkin
5// See the complete license in cmt_license.txt "http://www.cecill.info".
6//-----------------------------------------------------------
7
8#ifndef __cmt_generators_h__
9#define __cmt_generators_h__
10
11#include "cmt_constituent.h"
12#include "cmt_fragment.h"
13#include "cmt_generator.h"
14#include "cmt_deps_builder.h"
15
16class AnyDocumentGenerator : public CmtGenerator
17{
18public:
19  AnyDocumentGenerator ();
20
21protected:
22  void reset ();
23
24  Variable m_TITLE;
25  Variable m_STRUCTURED_OUTPUT;
26
27  FragmentHandle make_header_fragment;
28  FragmentHandle cleanup_header_fragment;
29  FragmentHandle cleanup_fragment;
30  FragmentHandle dependencies_fragment;
31  FragmentHandle dependencies_and_triggers_fragment;
32};
33
34class DocumentGenerator : public AnyDocumentGenerator
35{
36public:
37  DocumentGenerator ();
38  void build (const cmt_string& package,
39              const Constituent& constituent,
40              bool& dependencies,
41              const cmt_string& file = "");
42  // returned bool& value indicates whether dependencies_fragment added to makefile
43
44private:
45  void reset ();
46  bool analyze_file (const cmt_string& file,
47                     const cmt_string& constituent_name,
48                     const cmt_string& output_suffix);
49
50  Variable m_FILEEXTENSION;
51
52  FragmentHandle document_header_fragment;
53  FragmentHandle dependency_fragment;
54};
55
56class LibraryGenerator : public AnyDocumentGenerator
57{
58public:
59  LibraryGenerator ();
60  void build (const cmt_string& package,
61              const Constituent& constituent,
62              bool& dependencies,
63              const cmt_string& file = "");
64  // returned bool& value indicates whether dependencies_fragment added to makefile
65
66protected:
67  void reset ();
68  bool analyze_file (const Constituent& constituent,
69                     const cmt_string& file);
70  void java_file_action (SourceFile& file, const Constituent& constituent);
71  void proto_file_action (const cmt_string& file, const Constituent& constituent);
72  void prepare_proto_file (const cmt_string& file);
73  void module_file_action (SourceFile& file, const Constituent& constituent);
74  void fill_names_outputs ();
75
76  FragmentHandle library_header_fragment;
77  FragmentHandle application_header_fragment;
78  FragmentHandle java_header_fragment;
79  FragmentHandle jar_header_fragment;
80  FragmentHandle library_fragment;
81  FragmentHandle library_no_share_fragment;
82  FragmentHandle library_no_static_fragment;
83  FragmentHandle application_fragment;
84  FragmentHandle jar_fragment;
85  FragmentHandle java_fragment;
86  FragmentHandle java_copy_fragment;
87  FragmentHandle cleanup_library_fragment;
88  FragmentHandle cleanup_application_fragment;
89  FragmentHandle cleanup_java_fragment;
90  FragmentHandle cleanup_objects_fragment;
91  FragmentHandle buildproto_fragment;
92  FragmentHandle check_application_fragment;
93  FragmentHandle check_java_fragment;
94  FragmentHandle protos_header_fragment;
95};
96
97class ApplicationGenerator : public LibraryGenerator
98{
99public:
100};
101
102class ReadmeGenerator : public CmtGenerator
103{
104public:
105  ReadmeGenerator ();
106  void build (const CmtSystem::cmt_string_vector& arguments);
107
108private:
109  void reset ();
110
111  FragmentHandle readme_header_fragment;
112  FragmentHandle readme_fragment;
113  FragmentHandle readme_doc_fragment;
114  FragmentHandle readme_use_fragment;
115  FragmentHandle readme_trailer_fragment;
116};
117
118class PrototypeGenerator : public CmtGenerator
119{
120public:
121  void build (const cmt_string& file_name);
122};
123
124class DefaultMakefileGenerator : public CmtGenerator
125{
126public:
127  void build ();
128};
129
130class MSDEVGenerator : public CmtGenerator
131{
132public:
133  MSDEVGenerator ();
134  int build_workspace (const Constituent::ConstituentVector& constituents);
135  int build_project (const Constituent& constituent);
136
137private:
138  void reset ();
139
140  cmt_string msdevdir;
141
142  FragmentHandle dsw_header_fragment;
143  FragmentHandle dsw_project_fragment;
144  FragmentHandle dsw_all_project_header_fragment;
145  FragmentHandle dsw_all_project_dependency_fragment;
146  FragmentHandle dsw_all_project_trailer_fragment;
147  FragmentHandle dsw_trailer_fragment;
148
149  FragmentHandle dsp_all_fragment;
150  FragmentHandle dsp_library_header_fragment;
151  FragmentHandle dsp_application_header_fragment;
152  FragmentHandle dsp_windows_header_fragment;
153  FragmentHandle dsp_contents_fragment;
154  FragmentHandle dsp_trailer_fragment;
155
156};
157
158class VSNETGenerator : public CmtGenerator
159{
160public:
161  VSNETGenerator ();
162  int build_workspace (const Constituent::ConstituentVector& constituents);
163  int build_project (const Constituent& constituent);
164
165private:
166  void reset ();
167
168  void pseudoGUID (const cmt_string& a, 
169                   const cmt_string& b, 
170                   const cmt_string& c, 
171                   cmt_string& d);
172
173  cmt_string vsnetdir;
174
175    //Visual Studio.net Support
176  FragmentHandle sln_header_fragment;
177  FragmentHandle sln_project_fragment;
178  FragmentHandle sln_dependency_header_fragment;
179  FragmentHandle sln_dependency_project_fragment;
180  FragmentHandle sln_dependency_trailer_fragment;
181  FragmentHandle sln_project_config_fragment;
182  FragmentHandle sln_trailer_fragment;
183
184  FragmentHandle vcproj_all_fragment;
185  FragmentHandle vcproj_library_header_fragment;
186  FragmentHandle vcproj_application_header_fragment;
187  FragmentHandle vcproj_windows_header_fragment;
188  FragmentHandle vcproj_contents_fragment;
189  FragmentHandle vcproj_directory_header_fragment;
190  FragmentHandle vcproj_directory_trailer_fragment;
191  FragmentHandle vcproj_trailer_fragment;
192};
193
194class MakeSetupGenerator : public CmtGenerator
195{
196public:
197  MakeSetupGenerator ();
198  void build (const cmt_string& package);
199
200private:
201  void reset ();
202
203  FragmentHandle make_setup_header_fragment;
204  FragmentHandle make_setup_fragment;
205};
206
207class ConstituentsMakefileGenerator : public CmtGenerator
208{
209public:
210  ConstituentsMakefileGenerator ();
211  void build (const cmt_string& package,
212              const cmt_string& file);
213  //          const CmtSystem::cmt_string_vector& arguments);
214
215private:
216  void reset ();
217
218  FragmentHandle constituents_header_fragment;
219  FragmentHandle constituents_trailer_fragment;
220  FragmentHandle group_fragment;
221  FragmentHandle constituent_fragment;
222  FragmentHandle constituent_lock_fragment;
223  FragmentHandle constituent_app_lib_fragment;
224  FragmentHandle check_application_header_fragment;
225};
226
227class PackagesMakefileGenerator : public CmtGenerator
228{
229public:
230  PackagesMakefileGenerator ();
231  void build (const cmt_string& package,
232              const cmt_string& file);
233  //          const CmtSystem::cmt_string_vector& arguments);
234
235private:
236  void reset ();
237
238  Variable m_DEPENDENCIES;
239  Variable m_PACKAGEMGRPATH;
240  Variable m_PACKAGEFULLNAME;
241  Variable m_ISLOCAL;
242  Variable m_ISINCLUDED;
243
244  FragmentHandle packages_header_fragment;
245  FragmentHandle packages_trailer_fragment;
246  FragmentHandle package_fragment;
247};
248
249class DependencyGenerator : public CmtGenerator
250{
251public:
252  void build (const CmtSystem::cmt_string_vector& arguments);
253  void prepare_includes ();
254  void prepare_header_file_filters ();
255  void reset ();
256
257protected:
258  int set_source_files ();
259  int set_source_files (const CmtSystem::cmt_string_vector& files);
260  int validate (const CmtSystem::cmt_string_vector& files) const;
261
262private:
263  void add_line_to_text (const cmt_string& line, cmt_string& text) const;
264  cmt_string build (const cmt_string& file_name);
265  int fill_dependencies (cmt_string& dependencies,
266                         const CmtSystem::cmt_string_vector& source);
267  int fill_dependencies (cmt_string& dependencies);
268  DepsBuilder m_deps_builder;
269  bool m_stamps;
270  cmt_string m_name;
271};
272
273#endif
Note: See TracBrowser for help on using the repository browser.