diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2010-06-21 12:18:16 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2010-06-21 12:18:16 -0400 |
commit | 4e538adca41d486125c3b887ce694c457bcab157 (patch) | |
tree | 11e11e8b415dbc423b329a8d1585d2f87e47634d | |
parent | c2b1bf6a0d7fbcadc81ef375fd8f2a9944758e64 (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.cmake | 19 | ||||
-rw-r--r-- | indra/cmake/LLSharedLibs.cmake | 8 | ||||
-rw-r--r-- | 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 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) |