-rw-r--r-- | qmake/option.cpp | 101 |
1 files changed, 71 insertions, 30 deletions
diff --git a/qmake/option.cpp b/qmake/option.cpp index 8b7e5e8..e6928fa 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp | |||
@@ -1,11 +1,9 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** $Id$ | 2 | ** |
3 | ** | 3 | ** |
4 | ** Definition of ________ class. | 4 | ** Implementation of Option class. |
5 | ** | 5 | ** |
6 | ** Created : 970521 | 6 | ** Copyright (C) 1992-2003 Trolltech AS. All rights reserved. |
7 | ** | 7 | ** |
8 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. | 8 | ** This file is part of qmake. |
9 | ** | ||
10 | ** This file is part of the network module of the Qt GUI Toolkit. | ||
11 | ** | 9 | ** |
@@ -46,5 +44,8 @@ QString Option::prf_ext; | |||
46 | QString Option::prl_ext; | 44 | QString Option::prl_ext; |
45 | QString Option::libtool_ext; | ||
46 | QString Option::pkgcfg_ext; | ||
47 | QString Option::ui_ext; | 47 | QString Option::ui_ext; |
48 | QStringList Option::h_ext; | 48 | QStringList Option::h_ext; |
49 | QString Option::moc_ext; | 49 | QString Option::cpp_moc_ext; |
50 | QString Option::h_moc_ext; | ||
50 | QStringList Option::cpp_ext; | 51 | QStringList Option::cpp_ext; |
@@ -54,3 +55,4 @@ QString Option::yacc_ext; | |||
54 | QString Option::dir_sep; | 55 | QString Option::dir_sep; |
55 | QString Option::moc_mod; | 56 | QString Option::h_moc_mod; |
57 | QString Option::cpp_moc_mod; | ||
56 | QString Option::yacc_mod; | 58 | QString Option::yacc_mod; |
@@ -82,2 +84,5 @@ Option::TARG_MODE Option::target_mode = Option::TARG_UNIX_MODE; | |||
82 | 84 | ||
85 | //QMAKE_*_PROPERTY stuff | ||
86 | QStringList Option::prop::properties; | ||
87 | |||
83 | //QMAKE_GENERATE_PROJECT stuff | 88 | //QMAKE_GENERATE_PROJECT stuff |
@@ -106,2 +111,4 @@ static Option::QMAKE_MODE default_mode(QString progname) | |||
106 | return Option::QMAKE_GENERATE_PROJECT; | 111 | return Option::QMAKE_GENERATE_PROJECT; |
112 | else if(progname == "qt-config") | ||
113 | return Option::QMAKE_QUERY_PROPERTY; | ||
107 | return Option::QMAKE_GENERATE_MAKEFILE; | 114 | return Option::QMAKE_GENERATE_MAKEFILE; |
@@ -163,3 +170,8 @@ bool usage(const char *a0) | |||
163 | 170 | ||
164 | bool | 171 | enum { |
172 | QMAKE_CMDLINE_SUCCESS, | ||
173 | QMAKE_CMDLINE_SHOW_USAGE, | ||
174 | QMAKE_CMDLINE_BAIL | ||
175 | }; | ||
176 | int | ||
165 | Option::internalParseCommandLine(int argc, char **argv, int skip) | 177 | Option::internalParseCommandLine(int argc, char **argv, int skip) |
@@ -180,2 +192,6 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
180 | Option::qmake_mode = Option::QMAKE_GENERATE_PRL; | 192 | Option::qmake_mode = Option::QMAKE_GENERATE_PRL; |
193 | } else if(opt == "set") { | ||
194 | Option::qmake_mode = Option::QMAKE_SET_PROPERTY; | ||
195 | } else if(opt == "query") { | ||
196 | Option::qmake_mode = Option::QMAKE_QUERY_PROPERTY; | ||
181 | } else if(opt == "makefile") { | 197 | } else if(opt == "makefile") { |
@@ -210,5 +226,5 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
210 | fprintf(stderr, "Qmake is free software from Trolltech AS.\n"); | 226 | fprintf(stderr, "Qmake is free software from Trolltech AS.\n"); |
211 | return FALSE; | 227 | return QMAKE_CMDLINE_BAIL; |
212 | } else if(opt == "h" || opt == "help") { | 228 | } else if(opt == "h" || opt == "help") { |
213 | return FALSE; | 229 | return QMAKE_CMDLINE_SHOW_USAGE; |
214 | } else if(opt == "Wall") { | 230 | } else if(opt == "Wall") { |
@@ -241,3 +257,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
241 | fprintf(stderr, "***Unknown option -%s\n", opt.latin1()); | 257 | fprintf(stderr, "***Unknown option -%s\n", opt.latin1()); |
242 | return usage(argv[0]); | 258 | return QMAKE_CMDLINE_SHOW_USAGE; |
243 | } | 259 | } |
@@ -252,3 +268,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
252 | fprintf(stderr, "***Unknown option -%s\n", opt.latin1()); | 268 | fprintf(stderr, "***Unknown option -%s\n", opt.latin1()); |
253 | return FALSE; | 269 | return QMAKE_CMDLINE_SHOW_USAGE; |
254 | } | 270 | } |
@@ -264,10 +280,20 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
264 | } else { | 280 | } else { |
265 | QFileInfo fi(arg); | 281 | bool handled = TRUE; |
266 | if(!fi.convertToAbs()) //strange | 282 | if(Option::qmake_mode == Option::QMAKE_QUERY_PROPERTY || |
267 | arg = fi.filePath(); | 283 | Option::qmake_mode == Option::QMAKE_SET_PROPERTY) { |
268 | if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || | 284 | Option::prop::properties.append(arg); |
269 | Option::qmake_mode == Option::QMAKE_GENERATE_PRL) | 285 | } else { |
270 | Option::mkfile::project_files.append(arg); | 286 | QFileInfo fi(arg); |
271 | else | 287 | if(!fi.convertToAbs()) //strange |
272 | Option::projfile::project_dirs.append(arg); | 288 | arg = fi.filePath(); |
289 | if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || | ||
290 | Option::qmake_mode == Option::QMAKE_GENERATE_PRL) | ||
291 | Option::mkfile::project_files.append(arg); | ||
292 | else if(Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT) | ||
293 | Option::projfile::project_dirs.append(arg); | ||
294 | else | ||
295 | handled = FALSE; | ||
296 | } | ||
297 | if(!handled) | ||
298 | return QMAKE_CMDLINE_SHOW_USAGE; | ||
273 | } | 299 | } |
@@ -275,3 +301,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip) | |||
275 | } | 301 | } |
276 | return TRUE; | 302 | return QMAKE_CMDLINE_SUCCESS; |
277 | } | 303 | } |
@@ -282,3 +308,4 @@ Option::parseCommandLine(int argc, char **argv) | |||
282 | { | 308 | { |
283 | Option::moc_mod = "moc_"; | 309 | Option::cpp_moc_mod = ""; |
310 | Option::h_moc_mod = "moc_"; | ||
284 | Option::lex_mod = "_lex"; | 311 | Option::lex_mod = "_lex"; |
@@ -286,2 +313,4 @@ Option::parseCommandLine(int argc, char **argv) | |||
286 | Option::prl_ext = ".prl"; | 313 | Option::prl_ext = ".prl"; |
314 | Option::libtool_ext = ".la"; | ||
315 | Option::pkgcfg_ext = ".pc"; | ||
287 | Option::prf_ext = ".prf"; | 316 | Option::prf_ext = ".prf"; |
@@ -289,3 +318,4 @@ Option::parseCommandLine(int argc, char **argv) | |||
289 | Option::h_ext << ".h" << ".hpp" << ".hh" << ".H" << ".hxx"; | 318 | Option::h_ext << ".h" << ".hpp" << ".hh" << ".H" << ".hxx"; |
290 | Option::moc_ext = ".moc"; | 319 | Option::cpp_moc_ext = ".moc"; |
320 | Option::h_moc_ext = ".cpp"; | ||
291 | Option::cpp_ext << ".cpp" << ".cc" << ".cxx" << ".C"; | 321 | Option::cpp_ext << ".cpp" << ".cc" << ".cxx" << ".C"; |
@@ -336,4 +366,7 @@ Option::parseCommandLine(int argc, char **argv) | |||
336 | } | 366 | } |
337 | if(!internalParseCommandLine(argc, argv, 1)) | 367 | { |
338 | return usage(argv[0]); | 368 | int ret = internalParseCommandLine(argc, argv, 1); |
369 | if(ret != QMAKE_CMDLINE_SUCCESS) | ||
370 | return ret == QMAKE_CMDLINE_SHOW_USAGE ? usage(argv[0]) : FALSE; | ||
371 | } | ||
339 | 372 | ||
@@ -383,2 +416,6 @@ bool Option::postProcessProject(QMakeProject *project) | |||
383 | 416 | ||
417 | if(!project->isEmpty("QMAKE_EXT_PKGCONFIG")) | ||
418 | Option::pkgcfg_ext = project->first("QMAKE_EXT_PKGCONFIG"); | ||
419 | if(!project->isEmpty("QMAKE_EXT_LIBTOOL")) | ||
420 | Option::libtool_ext = project->first("QMAKE_EXT_LIBTOOL"); | ||
384 | if(!project->isEmpty("QMAKE_EXT_PRL")) | 421 | if(!project->isEmpty("QMAKE_EXT_PRL")) |
@@ -389,4 +426,6 @@ bool Option::postProcessProject(QMakeProject *project) | |||
389 | Option::ui_ext = project->first("QMAKE_EXT_UI"); | 426 | Option::ui_ext = project->first("QMAKE_EXT_UI"); |
390 | if(!project->isEmpty("QMAKE_EXT_MOC")) | 427 | if(!project->isEmpty("QMAKE_EXT_CPP_MOC")) |
391 | Option::moc_ext = project->first("QMAKE_EXT_MOC"); | 428 | Option::cpp_moc_ext = project->first("QMAKE_EXT_CPP_MOC"); |
429 | if(!project->isEmpty("QMAKE_EXT_H_MOC")) | ||
430 | Option::h_moc_ext = project->first("QMAKE_EXT_H_MOC"); | ||
392 | if(!project->isEmpty("QMAKE_EXT_LEX")) | 431 | if(!project->isEmpty("QMAKE_EXT_LEX")) |
@@ -397,4 +436,6 @@ bool Option::postProcessProject(QMakeProject *project) | |||
397 | Option::obj_ext = project->first("QMAKE_EXT_OBJ"); | 436 | Option::obj_ext = project->first("QMAKE_EXT_OBJ"); |
398 | if(!project->isEmpty("QMAKE_MOD_MOC")) | 437 | if(!project->isEmpty("QMAKE_H_MOD_MOC")) |
399 | Option::moc_mod = project->first("QMAKE_MOD_MOC"); | 438 | Option::h_moc_mod = project->first("QMAKE_H_MOD_MOC"); |
439 | if(!project->isEmpty("QMAKE_CPP_MOD_MOC")) | ||
440 | Option::cpp_moc_mod = project->first("QMAKE_CPP_MOD_MOC"); | ||
400 | if(!project->isEmpty("QMAKE_MOD_LEX")) | 441 | if(!project->isEmpty("QMAKE_MOD_LEX")) |