summaryrefslogtreecommitdiffstats
path: root/Modules/CheckForPthreads.c
diff options
context:
space:
mode:
authorSteffen Dettmer <steffen.dettmer@gmail.com>2017-08-07 13:30:33 (GMT)
committerBrad King <brad.king@kitware.com>2017-08-30 15:15:26 (GMT)
commitd4e551a90b6bf6ea4e18fa408f40f39df6ad6fb4 (patch)
treee4cee46c80dc73ac13894598d50ddc3b7ff2e693 /Modules/CheckForPthreads.c
parentf4aa346538433f4c89a9963d74ea5d3f9bd60390 (diff)
downloadCMake-d4e551a90b6bf6ea4e18fa408f40f39df6ad6fb4.zip
CMake-d4e551a90b6bf6ea4e18fa408f40f39df6ad6fb4.tar.gz
CMake-d4e551a90b6bf6ea4e18fa408f40f39df6ad6fb4.tar.bz2
FindThreads: Drop try_run to improve cross-compiling support
Use `try_compile` instead of `try_run`. It is not clear why `try_run` was ever needed, and it does not work during cross-compiling. Update the check's source file to remove code associated with actually running things. Also remove the ancient `__CLASSIC_C__` code path and use a simple `int main(void)` as in `Modules/CheckIncludeFile.c.in`. Fixes: #16920
Diffstat (limited to 'Modules/CheckForPthreads.c')
-rw-r--r--Modules/CheckForPthreads.c40
1 files changed, 7 insertions, 33 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;
}