summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2010-09-08 15:08:22 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2010-09-08 15:08:22 (GMT)
commit18c71e3c79560f4577b7edb2910bfcac7cd0bfef (patch)
tree58f953ec08e71bf34d325dd02105da2b39d9e344
parent795676062e4e6ddb4d471c42063b190b51507cea (diff)
parente93a4b4d3421ced7b8c852b76c0dcb427f798df8 (diff)
downloadCMake-18c71e3c79560f4577b7edb2910bfcac7cd0bfef.zip
CMake-18c71e3c79560f4577b7edb2910bfcac7cd0bfef.tar.gz
CMake-18c71e3c79560f4577b7edb2910bfcac7cd0bfef.tar.bz2
Merge topic 'fix-10417'
e93a4b4 Avoid adding self as prerequisite. (#10417)
-rw-r--r--Modules/BundleUtilities.cmake2
-rw-r--r--Modules/GetPrerequisites.cmake25
2 files changed, 24 insertions, 3 deletions
diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake
index fad3b78..c7ead5b 100644
--- a/Modules/BundleUtilities.cmake
+++ b/Modules/BundleUtilities.cmake
@@ -415,7 +415,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)