From ec8ee339396aedb4032ae123843ae630546cd588 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 24 May 2018 16:01:50 -0400
Subject: [PATCH] MAINT-8675: In Darwin-specific CMake, use cp, not cmake -E
 copy.

cmake -E copy does only one file at a time, and older CMake versions don't
handle wildcards. But cmake -E copy is specifically for portability. When the
copy operation itself is Darwin-only, we can count on having 'cp' available.
---
 indra/llcorehttp/CMakeLists.txt | 39 +++++++++++++++------------------
 1 file changed, 18 insertions(+), 21 deletions(-)

diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index bff329f4a5c..9dbc6f447ec 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -167,29 +167,26 @@ if (DARWIN)
     COMMENT "Creating Resources directory in app bundle."
   )
   
-  # Copy the required libraries to the package app
-  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libapr-1.0.dylib ${LL_TEST_DESTINATION_DIR}
-    DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libapr-1.0.dylib
-  )
-  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libaprutil-1.0.dylib ${LL_TEST_DESTINATION_DIR}
-    DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libaprutil-1.0.dylib
-  )
-  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libexception_handler.dylib ${LL_TEST_DESTINATION_DIR}
-    DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libexception_handler.dylib
-  )
+  # Copy the required libraries to the package app. We used to use a sequence
+  # of '${CMAKE_COMMAND} -E copy' commands, but 'cmake -E copy' does only a
+  # single file at a time: it doesn't understand wildcards. 'cmake -E copy' is
+  # for portability. This operation is Darwin-specific. We can count on the
+  # 'cp' command.
+  set(copy_dylibs
+    libapr-1.0.dylib
+    libaprutil-1.0.dylib
+    libexception_handler.dylib
+    libnghttp2*.dylib
+    ${EXPAT_COPY}
+    )
+
   add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/libnghttp2*.dylib ${LL_TEST_DESTINATION_DIR}
-    DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/libnghttp2.dylib
+    WORKING_DIRECTORY "${AUTOBUILD_INSTALL_DIR}/lib/release"
+    COMMAND cp -v
+    ${copy_dylibs}
+    ${LL_TEST_DESTINATION_DIR}
+    DEPENDS ${copy_dylibs}
   )
-  foreach(expat ${EXPAT_COPY})
-    add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy ${AUTOBUILD_INSTALL_DIR}/lib/release/${expat} ${LL_TEST_DESTINATION_DIR}
-      DEPENDS ${AUTOBUILD_INSTALL_DIR}/lib/release/${expat}
-    )
-  endforeach(expat)
 
 endif (DARWIN)
 
-- 
GitLab