[PATCH] D41316: [libcxx] Allow random_device to be built optionally

Jon Roelofs via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 6 06:34:25 PDT 2018


>  the targets where you would want to use this can't run the libcxx
testsuite anyway (because they don't have an operating system to run the
test programs under).

I used to run libcxx tests for an arm baremetal toolchain I was building
via semihosted QEMU. It was awkward and slow (especially for some of the
std::*_distribution tests), but it worked.


Jon

On Thu, Apr 5, 2018 at 7:55 PM, Eli Friedman via Phabricator <
reviews at reviews.llvm.org> wrote:

> efriedma updated this revision to Diff 141255.
> efriedma added a comment.
>
> Get rid of the test changes.
>
> They were broken in multiple ways, and weren't really useful anyway
> because the targets where you would want to use this can't run the libcxx
> testsuite anyway (because they don't have an operating system to run the
> test programs under).
>
>
> Repository:
>   rCXX libc++
>
> https://reviews.llvm.org/D41316
>
> Files:
>   CMakeLists.txt
>   include/__config_site.in
>   include/random
>   src/random.cpp
>
>
> 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
> Index: include/random
> ===================================================================
> --- include/random
> +++ include/random
> @@ -3476,6 +3476,7 @@
>
>  typedef shuffle_order_engine<minstd_rand0, 256>
>  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: 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: 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)
> @@ -632,6 +633,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)
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180406/b5257b87/attachment.html>


More information about the cfe-commits mailing list