diff options
author | Brad King <brad.king@kitware.com> | 2017-09-01 14:21:10 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-09-01 14:21:23 (GMT) |
commit | 9a509099f77ed32a0845e4e3fad7b8f1eb9be10b (patch) | |
tree | c908b7a841a28f76d3dc769e97db7b2abdc3595a /Modules | |
parent | d75ccb1ce0e856e59c51bb36fa194f28c793e9b2 (diff) | |
parent | d4e551a90b6bf6ea4e18fa408f40f39df6ad6fb4 (diff) | |
download | CMake-9a509099f77ed32a0845e4e3fad7b8f1eb9be10b.zip CMake-9a509099f77ed32a0845e4e3fad7b8f1eb9be10b.tar.gz CMake-9a509099f77ed32a0845e4e3fad7b8f1eb9be10b.tar.bz2 |
Merge topic 'FindThreads-cross-compile-no-try_run'
d4e551a9 FindThreads: Drop try_run to improve cross-compiling support
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1109
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CheckForPthreads.c | 40 | ||||
-rw-r--r-- | Modules/FindThreads.cmake | 15 |
2 files changed, 11 insertions, 44 deletions
diff --git a/Modules/CheckForPthreads.c b/Modules/CheckForPthreads.c index 6fc6f26..e70ceb1 100644 --- a/Modules/CheckForPthreads.c +++ b/Modules/CheckForPthreads.c @@ -1,41 +1,15 @@ #include <pthread.h> -#include <stdio.h> -#include <unistd.h> -void* runner(void*); - -int res = 0; -#ifdef __CLASSIC_C__ -int main() -{ - int ac; - char* av[]; -#else -int main(int ac, char* av[]) +void* start_routine(void* args) { -#endif - pthread_t tid[2]; - pthread_create(&tid[0], 0, runner, (void*)1); - pthread_create(&tid[1], 0, runner, (void*)2); - -#if defined(__BEOS__) && !defined(__ZETA__) /* (no usleep on BeOS 5.) */ - usleep(1); /* for strange behavior on single-processor sun */ -#endif - - pthread_join(tid[0], 0); - pthread_join(tid[1], 0); - if (ac > 1000) { - return *av[0]; - } - return res; + return args; } -void* runner(void* args) +int main(void) { - int cc; - for (cc = 0; cc < 10; cc++) { - printf("%p CC: %d\n", args, cc); - } - res++; + /* This is a compile and link test, no code to actually run things. */ + pthread_t thread; + pthread_create(&thread, 0, start_routine, 0); + pthread_join(thread, 0); return 0; } diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index 2c6a58b..a0148dd 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -86,23 +86,16 @@ macro(_check_pthreads_flag) set(_threads_src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindThreads/CheckForPthreads.cxx) configure_file(${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c "${_threads_src}" COPYONLY) endif() - try_run(THREADS_PTHREAD_ARG THREADS_HAVE_PTHREAD_ARG + try_compile(THREADS_HAVE_PTHREAD_ARG ${CMAKE_BINARY_DIR} ${_threads_src} CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread - COMPILE_OUTPUT_VARIABLE OUTPUT) + OUTPUT_VARIABLE OUTPUT) unset(_threads_src) if(THREADS_HAVE_PTHREAD_ARG) - if(THREADS_PTHREAD_ARG STREQUAL "2") - set(Threads_FOUND TRUE) - message(STATUS "Check if compiler accepts -pthread - yes") - else() - message(STATUS "Check if compiler accepts -pthread - no") - file(APPEND - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") - endif() + set(Threads_FOUND TRUE) + message(STATUS "Check if compiler accepts -pthread - yes") else() message(STATUS "Check if compiler accepts -pthread - no") file(APPEND |