diff options
author | David Cole <david.cole@kitware.com> | 2010-09-08 01:29:43 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2010-09-08 01:29:43 (GMT) |
commit | e93a4b4d3421ced7b8c852b76c0dcb427f798df8 (patch) | |
tree | 93be3db53d58948295ef2e8c38da023b5b979019 | |
parent | 409c936ff44eb6aa82c052dc223adaa630242b23 (diff) | |
download | CMake-e93a4b4d3421ced7b8c852b76c0dcb427f798df8.zip CMake-e93a4b4d3421ced7b8c852b76c0dcb427f798df8.tar.gz CMake-e93a4b4d3421ced7b8c852b76c0dcb427f798df8.tar.bz2 |
Avoid adding self as prerequisite. (#10417)
Thanks to Clinton Stimpson for the patch.
-rw-r--r-- | Modules/BundleUtilities.cmake | 2 | ||||
-rw-r--r-- | Modules/GetPrerequisites.cmake | 25 |
2 files changed, 24 insertions, 3 deletions
diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake index b48c61e..b4755f1 100644 --- a/Modules/BundleUtilities.cmake +++ b/Modules/BundleUtilities.cmake @@ -412,7 +412,7 @@ function(get_bundle_keys app libs dirs keys_var) # but that do not show up in otool -L output...) # foreach(lib ${libs}) - set_bundle_key_values(${keys_var} "${lib}" "${lib}" "${exepath}" "${dirs}" 1) + set_bundle_key_values(${keys_var} "${lib}" "${lib}" "${exepath}" "${dirs}" 0) set(prereqs "") get_prerequisites("${lib}" prereqs 1 1 "${exepath}" "${dirs}") diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index 847db34..c83da4f 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -634,6 +634,23 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa string(REGEX REPLACE ";" "\\\\;" candidates "${gp_cmd_ov}") string(REGEX REPLACE "\n" "${eol_char};" candidates "${candidates}") + # check for install id and remove it from list, since otool -L can include a + # reference to itself + set(gp_install_id) + if("${gp_tool}" STREQUAL "otool") + execute_process( + COMMAND otool -D ${target} + OUTPUT_VARIABLE gp_install_id_ov + ) + # second line is install name + string(REGEX REPLACE ".*:\n" "" gp_install_id "${gp_install_id_ov}") + if(gp_install_id) + # trim + string(REGEX MATCH "[^\n ].*[^\n ]" gp_install_id "${gp_install_id}") + #message("INSTALL ID is \"${gp_install_id}\"") + endif(gp_install_id) + endif("${gp_tool}" STREQUAL "otool") + # Analyze each line for file names that match the regular expression: # foreach(candidate ${candidates}) @@ -670,14 +687,18 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa # set(add_item 1) - if(${exclude_system}) + if("${item}" STREQUAL "${gp_install_id}") + set(add_item 0) + endif("${item}" STREQUAL "${gp_install_id}") + + if(add_item AND ${exclude_system}) set(type "") gp_resolved_file_type("${target}" "${item}" "${exepath}" "${dirs}" type) if("${type}" STREQUAL "system") set(add_item 0) endif("${type}" STREQUAL "system") - endif(${exclude_system}) + endif(add_item AND ${exclude_system}) if(add_item) list(LENGTH ${prerequisites_var} list_length_before_append) |