summaryrefslogtreecommitdiff
path: root/qmake/option.cpp
Side-by-side diff
Diffstat (limited to 'qmake/option.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/option.cpp101
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 @@
/****************************************************************************
-** $Id$
+**
**
-** Definition of ________ class.
+** Implementation of Option class.
**
-** Created : 970521
+** Copyright (C) 1992-2003 Trolltech AS. All rights reserved.
**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the network module of the Qt GUI Toolkit.
+** This file is part of qmake.
**
@@ -46,5 +44,8 @@ QString Option::prf_ext;
QString Option::prl_ext;
+QString Option::libtool_ext;
+QString Option::pkgcfg_ext;
QString Option::ui_ext;
QStringList Option::h_ext;
-QString Option::moc_ext;
+QString Option::cpp_moc_ext;
+QString Option::h_moc_ext;
QStringList Option::cpp_ext;
@@ -54,3 +55,4 @@ QString Option::yacc_ext;
QString Option::dir_sep;
-QString Option::moc_mod;
+QString Option::h_moc_mod;
+QString Option::cpp_moc_mod;
QString Option::yacc_mod;
@@ -82,2 +84,5 @@ Option::TARG_MODE Option::target_mode = Option::TARG_UNIX_MODE;
+//QMAKE_*_PROPERTY stuff
+QStringList Option::prop::properties;
+
//QMAKE_GENERATE_PROJECT stuff
@@ -106,2 +111,4 @@ static Option::QMAKE_MODE default_mode(QString progname)
return Option::QMAKE_GENERATE_PROJECT;
+ else if(progname == "qt-config")
+ return Option::QMAKE_QUERY_PROPERTY;
return Option::QMAKE_GENERATE_MAKEFILE;
@@ -163,3 +170,8 @@ bool usage(const char *a0)
-bool
+enum {
+ QMAKE_CMDLINE_SUCCESS,
+ QMAKE_CMDLINE_SHOW_USAGE,
+ QMAKE_CMDLINE_BAIL
+};
+int
Option::internalParseCommandLine(int argc, char **argv, int skip)
@@ -180,2 +192,6 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
Option::qmake_mode = Option::QMAKE_GENERATE_PRL;
+ } else if(opt == "set") {
+ Option::qmake_mode = Option::QMAKE_SET_PROPERTY;
+ } else if(opt == "query") {
+ Option::qmake_mode = Option::QMAKE_QUERY_PROPERTY;
} else if(opt == "makefile") {
@@ -210,5 +226,5 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
fprintf(stderr, "Qmake is free software from Trolltech AS.\n");
- return FALSE;
+ return QMAKE_CMDLINE_BAIL;
} else if(opt == "h" || opt == "help") {
- return FALSE;
+ return QMAKE_CMDLINE_SHOW_USAGE;
} else if(opt == "Wall") {
@@ -241,3 +257,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
fprintf(stderr, "***Unknown option -%s\n", opt.latin1());
- return usage(argv[0]);
+ return QMAKE_CMDLINE_SHOW_USAGE;
}
@@ -252,3 +268,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
fprintf(stderr, "***Unknown option -%s\n", opt.latin1());
- return FALSE;
+ return QMAKE_CMDLINE_SHOW_USAGE;
}
@@ -264,10 +280,20 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
} else {
- QFileInfo fi(arg);
- if(!fi.convertToAbs()) //strange
- arg = fi.filePath();
- if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
- Option::qmake_mode == Option::QMAKE_GENERATE_PRL)
- Option::mkfile::project_files.append(arg);
- else
- Option::projfile::project_dirs.append(arg);
+ bool handled = TRUE;
+ if(Option::qmake_mode == Option::QMAKE_QUERY_PROPERTY ||
+ Option::qmake_mode == Option::QMAKE_SET_PROPERTY) {
+ Option::prop::properties.append(arg);
+ } else {
+ QFileInfo fi(arg);
+ if(!fi.convertToAbs()) //strange
+ arg = fi.filePath();
+ if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
+ Option::qmake_mode == Option::QMAKE_GENERATE_PRL)
+ Option::mkfile::project_files.append(arg);
+ else if(Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT)
+ Option::projfile::project_dirs.append(arg);
+ else
+ handled = FALSE;
+ }
+ if(!handled)
+ return QMAKE_CMDLINE_SHOW_USAGE;
}
@@ -275,3 +301,3 @@ Option::internalParseCommandLine(int argc, char **argv, int skip)
}
- return TRUE;
+ return QMAKE_CMDLINE_SUCCESS;
}
@@ -282,3 +308,4 @@ Option::parseCommandLine(int argc, char **argv)
{
- Option::moc_mod = "moc_";
+ Option::cpp_moc_mod = "";
+ Option::h_moc_mod = "moc_";
Option::lex_mod = "_lex";
@@ -286,2 +313,4 @@ Option::parseCommandLine(int argc, char **argv)
Option::prl_ext = ".prl";
+ Option::libtool_ext = ".la";
+ Option::pkgcfg_ext = ".pc";
Option::prf_ext = ".prf";
@@ -289,3 +318,4 @@ Option::parseCommandLine(int argc, char **argv)
Option::h_ext << ".h" << ".hpp" << ".hh" << ".H" << ".hxx";
- Option::moc_ext = ".moc";
+ Option::cpp_moc_ext = ".moc";
+ Option::h_moc_ext = ".cpp";
Option::cpp_ext << ".cpp" << ".cc" << ".cxx" << ".C";
@@ -336,4 +366,7 @@ Option::parseCommandLine(int argc, char **argv)
}
- if(!internalParseCommandLine(argc, argv, 1))
- return usage(argv[0]);
+ {
+ int ret = internalParseCommandLine(argc, argv, 1);
+ if(ret != QMAKE_CMDLINE_SUCCESS)
+ return ret == QMAKE_CMDLINE_SHOW_USAGE ? usage(argv[0]) : FALSE;
+ }
@@ -383,2 +416,6 @@ bool Option::postProcessProject(QMakeProject *project)
+ if(!project->isEmpty("QMAKE_EXT_PKGCONFIG"))
+ Option::pkgcfg_ext = project->first("QMAKE_EXT_PKGCONFIG");
+ if(!project->isEmpty("QMAKE_EXT_LIBTOOL"))
+ Option::libtool_ext = project->first("QMAKE_EXT_LIBTOOL");
if(!project->isEmpty("QMAKE_EXT_PRL"))
@@ -389,4 +426,6 @@ bool Option::postProcessProject(QMakeProject *project)
Option::ui_ext = project->first("QMAKE_EXT_UI");
- if(!project->isEmpty("QMAKE_EXT_MOC"))
- Option::moc_ext = project->first("QMAKE_EXT_MOC");
+ if(!project->isEmpty("QMAKE_EXT_CPP_MOC"))
+ Option::cpp_moc_ext = project->first("QMAKE_EXT_CPP_MOC");
+ if(!project->isEmpty("QMAKE_EXT_H_MOC"))
+ Option::h_moc_ext = project->first("QMAKE_EXT_H_MOC");
if(!project->isEmpty("QMAKE_EXT_LEX"))
@@ -397,4 +436,6 @@ bool Option::postProcessProject(QMakeProject *project)
Option::obj_ext = project->first("QMAKE_EXT_OBJ");
- if(!project->isEmpty("QMAKE_MOD_MOC"))
- Option::moc_mod = project->first("QMAKE_MOD_MOC");
+ if(!project->isEmpty("QMAKE_H_MOD_MOC"))
+ Option::h_moc_mod = project->first("QMAKE_H_MOD_MOC");
+ if(!project->isEmpty("QMAKE_CPP_MOD_MOC"))
+ Option::cpp_moc_mod = project->first("QMAKE_CPP_MOD_MOC");
if(!project->isEmpty("QMAKE_MOD_LEX"))