diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake index eb9890b476..dd5f6adec3 100644 --- a/build/cmake/config.cmake +++ b/build/cmake/config.cmake @@ -178,12 +178,8 @@ function(wx_write_config) set(CC ${CMAKE_C_COMPILER}) set(CXX ${CMAKE_CXX_COMPILER}) - set(WXCONFIG_CFLAGS) - set(WXCONFIG_LDFLAGS) - if(CMAKE_USE_PTHREADS_INIT) - set(WXCONFIG_CFLAGS "-pthread") - set(WXCONFIG_LDFLAGS "-pthread") - endif() + set(WXCONFIG_CFLAGS ${CMAKE_THREAD_LIBS_INIT}) + set(WXCONFIG_LDFLAGS ${CMAKE_THREAD_LIBS_INIT}) set(WXCONFIG_CPPFLAGS) if(wxBUILD_SHARED) wx_string_append(WXCONFIG_CPPFLAGS " -DWXUSINGDLL") diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake index 7e676a7cc7..48bda0906f 100644 --- a/build/cmake/functions.cmake +++ b/build/cmake/functions.cmake @@ -177,12 +177,9 @@ function(wx_set_common_target_properties target_name) target_compile_definitions(${target_name} PUBLIC "-D_FILE_OFFSET_BITS=64") endif() - if(CMAKE_USE_PTHREADS_INIT) - target_compile_options(${target_name} PRIVATE "-pthread") - # clang++.exe: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] - if(NOT (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - set_target_properties(${target_name} PROPERTIES LINK_FLAGS "-pthread") - endif() + if(CMAKE_THREAD_LIBS_INIT) + target_compile_options(${target_name} PRIVATE ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(${target_name} PUBLIC ${CMAKE_THREAD_LIBS_INIT}) endif() wx_set_source_groups() endfunction() diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 47376caf59..ed0cb89f7c 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -330,7 +330,14 @@ if(wxUSE_INTL AND NOT wxUSE_FILE) endif() if(wxUSE_THREADS) - find_package(Threads REQUIRED) + if(ANDROID) + # Android has pthreads but FindThreads fails due to missing pthread_cancel + set(CMAKE_USE_PTHREADS_INIT 1) + set(CMAKE_THREAD_LIBS_INIT "") + set(Threads_FOUND TRUE) + else() + find_package(Threads REQUIRED) + endif() endif() if(wxUSE_LIBLZMA) diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index 240fc808a6..22a26beb75 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -403,7 +403,7 @@ endif(UNIX) if(CMAKE_USE_PTHREADS_INIT) cmake_push_check_state(RESET) - set(CMAKE_REQUIRED_LIBRARIES pthread) + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) wx_check_cxx_source_compiles(" void *p; pthread_cleanup_push(ThreadCleanupFunc, p);