diff --git a/Modules/Platform/Darwin-GNU.cmake b/Modules/Platform/Darwin-GNU.cmake
index 8a50a6a..e0db381 100644
--- a/Modules/Platform/Darwin-GNU.cmake
+++ b/Modules/Platform/Darwin-GNU.cmake
@@ -19,9 +19,23 @@ endif()
 set(__DARWIN_COMPILER_GNU 1)
 
 macro(__darwin_compiler_gnu lang)
+  if(NOT __DARWIN_GNU_AR_RESPONSE)
+    # Check if GNU ${CMAKE_AR} is too old to support @FILE syntax.
+    set(_doc "${CMAKE_AR} tool supports response @file option")
+    message(STATUS "Checking whether ${_doc}")
+    execute_process(COMMAND ${CMAKE_AR} -V OUTPUT_VARIABLE _help ERROR_VARIABLE _help)
+    if("${_help}" MATCHES "GNU ar .* 2\\.[2-9]")
+      message(STATUS "Checking whether ${_doc} - yes")
+      set(__DARWIN_GNU_AR_RESPONSE 1)
+    else()
+      message(STATUS "Checking whether ${_doc} - no")
+      set(__DARWIN_GNU_AR_RESPONSE 0)
+    endif()
+  endif(NOT __DARWIN_GNU_AR_RESPONSE)
   # GNU does not have -shared on OS X
   set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
   set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS ${__DARWIN_GNU_AR_RESPONSE})
 endmacro()
 
 macro(cmake_gnu_has_isysroot lang)
