From 22b59977797a84cb36118ce0b841e0e9d735be19 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 9 Oct 2017 17:47:10 -0500 Subject: [PATCH 1/2] Support rpath for windows when cross compiling --- share/bcm/cmake/BCMFuture.cmake | 6 +++--- share/bcm/cmake/BCMTest.cmake | 12 ++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/share/bcm/cmake/BCMFuture.cmake b/share/bcm/cmake/BCMFuture.cmake index 3393a2f..1593a78 100644 --- a/share/bcm/cmake/BCMFuture.cmake +++ b/share/bcm/cmake/BCMFuture.cmake @@ -51,13 +51,13 @@ endmacro() if(WIN32) if(NOT COMMAND bcm_add_rpath) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "") - file(WRITE ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "") + file(WRITE ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "set(RPATH)\n") file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/bcm_set_rpath-${CONFIG}.cmake INPUT ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake CONDITION $) endforeach() function(bcm_add_rpath) - foreach(RPATH ${ARGN}) + foreach(_RPATH ${ARGN}) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "") - file(APPEND ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "set(ENV{PATH} \"${RPATH};\$ENV{PATH}\")\n") + file(APPEND ${CMAKE_BINARY_DIR}/bcm_set_rpath_pre-${CONFIG}.cmake "list(APPEND RPATH \"${_RPATH}\")\n") endforeach() endforeach() endfunction() diff --git a/share/bcm/cmake/BCMTest.cmake b/share/bcm/cmake/BCMTest.cmake index 6e68e5a..bc5938e 100644 --- a/share/bcm/cmake/BCMTest.cmake +++ b/share/bcm/cmake/BCMTest.cmake @@ -114,6 +114,15 @@ function(bcm_test) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "") file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PARSE_NAME}-test-run-${CONFIG}.cmake CONTENT " include(\"${CMAKE_BINARY_DIR}/bcm_set_rpath-$.cmake\") +if(CMAKE_CROSSCOMPILING) +foreach(RP \${RPATH}) + execute_process(COMMAND winepath -w \${RP} OUTPUT_VARIABLE _RPATH) + string(STRIP \"\${_RPATH}\" _RPATH) + set(ENV{WINEPATH} \"\${_RPATH};\$ENV{WINEPATH}\") +endforeach() +else() +set(ENV{PATH} \"\${RPATH};\$ENV{PATH}\") +endif() execute_process( COMMAND $ ${PARSE_ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -123,8 +132,7 @@ if(NOT RESULT EQUAL 0) endif() " CONDITION $) endforeach() - add_test(NAME ${PARSE_NAME} COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/${PARSE_NAME}-test-run-$.cmake) - # add_test(NAME ${PARSE_NAME} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${PARSE_NAME}${CMAKE_EXECUTABLE_SUFFIX} ${PARSE_ARGS}) + add_test(NAME ${PARSE_NAME} COMMAND ${CMAKE_COMMAND} -DCMAKE_CROSSCOMPILING=${CMAKE_CROSSCOMPILING} -P ${CMAKE_CURRENT_BINARY_DIR}/${PARSE_NAME}-test-run-$.cmake) else() add_test(NAME ${PARSE_NAME} COMMAND ${PARSE_NAME} ${PARSE_ARGS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endif() From 29b1c3015ece09e28f043b3787ed24c952d18d54 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 9 Oct 2017 17:48:50 -0500 Subject: [PATCH 2/2] Add comment --- share/bcm/cmake/BCMFuture.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/bcm/cmake/BCMFuture.cmake b/share/bcm/cmake/BCMFuture.cmake index 1593a78..aadae1e 100644 --- a/share/bcm/cmake/BCMFuture.cmake +++ b/share/bcm/cmake/BCMFuture.cmake @@ -47,7 +47,7 @@ macro(bcm_shadow_exists OUT TARGET) set(${OUT} "0") endif() endmacro() - +# Emulate rpath for windows if(WIN32) if(NOT COMMAND bcm_add_rpath) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES} "")