Warning: That file was not part of the compilation database. It may have many parsing errors.
1 | /**************************************************************************** |
---|---|
2 | ** |
3 | ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). |
4 | ** Contact: http://www.qt-project.org/legal |
5 | ** |
6 | ** This file is part of the qmake application of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:LGPL$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and Digia. For licensing terms and |
14 | ** conditions see http://qt.digia.com/licensing. For further information |
15 | ** use the contact form at http://qt.digia.com/contact-us. |
16 | ** |
17 | ** GNU Lesser General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser |
19 | ** General Public License version 2.1 as published by the Free Software |
20 | ** Foundation and appearing in the file LICENSE.LGPL included in the |
21 | ** packaging of this file. Please review the following information to |
22 | ** ensure the GNU Lesser General Public License version 2.1 requirements |
23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
24 | ** |
25 | ** In addition, as a special exception, Digia gives you certain additional |
26 | ** rights. These rights are described in the Digia Qt LGPL Exception |
27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
28 | ** |
29 | ** GNU General Public License Usage |
30 | ** Alternatively, this file may be used under the terms of the GNU |
31 | ** General Public License version 3.0 as published by the Free Software |
32 | ** Foundation and appearing in the file LICENSE.GPL included in the |
33 | ** packaging of this file. Please review the following information to |
34 | ** ensure the GNU General Public License version 3.0 requirements will be |
35 | ** met: http://www.gnu.org/copyleft/gpl.html. |
36 | ** |
37 | ** |
38 | ** $QT_END_LICENSE$ |
39 | ** |
40 | ****************************************************************************/ |
41 | |
42 | #ifndef OPTION_H |
43 | #define OPTION_H |
44 | |
45 | #include "project.h" |
46 | #include <qstring.h> |
47 | #include <qstringlist.h> |
48 | #include <qfile.h> |
49 | |
50 | QT_BEGIN_NAMESPACE |
51 | |
52 | #define QMAKE_VERSION_MAJOR 2 |
53 | #define QMAKE_VERSION_MINOR 1 |
54 | #define QMAKE_VERSION_PATCH 0 |
55 | const char *qmake_version(); |
56 | |
57 | QString qmake_getpwd(); |
58 | bool qmake_setpwd(const QString &p); |
59 | |
60 | #define debug_msg if(Option::debug_level) debug_msg_internal |
61 | void debug_msg_internal(int level, const char *fmt, ...); //don't call directly, use debug_msg |
62 | enum QMakeWarn { |
63 | WarnNone = 0x00, |
64 | WarnParser = 0x01, |
65 | WarnLogic = 0x02, |
66 | WarnDeprecated = 0x04, |
67 | WarnAll = 0xFF |
68 | }; |
69 | void warn_msg(QMakeWarn t, const char *fmt, ...); |
70 | |
71 | struct Option |
72 | { |
73 | //simply global convenience |
74 | static QString js_ext; |
75 | static QString libtool_ext; |
76 | static QString pkgcfg_ext; |
77 | static QString prf_ext; |
78 | static QString prl_ext; |
79 | static QString ui_ext; |
80 | static QStringList h_ext; |
81 | static QStringList cpp_ext; |
82 | static QStringList c_ext; |
83 | static QString h_moc_ext; |
84 | static QString cpp_moc_ext; |
85 | static QString obj_ext; |
86 | static QString lex_ext; |
87 | static QString yacc_ext; |
88 | static QString h_moc_mod; |
89 | static QString cpp_moc_mod; |
90 | static QString lex_mod; |
91 | static QString yacc_mod; |
92 | static QString dir_sep; |
93 | static QString dirlist_sep; |
94 | static QString sysenv_mod; |
95 | static QString pro_ext; |
96 | static QString mmp_ext; |
97 | static QString res_ext; |
98 | static char field_sep; |
99 | static const char *application_argv0; |
100 | |
101 | enum CmdLineFlags { |
102 | QMAKE_CMDLINE_SUCCESS = 0x00, |
103 | QMAKE_CMDLINE_SHOW_USAGE = 0x01, |
104 | QMAKE_CMDLINE_BAIL = 0x02, |
105 | QMAKE_CMDLINE_ERROR = 0x04 |
106 | }; |
107 | |
108 | //both of these must be called.. |
109 | static int init(int argc=0, char **argv=0); //parse cmdline |
110 | static void applyHostMode(); |
111 | static bool postProcessProject(QMakeProject *); |
112 | |
113 | enum StringFixFlags { |
114 | FixNone = 0x00, |
115 | FixEnvVars = 0x01, |
116 | FixPathCanonicalize = 0x02, |
117 | FixPathToLocalSeparators = 0x04, |
118 | FixPathToTargetSeparators = 0x08 |
119 | }; |
120 | static QString fixString(QString string, uchar flags); |
121 | |
122 | //and convenience functions |
123 | inline static QString fixPathToLocalOS(const QString &in, bool fix_env=true, bool canonical=true) |
124 | { |
125 | uchar flags = FixPathToLocalSeparators; |
126 | if(fix_env) |
127 | flags |= FixEnvVars; |
128 | if(canonical) |
129 | flags |= FixPathCanonicalize; |
130 | return fixString(in, flags); |
131 | } |
132 | inline static QString fixPathToTargetOS(const QString &in, bool fix_env=true, bool canonical=true) |
133 | { |
134 | uchar flags = FixPathToTargetSeparators; |
135 | if(fix_env) |
136 | flags |= FixEnvVars; |
137 | if(canonical) |
138 | flags |= FixPathCanonicalize; |
139 | return fixString(in, flags); |
140 | } |
141 | |
142 | inline static bool hasFileExtension(const QString &str, const QStringList &extensions) |
143 | { |
144 | foreach (const QString &ext, extensions) |
145 | if (str.endsWith(ext)) |
146 | return true; |
147 | return false; |
148 | } |
149 | |
150 | //global qmake mode, can only be in one mode per invocation! |
151 | enum QMAKE_MODE { QMAKE_GENERATE_NOTHING, |
152 | QMAKE_GENERATE_PROJECT, QMAKE_GENERATE_MAKEFILE, QMAKE_GENERATE_PRL, |
153 | QMAKE_SET_PROPERTY, QMAKE_UNSET_PROPERTY, QMAKE_QUERY_PROPERTY }; |
154 | static QMAKE_MODE qmake_mode; |
155 | |
156 | //all modes |
157 | static QString qmake_abslocation; |
158 | static QFile output; |
159 | static QString output_dir; |
160 | static int debug_level; |
161 | static int warn_level; |
162 | enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO }; |
163 | static QMAKE_RECURSIVE recursive; |
164 | static QStringList before_user_vars, after_user_vars, user_configs, after_user_configs; |
165 | enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE }; |
166 | static HOST_MODE host_mode; |
167 | enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE, |
168 | TARG_SYMBIAN_MODE, TARG_INTEGRITY_MODE }; |
169 | static TARG_MODE target_mode; |
170 | static bool target_mode_overridden; |
171 | static QString user_template, user_template_prefix; |
172 | static QStringList shellPath; |
173 | |
174 | //QMAKE_*_PROPERTY options |
175 | struct prop { |
176 | static QStringList properties; |
177 | }; |
178 | |
179 | //QMAKE_GENERATE_PROJECT options |
180 | struct projfile { |
181 | static bool do_pwd; |
182 | static QStringList project_dirs; |
183 | }; |
184 | |
185 | //QMAKE_GENERATE_MAKEFILE options |
186 | struct mkfile { |
187 | static QString qmakespec; |
188 | static bool do_cache; |
189 | static bool do_deps; |
190 | static bool do_mocs; |
191 | static bool do_dep_heuristics; |
192 | static bool do_preprocess; |
193 | static bool do_stub_makefile; |
194 | static QString cachefile; |
195 | static int cachefile_depth; |
196 | static QStringList project_files; |
197 | static QString qmakespec_commandline; |
198 | }; |
199 | |
200 | private: |
201 | static int parseCommandLine(int, char **, int=0); |
202 | }; |
203 | |
204 | inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); } |
205 | inline QStringList splitPathList(const QString &paths) { return paths.split(Option::dirlist_sep); } |
206 | |
207 | // this is a stripped down version of the one found in QtCore |
208 | class QLibraryInfo |
209 | { |
210 | public: |
211 | enum LibraryLocation |
212 | { |
213 | PrefixPath, |
214 | DocumentationPath, |
215 | HeadersPath, |
216 | LibrariesPath, |
217 | BinariesPath, |
218 | PluginsPath, |
219 | DataPath, |
220 | TranslationsPath, |
221 | SettingsPath, |
222 | DemosPath, |
223 | ExamplesPath, |
224 | ImportsPath |
225 | }; |
226 | static QString location(LibraryLocation); |
227 | }; |
228 | |
229 | QT_END_NAMESPACE |
230 | |
231 | #endif // OPTION_H |
232 |
Warning: That file was not part of the compilation database. It may have many parsing errors.