diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake
index 1dda883c9de7fcff681134c001eb19e852dbd370..da0d32fab14191d3826ebc3d17e7e36099556d61 100644
--- a/cmake/DD4hepBuild.cmake
+++ b/cmake/DD4hepBuild.cmake
@@ -23,6 +23,8 @@ macro(dd4hep_to_parent_scope val)
   set ( ${val} ${${val}} PARENT_SCOPE )
 endmacro(dd4hep_to_parent_scope)
 
+find_package(Threads REQUIRED)
+
 #---------------------------------------------------------------------------------------------------
 #  MACRO: dd4hep_set_compiler_flags
 #
@@ -71,18 +73,20 @@ macro(dd4hep_set_compiler_flags)
     add_definitions(-DDD4HEP_USE_STDCXX=11)
   endif()
 
-  IF( "${CMAKE_CXX_COMPILER_ID}" EQUAL "Clang" )
-    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
-  ENDIF()
+  if ( THREADS_HAVE_PTHREAD_ARG )
+    set ( CMAKE_CXX_FLAGS           "${CMAKE_CXX_FLAGS} -pthread")
+    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pthread")
+  elif ( CMAKE_THREAD_LIBS_INIT )
+    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
+  endif()
 
-  if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-    set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
-    set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -pthread")
+  if( "${CMAKE_CXX_COMPILER_ID}" EQUAL "Clang" )
+    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
   endif()
 
-  IF("${CMAKE_CXX_COMPILER_ID}" EQUAL "AppleClang")
+  if("${CMAKE_CXX_COMPILER_ID}" EQUAL "AppleClang")
     SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
-  ENDIF()
+  endif()
 
  #rpath treatment
  if (APPLE)