summaryrefslogtreecommitdiff
path: root/qmake/generators/projectgenerator.cpp
Unidiff
Diffstat (limited to 'qmake/generators/projectgenerator.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/generators/projectgenerator.cpp40
1 files changed, 23 insertions, 17 deletions
diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp
index 1515216..1c17379 100644
--- a/qmake/generators/projectgenerator.cpp
+++ b/qmake/generators/projectgenerator.cpp
@@ -1,16 +1,14 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2**
3** 3**
4** Definition of ________ class. 4** Implementation of ProjectGenerator 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**
12** This file may be distributed under the terms of the Q Public License 10** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 11** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 12** LICENSE.QPL included in the packaging of this file.
15** 13**
16** This file may be distributed and/or modified under the terms of the 14** This file may be distributed and/or modified under the terms of the
@@ -154,12 +152,13 @@ ProjectGenerator::init()
154 } 152 }
155 } 153 }
156 if(!file_count) { //shall we try a subdir? 154 if(!file_count) { //shall we try a subdir?
157 QStringList dirs = Option::projfile::project_dirs; 155 QStringList dirs = Option::projfile::project_dirs;
158 if(Option::projfile::do_pwd) 156 if(Option::projfile::do_pwd)
159 dirs.prepend("."); 157 dirs.prepend(".");
158 const QString out_file = fileFixify(Option::output.name());
160 for(QStringList::Iterator pd = dirs.begin(); pd != dirs.end(); pd++) { 159 for(QStringList::Iterator pd = dirs.begin(); pd != dirs.end(); pd++) {
161 if(QFile::exists((*pd))) { 160 if(QFile::exists((*pd))) {
162 QString newdir = (*pd); 161 QString newdir = (*pd);
163 QFileInfo fi(newdir); 162 QFileInfo fi(newdir);
164 if(fi.isDir()) { 163 if(fi.isDir()) {
165 newdir = fileFixify(newdir); 164 newdir = fileFixify(newdir);
@@ -168,18 +167,21 @@ ProjectGenerator::init()
168 !subdirs.contains(newdir)) { 167 !subdirs.contains(newdir)) {
169 subdirs.append(newdir); 168 subdirs.append(newdir);
170 } else { 169 } else {
171 QDir d(newdir, "*.pro"); 170 QDir d(newdir, "*.pro");
172 d.setFilter(QDir::Files); 171 d.setFilter(QDir::Files);
173 for(int i = 0; i < (int)d.count(); i++) { 172 for(int i = 0; i < (int)d.count(); i++) {
174 QString nd = newdir + QDir::separator() + d[i]; 173 QString nd = newdir;
174 if(nd == ".")
175 nd = "";
176 else if(!nd.isEmpty() && !nd.endsWith(QString(QChar(QDir::separator()))))
177 nd += QDir::separator();
178 nd += d[i];
175 fileFixify(nd); 179 fileFixify(nd);
176 if(d[i] != "." && d[i] != ".." && !subdirs.contains(nd)) { 180 if(d[i] != "." && d[i] != ".." && !subdirs.contains(nd) && !out_file.endsWith(nd))
177 if(newdir + d[i] != Option::output_dir + Option::output.name()) 181 subdirs.append(nd);
178 subdirs.append(nd);
179 }
180 } 182 }
181 } 183 }
182 if(Option::projfile::do_recursive) { 184 if(Option::projfile::do_recursive) {
183 QDir d(newdir); 185 QDir d(newdir);
184 d.setFilter(QDir::Dirs); 186 d.setFilter(QDir::Dirs);
185 for(int i = 0; i < (int)d.count(); i++) { 187 for(int i = 0; i < (int)d.count(); i++) {
@@ -321,13 +323,13 @@ ProjectGenerator::init()
321 QString u1 = (*ui_it).right((*ui_it).length() - ((*ui_it).findRev(Option::dir_sep) + 1)); 323 QString u1 = (*ui_it).right((*ui_it).length() - ((*ui_it).findRev(Option::dir_sep) + 1));
322 if(s1 == u1) { 324 if(s1 == u1) {
323 found = TRUE; 325 found = TRUE;
324 break; 326 break;
325 } 327 }
326 } 328 }
327 if(!found && (*val_it).endsWith(Option::moc_ext)) 329 if(!found && (*val_it).endsWith(Option::cpp_moc_ext))
328 found = TRUE; 330 found = TRUE;
329 if(found) 331 if(found)
330 val_it = l.remove(val_it); 332 val_it = l.remove(val_it);
331 else 333 else
332 ++val_it; 334 ++val_it;
333 } 335 }
@@ -388,13 +390,13 @@ ProjectGenerator::addFile(QString file)
388{ 390{
389 file = fileFixify(file, QDir::currentDirPath()); 391 file = fileFixify(file, QDir::currentDirPath());
390 QString dir; 392 QString dir;
391 int s = file.findRev(Option::dir_sep); 393 int s = file.findRev(Option::dir_sep);
392 if(s != -1) 394 if(s != -1)
393 dir = file.left(s+1); 395 dir = file.left(s+1);
394 if(file.mid(dir.length(), Option::moc_mod.length()) == Option::moc_mod) 396 if(file.mid(dir.length(), Option::h_moc_mod.length()) == Option::h_moc_mod)
395 return FALSE; 397 return FALSE;
396 398
397 QString where; 399 QString where;
398 for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) { 400 for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) {
399 if(file.endsWith((*cppit))) { 401 if(file.endsWith((*cppit))) {
400 if(QFile::exists(file.left(file.length() - (*cppit).length()) + Option::ui_ext)) 402 if(QFile::exists(file.left(file.length() - (*cppit).length()) + Option::ui_ext))
@@ -432,13 +434,13 @@ ProjectGenerator::addFile(QString file)
432 } 434 }
433 return FALSE; 435 return FALSE;
434} 436}
435 437
436 438
437QString 439QString
438ProjectGenerator::getWritableVar(const QString &v, bool /*fixPath*/) 440ProjectGenerator::getWritableVar(const QString &v, bool fixPath)
439{ 441{
440 QStringList &vals = project->variables()[v]; 442 QStringList &vals = project->variables()[v];
441 if(vals.isEmpty()) 443 if(vals.isEmpty())
442 return ""; 444 return "";
443 445
444 QString ret; 446 QString ret;
@@ -452,16 +454,20 @@ ProjectGenerator::getWritableVar(const QString &v, bool /*fixPath*/)
452 if(ret.length() + join.length() > 80) { 454 if(ret.length() + join.length() > 80) {
453 QString spaces; 455 QString spaces;
454 for(unsigned int i = 0; i < ret.length(); i++) 456 for(unsigned int i = 0; i < ret.length(); i++)
455 spaces += " "; 457 spaces += " ";
456 join = vals.join(" \\\n" + spaces); 458 join = vals.join(" \\\n" + spaces);
457 } 459 }
460#if 0
458 // ### Commented out for now so that project generation works. 461 // ### Commented out for now so that project generation works.
459 // Sam: can you look at why this was needed? 462 // Sam: it had to do with trailing \'s (ie considered continuation lines)
460 /* if(fixPath) 463 if(fixPath)
461 join = join.replace("\\", "/");*/ 464 join = join.replace("\\", "/");
465#else
466 Q_UNUSED(fixPath);
467#endif
462 return ret + join + "\n"; 468 return ret + join + "\n";
463} 469}
464 470
465bool 471bool
466ProjectGenerator::openOutput(QFile &file) const 472ProjectGenerator::openOutput(QFile &file) const
467{ 473{