diff --git a/CMakeLists.txt b/CMakeLists.txt index 90cc25822e52aedeae8b69add032a8e80357651b..4f7df5ebaca28cc1c340846d796161fd2ae69667 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -290,4 +290,4 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BaseLib/BuildInfo.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/BaseLib/BuildInfo.cpp" @ONLY) include(scripts/cmake/MarkVariablesAdvanced.cmake) -include(scripts/cmake/packaging/GetDependencies.cmake) +unset(PRE_INSTALL_RUN CACHE) diff --git a/scripts/cmake/packaging/GetDependencies.cmake b/scripts/cmake/packaging/GetDependencies.cmake deleted file mode 100644 index 878ec3874f3081bdbcddd88543e83df4cd8f5dc3..0000000000000000000000000000000000000000 --- a/scripts/cmake/packaging/GetDependencies.cmake +++ /dev/null @@ -1,43 +0,0 @@ -foreach(TARGET ${INSTALL_DEPENDENCIES}) - - if(MSVC AND NOT CMAKE_GENERATOR STREQUAL "Ninja" ) - if(USE_CONAN) - set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/${TARGET}${CMAKE_EXECUTABLE_SUFFIX}) - else() - set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/Release/${TARGET}${CMAKE_EXECUTABLE_SUFFIX}) - endif() - else() - set(TARGET_EXE ${EXECUTABLE_OUTPUT_PATH}/${TARGET}${CMAKE_EXECUTABLE_SUFFIX}) - endif() - - if(EXISTS ${TARGET_EXE}) - include(GetPrerequisites) - # arg3: exclude system, arg4: recursive - if (VTK_BUILD_SHARED_LIBS) - list(APPEND dirs ${vtkIOXML_RUNTIME_LIBRARY_DIRS}) - endif() - list(APPEND dirs "/usr/local/lib") - get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES 1 1 "" ${dirs}) - if(PRE_INSTALL_RUN) - message("-- Dependencies of target ${TARGET}:") - endif() - foreach(DEPENDENCY ${TARGET_DEPENDENCIES}) - if(NOT ${DEPENDENCY} MATCHES "@loader_path") - gp_resolve_item("${TARGET_EXE}" "${DEPENDENCY}" "" "" DEPENDENCY_PATH) - get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH) - string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER) - set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH}) - if(PRE_INSTALL_RUN) - message(" ${RESOLVED_DEPENDENCY_PATH}") - endif() - endif() - endforeach() - if(PRE_INSTALL_RUN) - message("") - endif() - install(FILES ${DEPENDENCY_PATHS} DESTINATION bin) - endif() - -endforeach() - -unset(PRE_INSTALL_RUN CACHE) diff --git a/scripts/cmake/packaging/InstallDependencies.cmake b/scripts/cmake/packaging/InstallDependencies.cmake index 46e94625f7dcd4283fe1e386158326902dd93339..a3076119fb0c4216cc74343969807c757d5ec93a 100644 --- a/scripts/cmake/packaging/InstallDependencies.cmake +++ b/scripts/cmake/packaging/InstallDependencies.cmake @@ -1,4 +1,41 @@ -# Registers a target for installing its dependencies (dll / so files) macro(InstallDependencies TARGET) - set(INSTALL_DEPENDENCIES "${INSTALL_DEPENDENCIES};${TARGET}" CACHE INTERNAL "") + set(EXCLUDE_SYSTEM 1) + get_target_property(EXE_DIR ${TARGET} RUNTIME_OUTPUT_DIRECTORY) + set(TARGET_EXE ${EXE_DIR}/${TARGET}${CMAKE_EXECUTABLE_SUFFIX}) + + if(EXISTS ${TARGET_EXE}) + # Run CMake again after target was built to collect dependencies + add_custom_command(TARGET ${TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} . -DPRE_INSTALL_RUN=ON + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) + + include(GetPrerequisites) + # arg3: exclude system, arg4: recursive + if (VTK_BUILD_SHARED_LIBS) + list(APPEND dirs ${vtkIOXML_RUNTIME_LIBRARY_DIRS}) + endif() + list(APPEND dirs "/usr/local/lib") + get_prerequisites(${TARGET_EXE} TARGET_DEPENDENCIES ${EXCLUDE_SYSTEM} 1 "" ${dirs}) + if(PRE_INSTALL_RUN) + message("-- Dependencies of target ${TARGET}:") + endif() + foreach(DEPENDENCY ${TARGET_DEPENDENCIES}) + if(NOT ${DEPENDENCY} MATCHES "@loader_path") + gp_resolve_item("${TARGET_EXE}" "${DEPENDENCY}" "" "" DEPENDENCY_PATH) + get_filename_component(RESOLVED_DEPENDENCY_PATH "${DEPENDENCY_PATH}" REALPATH) + string(TOLOWER ${DEPENDENCY} DEPENDENCY_LOWER) + set(DEPENDENCY_PATHS ${DEPENDENCY_PATHS} ${RESOLVED_DEPENDENCY_PATH}) + if(PRE_INSTALL_RUN) + message(" ${RESOLVED_DEPENDENCY_PATH}") + endif() + endif() + endforeach() + if(PRE_INSTALL_RUN) + message("") + endif() + install(FILES ${DEPENDENCY_PATHS} DESTINATION bin) + endif() + endmacro() + diff --git a/scripts/cmake/packaging/package.cmd.in b/scripts/cmake/packaging/package.cmd.in deleted file mode 100644 index 1fe02f1d9b86c73ad2943ed1f7def8097ef76bdd..0000000000000000000000000000000000000000 --- a/scripts/cmake/packaging/package.cmd.in +++ /dev/null @@ -1,3 +0,0 @@ -cmake --build . --config Release -cmake -DPRE_INSTALL_RUN=ON . -cmake --build . --target package --config Release diff --git a/scripts/cmake/packaging/package.sh.in b/scripts/cmake/packaging/package.sh.in deleted file mode 100644 index cf6690c1f0341511ac939134f1e3014b6cc2ea42..0000000000000000000000000000000000000000 --- a/scripts/cmake/packaging/package.sh.in +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -cmake --build . --config Release -- -j ${NUM_PROCESSORS} -cmake -DPRE_INSTALL_RUN=ON . -cmake --build . --target package --config Release