aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/tools')
-rw-r--r--src/lib/corelib/tools/buildoptions.cpp25
-rw-r--r--src/lib/corelib/tools/buildoptions.h3
-rw-r--r--src/lib/corelib/tools/filetime.h1
-rw-r--r--src/lib/corelib/tools/filetime_unix.cpp5
-rw-r--r--src/lib/corelib/tools/filetime_win.cpp14
5 files changed, 46 insertions, 2 deletions
diff --git a/src/lib/corelib/tools/buildoptions.cpp b/src/lib/corelib/tools/buildoptions.cpp
index 2261124d8..a2d703363 100644
--- a/src/lib/corelib/tools/buildoptions.cpp
+++ b/src/lib/corelib/tools/buildoptions.cpp
@@ -42,6 +42,7 @@ public:
}
QStringList changedFiles;
+ QStringList filesToConsider;
QStringList activeFileTags;
int maxJobCount;
bool dryRun;
@@ -98,6 +99,26 @@ void BuildOptions::setChangedFiles(const QStringList &changedFiles)
}
/*!
+ * \brief The list of files to consider.
+ * \sa setFilesToConsider.
+ * By default, this list is empty.
+ */
+QStringList BuildOptions::filesToConsider() const
+{
+ return d->filesToConsider;
+}
+
+/*!
+ * \brief If the given list is non-empty, qbs will run only commands whose rule has at least one
+ * of these files as an input.
+ * \note The list elements must be absolute file paths.
+ */
+void BuildOptions::setFilesToConsider(const QStringList &files)
+{
+ d->filesToConsider = files;
+}
+
+/*!
* \brief The list of active file tags.
* \sa setActiveFileTags
*/
@@ -109,8 +130,8 @@ QStringList BuildOptions::activeFileTags() const
/*!
* \brief Set the list of active file tags.
* If this list is non-empty, then every transformer with non-matching output file tags is skipped.
- * E.g. set changed files to "foo.cpp" and activeFileTags to ["obj"] to run the compiler
- * on foo.cpp without further processing like linking.
+ * E.g. call \c setFilesToConsider() with "foo.cpp" and \c setActiveFileTags() with "obj" to
+ * run the compiler on foo.cpp without further processing like linking.
* \sa activeFileTags
*/
void BuildOptions::setActiveFileTags(const QStringList &fileTags)
diff --git a/src/lib/corelib/tools/buildoptions.h b/src/lib/corelib/tools/buildoptions.h
index 2c277fc3b..c79e6477b 100644
--- a/src/lib/corelib/tools/buildoptions.h
+++ b/src/lib/corelib/tools/buildoptions.h
@@ -45,6 +45,9 @@ public:
BuildOptions &operator=(const BuildOptions &other);
~BuildOptions();
+ QStringList filesToConsider() const;
+ void setFilesToConsider(const QStringList &files);
+
QStringList changedFiles() const;
void setChangedFiles(const QStringList &changedFiles);
diff --git a/src/lib/corelib/tools/filetime.h b/src/lib/corelib/tools/filetime.h
index 0dc0524df..0f16f3ad3 100644
--- a/src/lib/corelib/tools/filetime.h
+++ b/src/lib/corelib/tools/filetime.h
@@ -68,6 +68,7 @@ public:
QString toString() const;
static FileTime currentTime();
+ static FileTime oldestTime();
friend class FileInfo;
InternalType m_fileTime;
diff --git a/src/lib/corelib/tools/filetime_unix.cpp b/src/lib/corelib/tools/filetime_unix.cpp
index 945be8f44..5dd176c04 100644
--- a/src/lib/corelib/tools/filetime_unix.cpp
+++ b/src/lib/corelib/tools/filetime_unix.cpp
@@ -62,6 +62,11 @@ FileTime FileTime::currentTime()
return time(0);
}
+FileTime FileTime::oldestTime()
+{
+ return 1;
+}
+
QString FileTime::toString() const
{
QDateTime dt;
diff --git a/src/lib/corelib/tools/filetime_win.cpp b/src/lib/corelib/tools/filetime_win.cpp
index b3a7fab67..706dd4752 100644
--- a/src/lib/corelib/tools/filetime_win.cpp
+++ b/src/lib/corelib/tools/filetime_win.cpp
@@ -75,6 +75,20 @@ FileTime FileTime::currentTime()
return result;
}
+FileTime FileTime::oldestTime()
+{
+ SYSTEMTIME st = {
+ 1601,
+ 1,
+ 5,
+ 2
+ };
+ FileTime result;
+ FILETIME *const ft = reinterpret_cast<FILETIME *>(&result.m_fileTime);
+ SystemTimeToFileTime(&st, ft);
+ return result;
+}
+
QString FileTime::toString() const
{
const FILETIME *const ft = reinterpret_cast<const FILETIME *>(&m_fileTime);