From 4e538adca41d486125c3b887ce694c457bcab157 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Mon, 21 Jun 2010 12:18:16 -0400
Subject: [PATCH] EXT-7926: fix broken LD_LIBRARY_PATH handling on Windows.
 Recent checkins introduced two different CMake macros SET_TEST_LIST (which
 returned a CMake list of PATH directory strings) and SET_TEST_PATH (which
 returned a single platform-appropriate PATH string). On Windows, whose
 path-separator character is ';', SET_TEST_PATH interacted badly with CMake:
 in CMake, a single string containing ';' characters is indistinguishable from
 a list of strings. Eliminate the return-single-string form, redirecting the
 name SET_TEST_PATH to the macro that returns a CMake list. Make
 LL_TEST_COMMAND expect a list value, prepending each directory string with
 run_build_test.py's -l switch.

---
 indra/cmake/LLAddBuildTest.cmake | 19 +------------------
 indra/cmake/LLSharedLibs.cmake   |  8 ++++----
 indra/cmake/LLTestCommand.cmake  | 10 ++++++----
 3 files changed, 11 insertions(+), 26 deletions(-)

diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake
index e0c0ae22468..dd49caaf20e 100644
--- a/indra/cmake/LLAddBuildTest.cmake
+++ b/indra/cmake/LLAddBuildTest.cmake
@@ -226,7 +226,6 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
   ENDIF (test_exe_pos LESS 0)
 
   SET_TEST_PATH(LD_LIBRARY_PATH)
-
   LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command})
 
   if(TEST_DEBUG)
@@ -244,7 +243,7 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
 
 ENDFUNCTION(LL_ADD_INTEGRATION_TEST)
 
-MACRO(SET_TEST_LIST LISTVAR)
+MACRO(SET_TEST_PATH LISTVAR)
   IF(WINDOWS)
     # We typically build/package only Release variants of third-party
     # libraries, so append the Release staging dir in case the library being
@@ -259,20 +258,4 @@ MACRO(SET_TEST_LIST LISTVAR)
     # Linux uses a single staging directory anyway.
     set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib)
   ENDIF(WINDOWS)
-ENDMACRO(SET_TEST_LIST)
-
-MACRO(SET_TEST_PATH PATHVAR)
-  set_test_list(test_list)
-  IF(WINDOWS)
-    set(sep "\;")
-  ELSE(WINDOWS)
-    set(sep ":")
-  ENDIF(WINDOWS)
-  set(path "")
-  set(optsep "")
-  foreach(dir ${test_list})
-    set(path "${path}${optsep}${dir}")
-    set(optsep "${sep}")
-  endforeach(dir)
-  set(${PATHVAR} "${path}")
 ENDMACRO(SET_TEST_PATH)
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index b32a46b736a..009eeae7810 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -5,7 +5,7 @@ macro(ll_deploy_sharedlibs_command target_exe)
   get_filename_component(OUTPUT_PATH ${TARGET_LOCATION} PATH)
   
   if(DARWIN)
-    SET_TEST_LIST(SEARCH_DIRS)
+    SET_TEST_PATH(SEARCH_DIRS)
     get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE)
     if(IS_BUNDLE)
 	  # If its a bundle the exe is not in the target location, this should find it.
@@ -15,10 +15,10 @@ macro(ll_deploy_sharedlibs_command target_exe)
 	  set(OUTPUT_PATH ${OUTPUT_PATH}/../Resources)
     endif(IS_BUNDLE)
   elseif(WINDOWS)
-    SET_TEST_LIST(SEARCH_DIRS)
+    SET_TEST_PATH(SEARCH_DIRS)
     LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32")
   elseif(LINUX)
-    SET_TEST_LIST(SEARCH_DIRS)
+    SET_TEST_PATH(SEARCH_DIRS)
 	set(OUTPUT_PATH ${OUTPUT_PATH}/lib)
   endif(DARWIN)
 
@@ -72,4 +72,4 @@ macro(ll_stage_sharedlib DSO_TARGET)
       )
   endif(DARWIN)
 
-endmacro(ll_stage_sharedlib)
\ No newline at end of file
+endmacro(ll_stage_sharedlib)
diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake
index 3002720754b..554559edbd6 100644
--- a/indra/cmake/LLTestCommand.cmake
+++ b/indra/cmake/LLTestCommand.cmake
@@ -5,10 +5,12 @@ MACRO(LL_TEST_COMMAND OUTVAR LD_LIBRARY_PATH)
   SET(value
     ${PYTHON_EXECUTABLE}
     "${CMAKE_SOURCE_DIR}/cmake/run_build_test.py")
-  IF(LD_LIBRARY_PATH)
-    LIST(APPEND value "-l${LD_LIBRARY_PATH}")
-  ENDIF(LD_LIBRARY_PATH)
+  FOREACH(dir ${LD_LIBRARY_PATH})
+    LIST(APPEND value "-l${dir}")
+  ENDFOREACH(dir)
   LIST(APPEND value ${ARGN})
   SET(${OUTVAR} ${value})
-##MESSAGE(STATUS "Will run: ${value}")
+##IF(LL_TEST_VERBOSE)
+##  MESSAGE(STATUS "LL_TEST_COMMAND: ${value}")
+##ENDIF(LL_TEST_VERBOSE)
 ENDMACRO(LL_TEST_COMMAND)
-- 
GitLab