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

Last change on this file since 652 was 652, checked in by rybkin, 11 years ago

See C.L. 511

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