diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-05-23 14:21:33 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-05-23 14:21:33 +0200 |
commit | b9c2e80bd1dd6a336139aff32248100b61e34404 (patch) | |
tree | f2b80c49961dc888d52e801bf92fe858bc95d80f /src/lib/corelib | |
parent | 5e259141414a48199cb4491d7d9a5399c1b87e53 (diff) | |
parent | 85b28f9a057772db05c002b528655c1c093d0f50 (diff) |
Merge 1.12 into master
Change-Id: I771ffcfb56163b1b8390d1d12da9c6d1a45544b8
Diffstat (limited to 'src/lib/corelib')
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 11 | ||||
-rw-r--r-- | src/lib/corelib/qbs.h | 1 | ||||
-rw-r--r-- | src/lib/corelib/tools/fileinfo.cpp | 8 | ||||
-rw-r--r-- | src/lib/corelib/tools/filetime.cpp | 26 | ||||
-rw-r--r-- | src/lib/corelib/tools/filetime.h | 22 |
5 files changed, 54 insertions, 14 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index 85b037ee5..933c49abc 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -1229,10 +1229,8 @@ void ModuleLoader::createSortedModuleList(const Item::Module &parentModule, Item != modules.cend()) { return; } - if (!moduleRepresentsDisabledProduct(parentModule)) { - for (const Item::Module &dep : parentModule.item->modules()) - createSortedModuleList(dep, modules); - } + for (const Item::Module &dep : parentModule.item->modules()) + createSortedModuleList(dep, modules); modules.push_back(parentModule); return; } @@ -1294,6 +1292,7 @@ void ModuleLoader::handleProduct(ModuleLoader::ProductContext *productContext) Item * const item = productContext->item; + m_reader->setExtraSearchPathsStack(productContext->project->searchPathsStack); SearchPathsManager searchPathsManager(m_reader, productContext->searchPaths); addTransitiveDependencies(productContext); @@ -3621,6 +3620,8 @@ void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfig void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modules) { for (const Item::Module &m : item->modules()) { + if (moduleRepresentsDisabledProduct(m)) + m.item->removeModules(); auto it = std::find_if(modules->begin(), modules->end(), [m] (const Item::Module &m2) { return m.name == m2.name; }); if (it != modules->end()) { @@ -3631,8 +3632,6 @@ void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modu continue; } modules->push_back(m); - if (moduleRepresentsDisabledProduct(m)) - continue; collectAllModules(m.item, modules); } } diff --git a/src/lib/corelib/qbs.h b/src/lib/corelib/qbs.h index e6373b072..867051c45 100644 --- a/src/lib/corelib/qbs.h +++ b/src/lib/corelib/qbs.h @@ -60,6 +60,7 @@ #include "tools/projectgeneratormanager.h" #include "tools/settings.h" #include "tools/settingsmodel.h" +#include "tools/settingsrepresentation.h" #include "tools/setupprojectparameters.h" #include "tools/toolchains.h" #include "tools/version.h" diff --git a/src/lib/corelib/tools/fileinfo.cpp b/src/lib/corelib/tools/fileinfo.cpp index c4ba0e5e0..a1571b954 100644 --- a/src/lib/corelib/tools/fileinfo.cpp +++ b/src/lib/corelib/tools/fileinfo.cpp @@ -371,7 +371,9 @@ bool FileInfo::exists() const FileTime FileInfo::lastModified() const { -#if HAS_CLOCK_GETTIME +#if APPLE_STAT_TIMESPEC + return m_stat.st_mtimespec; +#elif HAS_CLOCK_GETTIME return m_stat.st_mtim; #else return m_stat.st_mtime; @@ -380,7 +382,9 @@ FileTime FileInfo::lastModified() const FileTime FileInfo::lastStatusChange() const { -#if HAS_CLOCK_GETTIME +#if APPLE_STAT_TIMESPEC + return m_stat.st_ctimespec; +#elif HAS_CLOCK_GETTIME return m_stat.st_ctim; #else return m_stat.st_ctime; diff --git a/src/lib/corelib/tools/filetime.cpp b/src/lib/corelib/tools/filetime.cpp index 3f7148594..14680ef6e 100644 --- a/src/lib/corelib/tools/filetime.cpp +++ b/src/lib/corelib/tools/filetime.cpp @@ -55,6 +55,25 @@ template<bool> struct CompileTimeAssert; template<> struct CompileTimeAssert<true> {}; #endif +#ifdef APPLE_CUSTOM_CLOCK_GETTIME +#include <sys/time.h> + +#ifndef CLOCK_REALTIME +#define CLOCK_REALTIME 0 +#endif + +// clk_id isn't used, only the CLOCK_REALTIME case is implemented. +int clock_gettime(int /*clk_id*/, struct timespec *t) +{ + struct timeval tv; + // Resolution of gettimeofday is 1000nsecs = 1 microsecond. + int ret = gettimeofday(&tv, NULL); + t->tv_sec = tv.tv_sec; + t->tv_nsec = tv.tv_usec * 1000; + return ret; +} +#endif + FileTime::FileTime() { #ifdef Q_OS_WIN @@ -124,6 +143,13 @@ FileTime FileTime::currentTime() FILETIME *const ft = reinterpret_cast<FILETIME *>(&result.m_fileTime); SystemTimeToFileTime(&st, ft); return result; +#elif defined APPLE_CUSTOM_CLOCK_GETTIME + InternalType t; + // Explicitly use our custom version, so that we don't get an additional unresolved symbol on a + // system that actually provides one, but isn't used due to the minimium deployment target + // being lower. + qbs::Internal::clock_gettime(CLOCK_REALTIME, &t); + return t; #elif HAS_CLOCK_GETTIME InternalType t; clock_gettime(CLOCK_REALTIME, &t); diff --git a/src/lib/corelib/tools/filetime.h b/src/lib/corelib/tools/filetime.h index d68c6ac4a..73e9d4544 100644 --- a/src/lib/corelib/tools/filetime.h +++ b/src/lib/corelib/tools/filetime.h @@ -45,17 +45,27 @@ #include <QtCore/qdatastream.h> #include <QtCore/qdebug.h> -#if defined(Q_OS_UNIX) +#if defined(Q_OS_UNIX) && !defined(__APPLE__) #include <time.h> -#define BUILD_HOST_HAS_CLOCK_GETTIME (_POSIX_C_SOURCE >= 199309L) +#define HAS_CLOCK_GETTIME (_POSIX_C_SOURCE >= 199309L) +#endif // Q_OS_UNIX + #ifdef __APPLE__ + #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200 -#define HAS_CLOCK_GETTIME BUILD_HOST_HAS_CLOCK_GETTIME +// macOS 10.12+ ships clock_gettime. +#else +// We implement our own clock_gettime. +#define APPLE_CUSTOM_CLOCK_GETTIME 1 #endif // __MAC_OS_X_VERSION_MIN_REQUIRED -#else // __APPLE__ -#define HAS_CLOCK_GETTIME BUILD_HOST_HAS_CLOCK_GETTIME + +// Either way we have a clock_gettime in the end. +#define HAS_CLOCK_GETTIME 1 + +// Apple stat struct has slightly different names for time fields. +#define APPLE_STAT_TIMESPEC 1 + #endif // __APPLE__ -#endif // Q_OS_UNIX namespace qbs { namespace Internal { |