ENDMACRO(TMPI_TEST_ATOMICS VARIABLE)
+try_compile(HAVE_PROCESSOR_NUMBER ${CMAKE_BINARY_DIR} "${CMAKE_SOURCE_DIR}/cmake/TestWinProcNum.c")
include(FindThreads)
-if (CMAKE_USE_PTHREADS_INIT)
+
+if(CMAKE_USE_WIN32_THREADS_INIT AND NOT HAVE_PROCESSOR_NUMBER)
+ message(WARNING "Incomplete Windows Processor Group API. If you want Gromacs to be able to set thread affinity, choose a Mingw distribution with a complete API (e.g. Mingw-w64).")
+endif()
+
+if (CMAKE_USE_WIN32_THREADS_INIT AND HAVE_PROCESSOR_NUMBER)
+ set(THREAD_WINDOWS 1)
+ set(THREAD_LIB)
+elseif (CMAKE_USE_PTHREADS_INIT)
check_include_files(pthread.h HAVE_PTHREAD_H)
set(THREAD_PTHREADS 1)
set(THREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
-elseif (CMAKE_USE_WIN32_THREADS_INIT)
- set(THREAD_WINDOWS 1)
- set(THREAD_LIB)
else()
message(FATAL_ERROR "Thread support required")
endif ()