1 /**************************************************************************** |
1 /**************************************************************************** |
2 ** |
2 ** |
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
4 ** All rights reserved. |
4 ** All rights reserved. |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
6 ** |
6 ** |
7 ** This file is part of the qmake application of the Qt Toolkit. |
7 ** This file is part of the qmake application of the Qt Toolkit. |
8 ** |
8 ** |
77 //expand fucntions |
78 //expand fucntions |
78 enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST, |
79 enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST, |
79 E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION, |
80 E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION, |
80 E_FIND, E_SYSTEM, E_UNIQUE, E_QUOTE, E_ESCAPE_EXPAND, |
81 E_FIND, E_SYSTEM, E_UNIQUE, E_QUOTE, E_ESCAPE_EXPAND, |
81 E_UPPER, E_LOWER, E_FILES, E_PROMPT, E_RE_ESCAPE, E_REPLACE, |
82 E_UPPER, E_LOWER, E_FILES, E_PROMPT, E_RE_ESCAPE, E_REPLACE, |
82 E_SIZE }; |
83 E_SIZE, E_GENERATE_UID }; |
83 QMap<QString, ExpandFunc> qmake_expandFunctions() |
84 QMap<QString, ExpandFunc> qmake_expandFunctions() |
84 { |
85 { |
85 static QMap<QString, ExpandFunc> *qmake_expand_functions = 0; |
86 static QMap<QString, ExpandFunc> *qmake_expand_functions = 0; |
86 if(!qmake_expand_functions) { |
87 if(!qmake_expand_functions) { |
87 qmake_expand_functions = new QMap<QString, ExpandFunc>; |
88 qmake_expand_functions = new QMap<QString, ExpandFunc>; |
109 qmake_expand_functions->insert("re_escape", E_RE_ESCAPE); |
110 qmake_expand_functions->insert("re_escape", E_RE_ESCAPE); |
110 qmake_expand_functions->insert("files", E_FILES); |
111 qmake_expand_functions->insert("files", E_FILES); |
111 qmake_expand_functions->insert("prompt", E_PROMPT); |
112 qmake_expand_functions->insert("prompt", E_PROMPT); |
112 qmake_expand_functions->insert("replace", E_REPLACE); |
113 qmake_expand_functions->insert("replace", E_REPLACE); |
113 qmake_expand_functions->insert("size", E_SIZE); |
114 qmake_expand_functions->insert("size", E_SIZE); |
|
115 qmake_expand_functions->insert("generate_uid", E_GENERATE_UID); |
114 } |
116 } |
115 return *qmake_expand_functions; |
117 return *qmake_expand_functions; |
116 } |
118 } |
117 //replace functions |
119 //replace functions |
118 enum TestFunc { T_REQUIRES=1, T_GREATERTHAN, T_LESSTHAN, T_EQUALS, |
120 enum TestFunc { T_REQUIRES=1, T_GREATERTHAN, T_LESSTHAN, T_EQUALS, |
1862 args_list += tmp; |
1864 args_list += tmp; |
1863 } |
1865 } |
1864 return doProjectExpand(func, args_list, place); |
1866 return doProjectExpand(func, args_list, place); |
1865 } |
1867 } |
1866 |
1868 |
|
1869 // defined in symbian generator |
|
1870 extern QString generate_test_uid(const QString& target); |
|
1871 |
1867 QStringList |
1872 QStringList |
1868 QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list, |
1873 QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list, |
1869 QMap<QString, QStringList> &place) |
1874 QMap<QString, QStringList> &place) |
1870 { |
1875 { |
1871 func = func.trimmed(); |
1876 func = func.trimmed(); |
2299 //QString target = args[0]; |
2304 //QString target = args[0]; |
2300 int size = values(args[0]).size(); |
2305 int size = values(args[0]).size(); |
2301 ret += QString::number(size); |
2306 ret += QString::number(size); |
2302 } |
2307 } |
2303 break; } |
2308 break; } |
|
2309 case E_GENERATE_UID: |
|
2310 if (args.count() != 1) { |
|
2311 fprintf(stderr, "%s:%d: generate_uid(var) requires one argument.\n", |
|
2312 parser.file.toLatin1().constData(), parser.line_no); |
|
2313 } else { |
|
2314 ret += generate_test_uid(args.first()); |
|
2315 } |
|
2316 break; |
2304 default: { |
2317 default: { |
2305 fprintf(stderr, "%s:%d: Unknown replace function: %s\n", |
2318 fprintf(stderr, "%s:%d: Unknown replace function: %s\n", |
2306 parser.file.toLatin1().constData(), parser.line_no, |
2319 parser.file.toLatin1().constData(), parser.line_no, |
2307 func.toLatin1().constData()); |
2320 func.toLatin1().constData()); |
2308 break; } |
2321 break; } |
3053 } else if(var == QLatin1String("_PRO_FILE_")) { |
3066 } else if(var == QLatin1String("_PRO_FILE_")) { |
3054 var = ".BUILTIN." + var; |
3067 var = ".BUILTIN." + var; |
3055 place[var] = QStringList(pfile); |
3068 place[var] = QStringList(pfile); |
3056 } else if(var == QLatin1String("_PRO_FILE_PWD_")) { |
3069 } else if(var == QLatin1String("_PRO_FILE_PWD_")) { |
3057 var = ".BUILTIN." + var; |
3070 var = ".BUILTIN." + var; |
3058 place[var] = QStringList(QFileInfo(pfile).absolutePath()); |
3071 place[var] = QStringList(pfile.isEmpty() ? qmake_getpwd() : QFileInfo(pfile).absolutePath()); |
3059 } else if(var == QLatin1String("_QMAKE_CACHE_")) { |
3072 } else if(var == QLatin1String("_QMAKE_CACHE_")) { |
3060 var = ".BUILTIN." + var; |
3073 var = ".BUILTIN." + var; |
3061 if(Option::mkfile::do_cache) |
3074 if(Option::mkfile::do_cache) |
3062 place[var] = QStringList(Option::mkfile::cachefile); |
3075 place[var] = QStringList(Option::mkfile::cachefile); |
3063 } else if(var == QLatin1String("TEMPLATE")) { |
3076 } else if(var == QLatin1String("TEMPLATE")) { |