1
/* KDevelop CMake Support
3
* Copyright 2006 Matt Rogers <mattr@kde.org>
4
* Copyright 2007 Aleix Pol <aleixpol@gmail.com>
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25
#include <QtCore/QList>
26
#include <QtCore/QString>
27
#include <QtCore/QStringList>
29
#include "cmakeexport.h"
30
#include "cmakelistsparser.h"
31
#include "cmakeastvisitor.h"
32
#include "cmaketypes.h"
34
class KDEVCMAKECOMMON_EXPORT CMakeAst /*Should considerate making it abstract. */
37
CMakeAst() : m_line(-1) { }
38
virtual ~CMakeAst() { /*qDeleteAll( m_children );*/ }
40
virtual int accept(CMakeAstVisitor * v) const { return v->visit(this); }
43
* Writes the information stored in the Ast into the @p buffer.
44
* All Asts that are a child of this Ast are written back as well.
46
virtual bool isDeprecated() const { return false; }
48
virtual bool parseFunctionInfo( const CMakeFunctionDesc& )=0;
50
int line() const { return m_line; }
51
const CMakeFileContent & content() const { return m_content; }
52
void setContent(const CMakeFileContent &cont, int nline=0) { m_content=cont; m_line=nline; }
53
const QList<CMakeFunctionArgument> & outputArguments() const { return m_outputArguments; }
55
CMakeAst( const CMakeAst& ) {}
57
QList<CMakeFunctionArgument> m_outputArguments;
58
CMakeFileContent m_content;
62
void addOutputArgument(const CMakeFunctionArgument& arg) { m_outputArguments.append(arg); }
65
#define CMAKE_REGISTER_AST( klassName, astId ) namespace { \
66
CMakeAst* Create##klassName() { return new klassName; } \
67
bool b_##astId = AstFactory::self()->registerAst( QLatin1String( #astId ), Create##klassName ); }
69
#define CMAKE_BEGIN_AST_CLASS( klassName ) class klassName : public CMakeAst { \
74
virtual int accept(CMakeAstVisitor * visitor) const { return visitor->visit(this); } \
75
virtual bool parseFunctionInfo( const CMakeFunctionDesc& );
77
#define CMAKE_ADD_AST_MEMBER( returnType, returnName ) \
79
returnType returnName() const { return m_##returnName; } \
81
returnType m_##returnName;
83
#define CMAKE_MARK_AS_DEPRECATED() virtual bool isDeprecated() const { return true; }
85
#define CMAKE_END_AST_CLASS( klassName ) };
87
CMAKE_BEGIN_AST_CLASS( CustomCommandAst )
93
CMAKE_ADD_AST_MEMBER( bool, isForTarget )
94
CMAKE_ADD_AST_MEMBER( QString, targetName )
95
CMAKE_ADD_AST_MEMBER( BuildStage, buildStage )
96
CMAKE_ADD_AST_MEMBER( QStringList, outputs )
97
CMAKE_ADD_AST_MEMBER( QStringList, commands )
98
CMAKE_ADD_AST_MEMBER( QString, mainDependency )
99
CMAKE_ADD_AST_MEMBER( QStringList, otherDependencies )
100
CMAKE_ADD_AST_MEMBER( QString, workingDirectory )
101
CMAKE_ADD_AST_MEMBER( QString, comment )
102
CMAKE_ADD_AST_MEMBER( QString, source )
103
CMAKE_ADD_AST_MEMBER( bool, isVerbatim )
104
CMAKE_ADD_AST_MEMBER( bool, append )
105
CMAKE_END_AST_CLASS( CustomCommandAst )
107
CMAKE_BEGIN_AST_CLASS( MacroCallAst )
108
CMAKE_ADD_AST_MEMBER( QString, name )
109
CMAKE_ADD_AST_MEMBER( QStringList, arguments )
110
CMAKE_END_AST_CLASS( MacroCallAst )
112
CMAKE_BEGIN_AST_CLASS( CustomTargetAst )
113
typedef QMap<QString, QStringList> cmdAndArgs; //Just to make preprocessor not to cry
114
CMAKE_ADD_AST_MEMBER( QString, target )
115
CMAKE_ADD_AST_MEMBER( bool, buildAlways )
116
CMAKE_ADD_AST_MEMBER( cmdAndArgs, commandArgs )
117
CMAKE_ADD_AST_MEMBER( QStringList, dependencies )
118
CMAKE_ADD_AST_MEMBER( QString, workingDir )
119
CMAKE_ADD_AST_MEMBER( QString, comment )
120
CMAKE_ADD_AST_MEMBER( bool, isVerbatim )
121
CMAKE_END_AST_CLASS( CustomTargetAst )
123
CMAKE_BEGIN_AST_CLASS( AddDefinitionsAst )
124
CMAKE_ADD_AST_MEMBER( QStringList, definitions )
125
CMAKE_END_AST_CLASS( AddDefinitionsAst )
127
CMAKE_BEGIN_AST_CLASS( AddDependenciesAst )
128
CMAKE_ADD_AST_MEMBER( QString, target )
129
CMAKE_ADD_AST_MEMBER( QStringList, dependencies )
130
CMAKE_END_AST_CLASS( AddDependenciesAst )
132
CMAKE_BEGIN_AST_CLASS( AddExecutableAst )
133
CMAKE_ADD_AST_MEMBER( QString, executable )
134
CMAKE_ADD_AST_MEMBER( bool, isWin32 )
135
CMAKE_ADD_AST_MEMBER( bool, isOsXBundle )
136
CMAKE_ADD_AST_MEMBER( bool, excludeFromAll )
137
CMAKE_ADD_AST_MEMBER( bool, isImported )
138
CMAKE_ADD_AST_MEMBER( QStringList, sourceLists )
139
CMAKE_END_AST_CLASS( AddExecutableAst )
141
CMAKE_BEGIN_AST_CLASS( AddLibraryAst )
142
enum LibraryType {Shared, Static, Module, Unknown};
143
CMAKE_ADD_AST_MEMBER( QString, libraryName )
144
CMAKE_ADD_AST_MEMBER( LibraryType, type )
145
CMAKE_ADD_AST_MEMBER( bool, isImported )
146
CMAKE_ADD_AST_MEMBER( bool, excludeFromAll )
147
CMAKE_ADD_AST_MEMBER( QStringList, sourceLists )
148
static QMap<QString, LibraryType> s_typeForName;
149
CMAKE_END_AST_CLASS( AddLibraryAst )
151
CMAKE_BEGIN_AST_CLASS( AddSubdirectoryAst )
152
CMAKE_ADD_AST_MEMBER( QString, sourceDir )
153
CMAKE_ADD_AST_MEMBER( QString, binaryDir )
154
CMAKE_ADD_AST_MEMBER( bool, excludeFromAll )
155
CMAKE_END_AST_CLASS( AddSubdirectoryAst )
158
CMAKE_BEGIN_AST_CLASS( AddTestAst )
159
CMAKE_ADD_AST_MEMBER( QString, testName )
160
CMAKE_ADD_AST_MEMBER( QString, exeName )
161
CMAKE_ADD_AST_MEMBER( QStringList, testArgs )
162
CMAKE_END_AST_CLASS( AddTestAst )
165
CMAKE_BEGIN_AST_CLASS( AuxSourceDirectoryAst )
166
CMAKE_ADD_AST_MEMBER( QString, dirName )
167
CMAKE_ADD_AST_MEMBER( QString, variableName )
168
CMAKE_END_AST_CLASS( AuxSourceDirectoryAst )
171
CMAKE_BEGIN_AST_CLASS( BuildCommandAst )
172
CMAKE_ADD_AST_MEMBER( QString, variableName )
173
CMAKE_ADD_AST_MEMBER( QString, makeCommand )
174
CMAKE_END_AST_CLASS( BuildCommandAst )
177
CMAKE_BEGIN_AST_CLASS( BuildNameAst )
178
CMAKE_ADD_AST_MEMBER( QString, buildName )
179
CMAKE_END_AST_CLASS( BuildNameAst )
182
CMAKE_BEGIN_AST_CLASS( CMakeMinimumRequiredAst )
183
CMAKE_ADD_AST_MEMBER( QList<int>, version )
184
CMAKE_ADD_AST_MEMBER( bool, wrongVersionIsFatal )
185
CMAKE_END_AST_CLASS( CMakeMinimumRequiredAst )
188
CMAKE_BEGIN_AST_CLASS( ConfigureFileAst )
189
CMAKE_ADD_AST_MEMBER( QString, inputFile )
190
CMAKE_ADD_AST_MEMBER( QString, outputFile )
191
CMAKE_ADD_AST_MEMBER( bool, copyOnly )
192
CMAKE_ADD_AST_MEMBER( bool, escapeQuotes )
193
CMAKE_ADD_AST_MEMBER( bool, atsOnly )
194
CMAKE_ADD_AST_MEMBER( bool, immediate )
195
CMAKE_END_AST_CLASS( ConfigureFileAst )
198
CMAKE_BEGIN_AST_CLASS( CreateTestSourcelistAst )
199
CMAKE_ADD_AST_MEMBER( QString, name )
200
CMAKE_ADD_AST_MEMBER( QString, driverName )
201
CMAKE_ADD_AST_MEMBER( QStringList, tests )
202
CMAKE_ADD_AST_MEMBER( QStringList, extraIncludes )
203
CMAKE_ADD_AST_MEMBER( QString, function )
204
CMAKE_END_AST_CLASS( CreateTestSourcelistAst )
207
CMAKE_BEGIN_AST_CLASS( EnableLanguageAst )
208
CMAKE_ADD_AST_MEMBER( QString, language )
209
CMAKE_END_AST_CLASS( EnableLanguageAst )
212
CMAKE_BEGIN_AST_CLASS( EnableTestingAst )
213
CMAKE_END_AST_CLASS( EnableTestingAst )
216
CMAKE_BEGIN_AST_CLASS( ExecProgramAst )
217
CMAKE_MARK_AS_DEPRECATED()
218
CMAKE_ADD_AST_MEMBER( QString, executableName )
219
CMAKE_ADD_AST_MEMBER( QString, workingDirectory )
220
CMAKE_ADD_AST_MEMBER( QStringList, arguments )
221
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
222
CMAKE_ADD_AST_MEMBER( QString, returnValue )
223
CMAKE_END_AST_CLASS( ExecProgramAst )
226
CMAKE_BEGIN_AST_CLASS( ExecuteProcessAst )
227
CMAKE_ADD_AST_MEMBER( QList<QStringList>, commands )
228
CMAKE_ADD_AST_MEMBER( QString, resultVariable )
229
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
230
CMAKE_ADD_AST_MEMBER( QString, errorVariable )
231
CMAKE_ADD_AST_MEMBER( QString, inputFile )
232
CMAKE_ADD_AST_MEMBER( QString, outputFile )
233
CMAKE_ADD_AST_MEMBER( QString, errorFile )
234
CMAKE_ADD_AST_MEMBER( QString, workingDirectory )
235
CMAKE_ADD_AST_MEMBER( float, timeout )
236
CMAKE_ADD_AST_MEMBER( bool, isOutputQuiet )
237
CMAKE_ADD_AST_MEMBER( bool, isErrorQuiet )
238
CMAKE_ADD_AST_MEMBER( bool, isOutputStrip )
239
CMAKE_ADD_AST_MEMBER( bool, isErrorStrip )
240
CMAKE_END_AST_CLASS( ExecuteProcessAst )
243
CMAKE_BEGIN_AST_CLASS( ExportLibraryDepsAst )
244
CMAKE_MARK_AS_DEPRECATED()
245
CMAKE_ADD_AST_MEMBER( QString, file )
246
CMAKE_ADD_AST_MEMBER( bool, append )
247
CMAKE_END_AST_CLASS( ExportLibraryDepsAst )
250
CMAKE_BEGIN_AST_CLASS( FileAst )
251
enum TypeFile { Write, Append, Read, Glob, GlobRecurse, Remove, RemoveRecurse,
252
MakeDirectory, RelativePath, ToCmakePath, ToNativePath, Strings, Download };
253
CMAKE_ADD_AST_MEMBER( TypeFile, type )
254
CMAKE_ADD_AST_MEMBER( QString, path )
255
CMAKE_ADD_AST_MEMBER( QString, variable )
256
CMAKE_ADD_AST_MEMBER( QString, directory )
257
CMAKE_ADD_AST_MEMBER( QString, message )
258
CMAKE_ADD_AST_MEMBER( QStringList, globbingExpressions )
259
CMAKE_ADD_AST_MEMBER( QStringList, directories )
261
CMAKE_ADD_AST_MEMBER( KUrl, url )
262
CMAKE_ADD_AST_MEMBER( int, timeout )
264
CMAKE_ADD_AST_MEMBER( int, limitCount )
265
CMAKE_ADD_AST_MEMBER( int, limitInput )
266
CMAKE_ADD_AST_MEMBER( int, limitOutput )
267
CMAKE_ADD_AST_MEMBER( int, lengthMinimum )
268
CMAKE_ADD_AST_MEMBER( int, lengthMaximum )
269
CMAKE_ADD_AST_MEMBER( bool, newlineConsume )
270
CMAKE_ADD_AST_MEMBER( bool, noHexConversion )
271
CMAKE_ADD_AST_MEMBER( QString, regex )
272
CMAKE_END_AST_CLASS( FileAst )
275
CMAKE_BEGIN_AST_CLASS( FindFileAst )
276
CMAKE_ADD_AST_MEMBER( QString, variableName )
277
CMAKE_ADD_AST_MEMBER( QStringList, filenames )
278
CMAKE_ADD_AST_MEMBER( QStringList, path )
279
CMAKE_ADD_AST_MEMBER( QStringList, hints )
280
CMAKE_ADD_AST_MEMBER( QStringList, pathSuffixes )
281
CMAKE_ADD_AST_MEMBER( QString, documentation )
283
CMAKE_ADD_AST_MEMBER( bool, noDefaultPath )
284
CMAKE_ADD_AST_MEMBER( bool, noCmakeEnvironmentPath )
285
CMAKE_ADD_AST_MEMBER( bool, noCmakePath )
286
CMAKE_ADD_AST_MEMBER( bool, noSystemEnvironmentPath )
287
CMAKE_ADD_AST_MEMBER( bool, noCmakeSystemPath )
288
CMAKE_END_AST_CLASS( FindFileAst )
291
CMAKE_BEGIN_AST_CLASS( FindLibraryAst )
292
CMAKE_ADD_AST_MEMBER( QString, variableName )
293
CMAKE_ADD_AST_MEMBER( QStringList, filenames )
294
CMAKE_ADD_AST_MEMBER( QStringList, path )
295
CMAKE_ADD_AST_MEMBER( QStringList, hints )
296
CMAKE_ADD_AST_MEMBER( QStringList, pathSuffixes )
297
CMAKE_ADD_AST_MEMBER( QString, documentation )
299
CMAKE_ADD_AST_MEMBER( bool, noDefaultPath )
300
CMAKE_ADD_AST_MEMBER( bool, noCmakeEnvironmentPath )
301
CMAKE_ADD_AST_MEMBER( bool, noCmakePath )
302
CMAKE_ADD_AST_MEMBER( bool, noSystemEnvironmentPath )
303
CMAKE_ADD_AST_MEMBER( bool, noCmakeSystemPath )
304
CMAKE_END_AST_CLASS( FindLibraryAst )
307
CMAKE_BEGIN_AST_CLASS( FindPackageAst ) //FIXME: there are things that I don't understand
308
CMAKE_ADD_AST_MEMBER( QString, name )
309
CMAKE_ADD_AST_MEMBER( QString, version )
310
CMAKE_ADD_AST_MEMBER( bool, isQuiet )
311
CMAKE_ADD_AST_MEMBER( bool, noModule )
312
CMAKE_ADD_AST_MEMBER( bool, isRequired )
313
CMAKE_END_AST_CLASS( FindPackageAst )
316
CMAKE_BEGIN_AST_CLASS( FindPathAst )
317
CMAKE_ADD_AST_MEMBER( QString, variableName )
318
CMAKE_ADD_AST_MEMBER( QStringList, filenames )
319
CMAKE_ADD_AST_MEMBER( QStringList, path )
320
CMAKE_ADD_AST_MEMBER( QStringList, hints )
321
CMAKE_ADD_AST_MEMBER( QStringList, pathSuffixes )
322
CMAKE_ADD_AST_MEMBER( QString, documentation )
324
CMAKE_ADD_AST_MEMBER( bool, noDefaultPath )
325
CMAKE_ADD_AST_MEMBER( bool, noCmakeEnvironmentPath )
326
CMAKE_ADD_AST_MEMBER( bool, noCmakePath )
327
CMAKE_ADD_AST_MEMBER( bool, noSystemEnvironmentPath )
328
CMAKE_ADD_AST_MEMBER( bool, noCmakeSystemPath )
329
CMAKE_END_AST_CLASS( FindPathAst )
332
CMAKE_BEGIN_AST_CLASS( FindProgramAst )
333
CMAKE_ADD_AST_MEMBER( QString, variableName )
334
CMAKE_ADD_AST_MEMBER( QStringList, filenames )
335
CMAKE_ADD_AST_MEMBER( QStringList, path )
336
CMAKE_ADD_AST_MEMBER( QStringList, hints )
337
CMAKE_ADD_AST_MEMBER( QStringList, pathSuffixes )
338
CMAKE_ADD_AST_MEMBER( QString, documentation )
340
CMAKE_ADD_AST_MEMBER( bool, noDefaultPath )
341
CMAKE_ADD_AST_MEMBER( bool, noCmakeEnvironmentPath )
342
CMAKE_ADD_AST_MEMBER( bool, noCmakePath )
343
CMAKE_ADD_AST_MEMBER( bool, noSystemEnvironmentPath )
344
CMAKE_ADD_AST_MEMBER( bool, noCmakeSystemPath )
345
CMAKE_END_AST_CLASS( FindProgramAst )
348
CMAKE_BEGIN_AST_CLASS( FltkWrapUiAst )
349
CMAKE_END_AST_CLASS( FltkWrapUiAst )
352
CMAKE_BEGIN_AST_CLASS( ForeachAst )
353
struct rangeValues { int start, stop, step; };
354
CMAKE_ADD_AST_MEMBER( QString, loopVar )
355
CMAKE_ADD_AST_MEMBER( rangeValues, ranges )
356
CMAKE_ADD_AST_MEMBER( QStringList, arguments )
357
CMAKE_ADD_AST_MEMBER( bool, range )
358
CMAKE_END_AST_CLASS( ForeachAst )
361
CMAKE_BEGIN_AST_CLASS( GetCMakePropertyAst )
362
enum PropertyType { Variables, CacheVariables, Commands, Macros };
363
CMAKE_ADD_AST_MEMBER( PropertyType, type )
364
CMAKE_ADD_AST_MEMBER( QString, variableName )
365
CMAKE_END_AST_CLASS( GetCMakePropertyAst )
368
CMAKE_BEGIN_AST_CLASS( SetPropertyAst )
369
CMAKE_ADD_AST_MEMBER( PropertyType, type )
370
CMAKE_ADD_AST_MEMBER( bool, append )
371
CMAKE_ADD_AST_MEMBER( QStringList, args )
372
CMAKE_ADD_AST_MEMBER( QString, name )
373
CMAKE_ADD_AST_MEMBER( QStringList, values )
374
CMAKE_END_AST_CLASS( SetPropertyAst )
377
CMAKE_BEGIN_AST_CLASS( GetPropertyAst )
378
CMAKE_ADD_AST_MEMBER( PropertyType, type )
379
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
380
CMAKE_ADD_AST_MEMBER( QString, typeName )
381
CMAKE_ADD_AST_MEMBER( QString, name )
383
enum Behaviour { None, Set, Defined, BriefDocs, FullDocs };
384
CMAKE_ADD_AST_MEMBER( Behaviour, behaviour )
385
CMAKE_END_AST_CLASS( GetPropertyAst )
388
CMAKE_BEGIN_AST_CLASS( GetDirPropertyAst )
389
CMAKE_ADD_AST_MEMBER( QString, propName )
390
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
391
CMAKE_ADD_AST_MEMBER( QString, directory )
392
CMAKE_END_AST_CLASS( GetDirPropertyAst )
395
CMAKE_BEGIN_AST_CLASS( GetFilenameComponentAst )
396
enum ComponentType { Path, Absolute, Name, Ext, NameWe, Program };
397
CMAKE_ADD_AST_MEMBER( QString, variableName )
398
CMAKE_ADD_AST_MEMBER( QString, fileName )
399
CMAKE_ADD_AST_MEMBER( ComponentType, type )
400
CMAKE_ADD_AST_MEMBER( QStringList, programArgs )
401
CMAKE_ADD_AST_MEMBER( bool, cache )
402
CMAKE_END_AST_CLASS( GetFilenameComponentAst )
405
CMAKE_BEGIN_AST_CLASS( GetSourceFilePropAst )
406
CMAKE_ADD_AST_MEMBER( QString, variableName )
407
CMAKE_ADD_AST_MEMBER( QString, filename )
408
CMAKE_ADD_AST_MEMBER( QString, property )
409
CMAKE_END_AST_CLASS( GetSourceFilePropAst )
412
CMAKE_BEGIN_AST_CLASS( GetTargetPropAst )
413
CMAKE_ADD_AST_MEMBER( QString, variableName )
414
CMAKE_ADD_AST_MEMBER( QString, target )
415
CMAKE_ADD_AST_MEMBER( QString, property )
416
CMAKE_END_AST_CLASS( GetTargetPropAst )
419
CMAKE_BEGIN_AST_CLASS( GetTestPropAst )
420
CMAKE_ADD_AST_MEMBER( QString, test )
421
CMAKE_ADD_AST_MEMBER( QString, variableName )
422
CMAKE_ADD_AST_MEMBER( QString, property )
423
CMAKE_END_AST_CLASS( GetTestPropAst )
426
CMAKE_BEGIN_AST_CLASS( IfAst )
427
CMAKE_ADD_AST_MEMBER( QStringList, condition )
428
CMAKE_ADD_AST_MEMBER( QString, kind )
429
CMAKE_END_AST_CLASS( IfAst )
432
CMAKE_BEGIN_AST_CLASS( IncludeAst )
433
CMAKE_ADD_AST_MEMBER( QString, includeFile )
434
CMAKE_ADD_AST_MEMBER( bool, optional )
435
CMAKE_ADD_AST_MEMBER( QString, resultVariable )
436
CMAKE_END_AST_CLASS( IncludeAst )
439
CMAKE_BEGIN_AST_CLASS( IncludeDirectoriesAst )
440
enum IncludeType { Default=0, After, Before };
441
CMAKE_ADD_AST_MEMBER( IncludeType, includeType )
442
CMAKE_ADD_AST_MEMBER( bool, isSystem )
443
CMAKE_ADD_AST_MEMBER( QStringList, includedDirectories )
444
CMAKE_END_AST_CLASS( IncludeDirectoriesAst )
447
CMAKE_BEGIN_AST_CLASS( IncludeExternalMsProjectAst )
448
CMAKE_END_AST_CLASS( IncludeExternalMsProjectAst )
451
CMAKE_BEGIN_AST_CLASS( IncludeRegularExpressionAst )
452
CMAKE_ADD_AST_MEMBER( QString, match )
453
CMAKE_ADD_AST_MEMBER( QString, complain )
454
CMAKE_END_AST_CLASS( IncludeRegularExpressionAst )
457
CMAKE_BEGIN_AST_CLASS( InstallAst )
458
struct InstallTargetForm { //Targets
463
QString configuration;
468
struct InstallFileForm {
473
CMAKE_ADD_AST_MEMBER( QList<InstallTargetForm>, targets )
474
CMAKE_END_AST_CLASS( InstallAst )
477
CMAKE_BEGIN_AST_CLASS( InstallFilesAst )
478
CMAKE_MARK_AS_DEPRECATED()
479
CMAKE_ADD_AST_MEMBER( QString, directory )
480
CMAKE_ADD_AST_MEMBER( QString, extension )
481
CMAKE_ADD_AST_MEMBER( QStringList, files )
482
CMAKE_ADD_AST_MEMBER( QString, regex )
483
CMAKE_END_AST_CLASS( InstallFilesAst )
486
CMAKE_BEGIN_AST_CLASS( InstallProgramsAst )
487
CMAKE_MARK_AS_DEPRECATED()
488
CMAKE_ADD_AST_MEMBER( QString, directory )
489
CMAKE_ADD_AST_MEMBER( QStringList, files )
490
CMAKE_ADD_AST_MEMBER( QString, regex )
491
CMAKE_END_AST_CLASS( InstallProgramsAst )
494
CMAKE_BEGIN_AST_CLASS( InstallTargetsAst )
495
CMAKE_MARK_AS_DEPRECATED()
496
CMAKE_ADD_AST_MEMBER( QString, directory )
497
CMAKE_ADD_AST_MEMBER( QStringList, targets )
498
CMAKE_ADD_AST_MEMBER( QString, runtimeDir )
499
CMAKE_END_AST_CLASS( InstallTargetsAst )
502
CMAKE_BEGIN_AST_CLASS( LinkDirectoriesAst )
503
CMAKE_ADD_AST_MEMBER( QStringList, directories )
504
CMAKE_END_AST_CLASS( LinkDirectoriesAst )
507
CMAKE_BEGIN_AST_CLASS( LinkLibrariesAst )
508
CMAKE_MARK_AS_DEPRECATED()
509
enum BuildType { Optimized, Debug, None };
510
typedef QPair<QString, BuildType> LibraryType;
511
CMAKE_ADD_AST_MEMBER( QList<LibraryType>, libraries )
512
CMAKE_END_AST_CLASS( LinkLibrariesAst )
515
CMAKE_BEGIN_AST_CLASS( ListAst )
516
enum ListType { Length, Get, Append, Find, Insert, RemoveItem, RemoveAt, Sort, Reverse };
517
CMAKE_ADD_AST_MEMBER( ListType, type )
518
CMAKE_ADD_AST_MEMBER( QString, list )
519
CMAKE_ADD_AST_MEMBER( QString, output )
520
CMAKE_ADD_AST_MEMBER( QList<int>, index )
521
CMAKE_ADD_AST_MEMBER( QStringList, elements )
522
CMAKE_END_AST_CLASS( ListAst )
525
CMAKE_BEGIN_AST_CLASS( LoadCacheAst )
526
typedef QPair<QString, QString> PrefixEntry;
527
CMAKE_ADD_AST_MEMBER( QString, cachePath )
528
CMAKE_ADD_AST_MEMBER( PrefixEntry, prefixes )
530
CMAKE_ADD_AST_MEMBER( QStringList, exclude )
531
CMAKE_ADD_AST_MEMBER( QStringList, includeInternals )
532
CMAKE_END_AST_CLASS( LoadCacheAst )
535
CMAKE_BEGIN_AST_CLASS( LoadCommandAst )
536
CMAKE_ADD_AST_MEMBER( QString, cmdName )
537
CMAKE_ADD_AST_MEMBER( QStringList, location )
538
CMAKE_END_AST_CLASS( LoadCommandAst )
541
CMAKE_BEGIN_AST_CLASS( MacroAst )
542
CMAKE_ADD_AST_MEMBER( QString, macroName )
543
CMAKE_ADD_AST_MEMBER( QStringList, knownArgs )
544
CMAKE_END_AST_CLASS( MacroAst )
547
CMAKE_BEGIN_AST_CLASS( MakeDirectoryAst )
548
CMAKE_MARK_AS_DEPRECATED()
549
CMAKE_ADD_AST_MEMBER( QString, directory )
550
CMAKE_END_AST_CLASS( MakeDirectoryAst )
553
CMAKE_BEGIN_AST_CLASS( MarkAsAdvancedAst )
554
CMAKE_ADD_AST_MEMBER( QStringList, advancedVars )
555
CMAKE_ADD_AST_MEMBER( bool, isClear )
556
CMAKE_ADD_AST_MEMBER( bool, isForce )
557
CMAKE_END_AST_CLASS( MarkAsAdvancedAst )
560
CMAKE_BEGIN_AST_CLASS( MathAst )
561
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
562
CMAKE_ADD_AST_MEMBER( QString, expression )
563
CMAKE_END_AST_CLASS( MathAst )
566
CMAKE_BEGIN_AST_CLASS( MessageAst )
567
enum MessageType { SendError, Status, FatalError };
568
CMAKE_ADD_AST_MEMBER( MessageType, type )
569
CMAKE_ADD_AST_MEMBER( QStringList, message )
570
CMAKE_END_AST_CLASS( MessageAst )
573
CMAKE_BEGIN_AST_CLASS( OptionAst )
574
CMAKE_ADD_AST_MEMBER( QString, variableName )
575
CMAKE_ADD_AST_MEMBER( QString, description )
576
CMAKE_ADD_AST_MEMBER( QString, defaultValue )
577
CMAKE_END_AST_CLASS( OptionAst )
580
CMAKE_BEGIN_AST_CLASS( OutputRequiredFilesAst )
581
CMAKE_ADD_AST_MEMBER( QString, srcFile )
582
CMAKE_ADD_AST_MEMBER( QString, outputFile )
583
CMAKE_END_AST_CLASS( OutputRequiredFilesAst )
586
CMAKE_BEGIN_AST_CLASS( ProjectAst )
587
CMAKE_ADD_AST_MEMBER( QString, projectName )
588
CMAKE_ADD_AST_MEMBER( bool, useCpp )
589
CMAKE_ADD_AST_MEMBER( bool, useC )
590
CMAKE_ADD_AST_MEMBER( bool, useJava )
591
CMAKE_END_AST_CLASS( ProjectAst )
594
CMAKE_BEGIN_AST_CLASS( QtWrapCppAst )
595
CMAKE_END_AST_CLASS( QtWrapCppAst )
598
CMAKE_BEGIN_AST_CLASS( QtWrapUiAst )
599
CMAKE_END_AST_CLASS( QtWrapUiAst )
602
CMAKE_BEGIN_AST_CLASS( RemoveAst )
603
CMAKE_MARK_AS_DEPRECATED()
604
CMAKE_ADD_AST_MEMBER( QString, variableName )
605
CMAKE_ADD_AST_MEMBER( QStringList, values )
606
CMAKE_END_AST_CLASS( RemoveAst )
609
CMAKE_BEGIN_AST_CLASS( RemoveDefinitionsAst )
610
CMAKE_ADD_AST_MEMBER( QStringList, definitions )
611
CMAKE_END_AST_CLASS( RemoveDefinitionsAst )
614
CMAKE_BEGIN_AST_CLASS( SeparateArgumentsAst )
615
CMAKE_ADD_AST_MEMBER( QString, variableName )
616
CMAKE_END_AST_CLASS( SeparateArgumentsAst )
619
CMAKE_BEGIN_AST_CLASS( SetAst )
620
CMAKE_ADD_AST_MEMBER( QString, variableName )
621
CMAKE_ADD_AST_MEMBER( QStringList, values )
622
CMAKE_ADD_AST_MEMBER( bool, storeInCache )
623
CMAKE_ADD_AST_MEMBER( bool, forceStoring )
624
CMAKE_ADD_AST_MEMBER( QString, entryType )
625
CMAKE_ADD_AST_MEMBER( QString, documentation )
626
CMAKE_ADD_AST_MEMBER( bool, parentScope )
627
CMAKE_END_AST_CLASS( SetAst )
630
CMAKE_BEGIN_AST_CLASS( SetDirectoryPropsAst )
631
typedef QPair<QString, QString> PropPair;
632
CMAKE_ADD_AST_MEMBER( QList<PropPair>, properties )
633
CMAKE_END_AST_CLASS( SetDirectoryPropsAst )
636
CMAKE_BEGIN_AST_CLASS( SetSourceFilesPropsAst )
637
typedef QPair<QString, QString> PropPair;
638
CMAKE_ADD_AST_MEMBER( QStringList, files )
639
CMAKE_ADD_AST_MEMBER( QList<PropPair>, properties )
640
CMAKE_END_AST_CLASS( SetSourceFilesPropsAst )
643
CMAKE_BEGIN_AST_CLASS( SetTargetPropsAst )
644
typedef QPair<QString, QString> PropPair;
645
CMAKE_ADD_AST_MEMBER( QStringList, targets )
646
CMAKE_ADD_AST_MEMBER( QList<PropPair>, properties )
647
CMAKE_END_AST_CLASS( SetTargetPropsAst )
650
CMAKE_BEGIN_AST_CLASS( SetTestsPropsAst )
651
typedef QPair<QString, QString> PropPair;
652
CMAKE_ADD_AST_MEMBER( QStringList, tests )
653
CMAKE_ADD_AST_MEMBER( QList<PropPair>, properties )
654
CMAKE_END_AST_CLASS( SetTestsPropsAst )
657
CMAKE_BEGIN_AST_CLASS( SiteNameAst )
658
CMAKE_ADD_AST_MEMBER( QString, variableName )
659
CMAKE_END_AST_CLASS( SiteNameAst )
662
CMAKE_BEGIN_AST_CLASS( SourceGroupAst )
663
CMAKE_ADD_AST_MEMBER( QString, name )
664
CMAKE_ADD_AST_MEMBER( QString, regex )
665
CMAKE_ADD_AST_MEMBER( QStringList, files )
666
CMAKE_END_AST_CLASS( SourceGroupAst )
669
CMAKE_BEGIN_AST_CLASS( StringAst )
670
enum StringAstType { Regex, Replace, Compare, Ascii, Configure,
671
ToUpper, ToLower, Length, Substring, Strip, Random };
672
enum CommandType { Match, MatchAll, RegexReplace, Equal, NotEqual, Less, Greater };
673
CMAKE_ADD_AST_MEMBER( StringAstType, type )
674
CMAKE_ADD_AST_MEMBER( CommandType, cmdType )
675
CMAKE_ADD_AST_MEMBER( QString, outputVariable )
676
CMAKE_ADD_AST_MEMBER( QString, regex )
677
CMAKE_ADD_AST_MEMBER( QString, string )
678
CMAKE_ADD_AST_MEMBER( QString, replace )
679
CMAKE_ADD_AST_MEMBER( QStringList, input )
680
CMAKE_ADD_AST_MEMBER( bool, only )
681
CMAKE_ADD_AST_MEMBER( bool, escapeQuotes )
682
CMAKE_ADD_AST_MEMBER( int, begin )
683
CMAKE_ADD_AST_MEMBER( int, length )
684
CMAKE_END_AST_CLASS( StringAst )
687
CMAKE_BEGIN_AST_CLASS( SubdirDependsAst )
688
CMAKE_MARK_AS_DEPRECATED()
689
CMAKE_ADD_AST_MEMBER( QString, subdir )
690
CMAKE_ADD_AST_MEMBER( QStringList, directories )
691
CMAKE_END_AST_CLASS( SubdirDependsAst )
694
CMAKE_BEGIN_AST_CLASS( SubdirsAst )
695
CMAKE_MARK_AS_DEPRECATED()
696
CMAKE_ADD_AST_MEMBER( QStringList, directories )
697
CMAKE_ADD_AST_MEMBER( QStringList, exluceFromAll )
698
CMAKE_ADD_AST_MEMBER( bool, preorder )
699
CMAKE_END_AST_CLASS( SubdirsAst )
702
CMAKE_BEGIN_AST_CLASS( TargetLinkLibrariesAst )
703
CMAKE_ADD_AST_MEMBER( QString, target )
704
CMAKE_ADD_AST_MEMBER( QStringList, otherLibs )
705
CMAKE_ADD_AST_MEMBER( QStringList, debugLibs )
706
CMAKE_ADD_AST_MEMBER( QStringList, optimizedLibs )
707
CMAKE_END_AST_CLASS( TargetLinkLibrariesAst )
710
CMAKE_BEGIN_AST_CLASS( TryCompileAst )
711
CMAKE_ADD_AST_MEMBER( QString, resultName )
712
CMAKE_ADD_AST_MEMBER( QString, binDir )
713
CMAKE_ADD_AST_MEMBER( QString, source )
714
CMAKE_ADD_AST_MEMBER( QString, projectName )
715
CMAKE_ADD_AST_MEMBER( QString, targetName )
716
CMAKE_ADD_AST_MEMBER( QStringList, cmakeFlags )
717
CMAKE_ADD_AST_MEMBER( QStringList, compileDefinitions )
718
CMAKE_ADD_AST_MEMBER( QString, outputName )
719
CMAKE_ADD_AST_MEMBER( QString, copyFile )
720
CMAKE_END_AST_CLASS( TryCompileAst )
723
CMAKE_BEGIN_AST_CLASS( TryRunAst )
724
CMAKE_ADD_AST_MEMBER( QString, runResultVar )
725
CMAKE_ADD_AST_MEMBER( QString, compileResultVar )
726
CMAKE_ADD_AST_MEMBER( QString, binDir )
727
CMAKE_ADD_AST_MEMBER( QString, srcFile )
728
CMAKE_ADD_AST_MEMBER( QStringList, cmakeFlags )
729
CMAKE_ADD_AST_MEMBER( QStringList, compileDefs )
730
CMAKE_ADD_AST_MEMBER( QString, outputVar )
731
CMAKE_ADD_AST_MEMBER( QStringList, args )
732
CMAKE_END_AST_CLASS( TryRunAst )
735
CMAKE_BEGIN_AST_CLASS( UseMangledMesaAst )
736
CMAKE_ADD_AST_MEMBER( QString, pathToMesa )
737
CMAKE_ADD_AST_MEMBER( QString, outputDir )
738
CMAKE_END_AST_CLASS( UseMangledMesaAst )
741
CMAKE_BEGIN_AST_CLASS( UtilitySourceAst )
742
CMAKE_ADD_AST_MEMBER( QString, cacheEntry )
743
CMAKE_ADD_AST_MEMBER( QString, executableName )
744
CMAKE_ADD_AST_MEMBER( QString, pathToSource )
745
CMAKE_ADD_AST_MEMBER( QStringList, fileList )
746
CMAKE_END_AST_CLASS( UtilitySourceAst )
749
CMAKE_BEGIN_AST_CLASS( VariableRequiresAst )
750
CMAKE_ADD_AST_MEMBER( QString, testVariable )
751
CMAKE_ADD_AST_MEMBER( QString, resultVariable )
752
CMAKE_ADD_AST_MEMBER( QStringList, requiredVariables )
753
CMAKE_END_AST_CLASS( VariableRequiresAst )
756
CMAKE_BEGIN_AST_CLASS( VtkMakeInstantiatorAst )
757
CMAKE_END_AST_CLASS( VtkMakeInstantiatorAst )
760
CMAKE_BEGIN_AST_CLASS( VtkWrapJavaAst )
761
CMAKE_END_AST_CLASS( VtkWrapJavaAst )
764
CMAKE_BEGIN_AST_CLASS( VtkWrapPythonAst )
765
CMAKE_END_AST_CLASS( VtkWrapPythonAst )
768
CMAKE_BEGIN_AST_CLASS( VtkWrapTclAst )
769
CMAKE_END_AST_CLASS( VtkWrapTclAst )
772
CMAKE_BEGIN_AST_CLASS( WhileAst )
773
CMAKE_ADD_AST_MEMBER( QStringList, condition )
774
CMAKE_END_AST_CLASS( WhileAst )
777
CMAKE_BEGIN_AST_CLASS( WriteFileAst )
778
CMAKE_MARK_AS_DEPRECATED()
779
CMAKE_ADD_AST_MEMBER( QString, filename )
780
CMAKE_ADD_AST_MEMBER( QString, message )
781
CMAKE_ADD_AST_MEMBER( bool, append )
782
CMAKE_END_AST_CLASS( WriteFileAst )
784
CMAKE_BEGIN_AST_CLASS( CustomInvokationAst )
785
CMAKE_ADD_AST_MEMBER( CMakeFunctionDesc, function )
786
CMAKE_ADD_AST_MEMBER( QList<CMakeFunctionArgument>, arguments )
787
CMAKE_END_AST_CLASS( CustomInvokationAst )
790
CMAKE_BEGIN_AST_CLASS( BreakAst )
791
CMAKE_END_AST_CLASS( BreakAst )
793
CMAKE_BEGIN_AST_CLASS( CMakePolicyAst )
794
enum Action { Version, Set, Push, Pop };
795
CMAKE_ADD_AST_MEMBER( Action, action )
797
CMAKE_ADD_AST_MEMBER( QList<int>, version )
800
CMAKE_ADD_AST_MEMBER( int, policyNum )
801
CMAKE_ADD_AST_MEMBER( bool, isNew )
802
CMAKE_END_AST_CLASS( CMakePolicyAst )
805
CMAKE_BEGIN_AST_CLASS( ExportAst )
806
CMAKE_ADD_AST_MEMBER( QStringList, targets )
807
CMAKE_ADD_AST_MEMBER( QString, targetNamespace )
808
CMAKE_ADD_AST_MEMBER( bool, append )
809
CMAKE_ADD_AST_MEMBER( QString, filename )
810
CMAKE_END_AST_CLASS( ExportAst )
812
CMAKE_BEGIN_AST_CLASS( FunctionAst )
813
CMAKE_ADD_AST_MEMBER( QString, name )
814
CMAKE_ADD_AST_MEMBER( QStringList, knownArgs )
815
CMAKE_END_AST_CLASS( FunctionAst )
817
CMAKE_BEGIN_AST_CLASS( ReturnAst )
818
CMAKE_END_AST_CLASS( ReturnAst )