summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2010-06-21 12:18:16 -0400
committerNat Goodspeed <nat@lindenlab.com>2010-06-21 12:18:16 -0400
commit4e538adca41d486125c3b887ce694c457bcab157 (patch)
tree11e11e8b415dbc423b329a8d1585d2f87e47634d
parentc2b1bf6a0d7fbcadc81ef375fd8f2a9944758e64 (diff)
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.
-rw-r--r--indra/cmake/LLAddBuildTest.cmake19
-rw-r--r--indra/cmake/LLSharedLibs.cmake8
-rw-r--r--indra/cmake/LLTestCommand.cmake10
3 files changed, 11 insertions, 26 deletions
diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake
index e0c0ae2246..dd49caaf20 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 b32a46b736..009eeae781 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 3002720754..554559edbd 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)