diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index ace8fd5fe426f3..b967bf81282365 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -350,8 +350,12 @@ elseif(CLR_CMAKE_HOST_APPLE) endif() endif() elseif(CLR_CMAKE_HOST_HAIKU) + # Workaround until https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11915 gets merged. + # Haiku uses the GNU toolchain so this should work. + set(CMAKE_LINK_GROUP_USING_RESCAN "LINKER:--start-group" "LINKER:--end-group") + set(CMAKE_LINK_GROUP_USING_RESCAN_SUPPORTED TRUE) add_compile_options($<$:-Wa,--noexecstack>) - add_linker_flag("-Wl,--no-undefined") + add_linker_flag("-Wl,--build-id=sha1") endif() #------------------------------------ diff --git a/src/native/libs/Common/pal_config.h.in b/src/native/libs/Common/pal_config.h.in index b546abba1c91c3..64dd893fa43035 100644 --- a/src/native/libs/Common/pal_config.h.in +++ b/src/native/libs/Common/pal_config.h.in @@ -105,6 +105,8 @@ #cmakedefine01 HAVE_CLOCK_GETTIME_NSEC_NP #cmakedefine01 HAVE_PTHREAD_CONDATTR_SETCLOCK #cmakedefine01 HAVE_PTHREAD_MUTEX_CLOCKLOCK +#cmakedefine01 HAVE_PTHREAD_MUTEX_CONSISTENT +#cmakedefine01 HAVE_PTHREAD_MUTEXATTR_SETROBUST #cmakedefine01 HAVE_TCP_H_TCPSTATE_ENUM #cmakedefine01 HAVE_TCP_FSM_H #cmakedefine01 HAVE_GSSFW_HEADERS diff --git a/src/native/libs/System.Native/CMakeLists.txt b/src/native/libs/System.Native/CMakeLists.txt index 8fa04ec15a9c9e..f97c8e77f7d3c3 100644 --- a/src/native/libs/System.Native/CMakeLists.txt +++ b/src/native/libs/System.Native/CMakeLists.txt @@ -56,7 +56,8 @@ else() # WASI ) endif() -if (CLR_CMAKE_TARGET_APPLE OR CLR_CMAKE_TARGET_ANDROID OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI OR CLR_CMAKE_TARGET_OPENBSD) +if (CLR_CMAKE_TARGET_APPLE OR CLR_CMAKE_TARGET_ANDROID OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI OR CLR_CMAKE_TARGET_OPENBSD + OR NOT HAVE_PTHREAD_MUTEXATTR_SETROBUST OR NOT HAVE_PTHREAD_MUTEX_CONSISTENT) list (APPEND NATIVE_SOURCES pal_crossprocessmutex_unsupported.c) else() diff --git a/src/native/libs/configure.cmake b/src/native/libs/configure.cmake index d5fbbc082dd3d4..3e33a39c0caf13 100644 --- a/src/native/libs/configure.cmake +++ b/src/native/libs/configure.cmake @@ -663,6 +663,8 @@ endif() if (NOT CLR_CMAKE_TARGET_WASI) check_library_exists(${PTHREAD_LIBRARY} pthread_condattr_setclock "" HAVE_PTHREAD_CONDATTR_SETCLOCK) check_library_exists(${PTHREAD_LIBRARY} pthread_mutex_clocklock "" HAVE_PTHREAD_MUTEX_CLOCKLOCK) + check_library_exists(${PTHREAD_LIBRARY} pthread_mutex_consistent "" HAVE_PTHREAD_MUTEX_CONSISTENT) + check_library_exists(${PTHREAD_LIBRARY} pthread_mutexattr_setrobust "" HAVE_PTHREAD_MUTEXATTR_SETROBUST) endif() check_symbol_exists(