Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -71,6 +71,7 @@ option(LIBCXX_ENABLE_FILESYSTEM "Build filesystem as part of libc++experimental.a" ${ENABLE_FILESYSTEM_DEFAULT}) option(LIBCXX_INCLUDE_TESTS "Build the libc++ tests." ${LLVM_INCLUDE_TESTS}) +option(LIBCXX_ENABLE_RANDOM_DEVICE "Build random_device class" On) # Benchmark options ----------------------------------------------------------- option(LIBCXX_INCLUDE_BENCHMARKS "Build the libc++ benchmarks and their dependancies" ON) @@ -610,6 +611,7 @@ config_define_if_not(LIBCXX_ENABLE_THREADS _LIBCPP_HAS_NO_THREADS) config_define_if_not(LIBCXX_ENABLE_MONOTONIC_CLOCK _LIBCPP_HAS_NO_MONOTONIC_CLOCK) config_define_if_not(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS) +config_define_if_not(LIBCXX_ENABLE_RANDOM_DEVICE _LIBCPP_HAS_NO_RANDOM_DEVICE) config_define_if(LIBCXX_HAS_PTHREAD_API _LIBCPP_HAS_THREAD_API_PTHREAD) config_define_if(LIBCXX_HAS_EXTERNAL_THREAD_API _LIBCPP_HAS_THREAD_API_EXTERNAL) Index: include/__config_site.in =================================================================== --- include/__config_site.in +++ include/__config_site.in @@ -20,6 +20,7 @@ #cmakedefine _LIBCPP_HAS_NO_THREADS #cmakedefine _LIBCPP_HAS_NO_MONOTONIC_CLOCK #cmakedefine _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS +#cmakedefine _LIBCPP_HAS_NO_RANDOM_DEVICE #cmakedefine _LIBCPP_HAS_MUSL_LIBC #cmakedefine _LIBCPP_HAS_THREAD_API_PTHREAD #cmakedefine _LIBCPP_HAS_THREAD_API_EXTERNAL Index: include/random =================================================================== --- include/random +++ include/random @@ -3476,6 +3476,7 @@ typedef shuffle_order_engine knuth_b; +#ifndef _LIBCPP_HAS_NO_RANDOM_DEVICE // random_device class _LIBCPP_TYPE_VIS random_device @@ -3511,6 +3512,7 @@ random_device(const random_device&); // = delete; random_device& operator=(const random_device&); // = delete; }; +#endif // _LIBCPP_HAS_NO_RANDOM_DEVICE // seed_seq Index: src/random.cpp =================================================================== --- src/random.cpp +++ src/random.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include <__config> +#ifndef _LIBCPP_HAS_NO_RANDOM_DEVICE #if defined(_LIBCPP_USING_WIN32_RANDOM) // Must be defined before including stdlib.h to enable rand_s(). @@ -177,3 +178,4 @@ } _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_HAS_NO_RANDOM_DEVICE