From e93a4b4d3421ced7b8c852b76c0dcb427f798df8 Mon Sep 17 00:00:00 2001 From: David Cole Date: Tue, 7 Sep 2010 21:29:43 -0400 Subject: [PATCH] Avoid adding self as prerequisite. (#10417) Thanks to Clinton Stimpson for the patch. --- Modules/BundleUtilities.cmake | 2 +- Modules/GetPrerequisites.cmake | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake index b48c61eab..b4755f143 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 847db347b..c83da4f81 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)