diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2017-06-06 18:28:37 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2017-06-20 16:37:35 +0000 |
commit | 0669f71b0c78c0d3374571d266004d7503ca8b12 (patch) | |
tree | 9c5ee9a5be7f02c2ca6c52a5987f0c406622694a /src/corelib/global | |
parent | 4de40514066e7e31fe02c87afaf0863d6928391f (diff) |
QRandomGenerator: don't internally rely on QT_HAS_INCLUDE
GCC didn't support it until version 5 or 6, so add configure tests for
both <random> and <sys/auxv.h>. Normally I'd say "upgrade", but this is
too low-level and important a feature.
There's a good chance that all our supported compilers have <random>
anyway. As for <sys/auxv.h>, it's present on Glibc, Bionic and MUSL, but
I don't see it in uClibc (AT_RANDOM is a Linux-specific feature).
Change-Id: Ia3e896da908f42939148fffd14c5b2af491f7a77
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/global')
-rw-r--r-- | src/corelib/global/qconfig-bootstrapped.h | 2 | ||||
-rw-r--r-- | src/corelib/global/qrandom.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h index 374b53a9b5..a6a56b5d59 100644 --- a/src/corelib/global/qconfig-bootstrapped.h +++ b/src/corelib/global/qconfig-bootstrapped.h @@ -75,6 +75,7 @@ #else # define QT_FEATURE_alloca_malloc_h -1 #endif +#define QT_FEATURE_cxx11_random (QT_HAS_INCLUDE(<random>) ? 1 : -1) #define QT_FEATURE_iconv -1 #define QT_FEATURE_icu -1 #define QT_FEATURE_journald -1 @@ -96,6 +97,7 @@ #define QT_NO_GEOM_VARIANT #define QT_FEATURE_sharedmemory -1 #define QT_FEATURE_systemsemaphore -1 +#define QT_FEATURE_sys_auxv (QT_HAS_INCLUDE(<sys/auxv.h>) ? 1 : -1) #ifdef QT_BUILD_QMAKE #define QT_FEATURE_commandlineparser -1 diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp index 83a309b143..6a92260c46 100644 --- a/src/corelib/global/qrandom.cpp +++ b/src/corelib/global/qrandom.cpp @@ -46,13 +46,13 @@ #include <qthreadstorage.h> #include <private/qsimd_p.h> -#if QT_HAS_INCLUDE(<random>) +#if QT_CONFIG(cxx11_random) # include <random> # include "qdeadlinetimer.h" # include "qhashfunctions.h" #endif -#if QT_HAS_INCLUDE(<sys/auxv.h>) +#if QT_CONFIG(sys_auxv) # include <sys/auxv.h> #endif @@ -213,7 +213,7 @@ static void fallback_fill(quint32 *ptr, qssize_t left) Q_DECL_NOTHROW // BSDs have arc4random(4) and these work even in chroot(2) arc4random_buf(ptr, left * sizeof(*ptr)); } -#elif QT_HAS_INCLUDE(<chrono>) +#elif QT_CONFIG(cxx11_random) static QBasicAtomicInteger<unsigned> seed = Q_BASIC_ATOMIC_INITIALIZER(0U); static void fallback_update_seed(unsigned value) { |