Merge topic 'GetPrerequisites-objdump'

12fb50d GetPrerequisites: Add documentation for objdump
8eb2fe9 GetPrerequisites: Enable test for BundleUtilities on MinGW
33c94c8 GetPrerequisites: Add support for objdump
5260a86 GetPrerequisites: Move tool search paths up
This commit is contained in:
Brad King 2013-03-04 15:40:24 -05:00 committed by CMake Topic Stage
commit e162d88fbb
2 changed files with 38 additions and 19 deletions

View File

@ -5,6 +5,7 @@
# #
# It uses various tools to obtain the list of required shared library files: # It uses various tools to obtain the list of required shared library files:
# dumpbin (Windows) # dumpbin (Windows)
# objdump (MinGW on Windows)
# ldd (Linux/Unix) # ldd (Linux/Unix)
# otool (Mac OSX) # otool (Mac OSX)
# The following functions are provided by this module: # The following functions are provided by this module:
@ -567,6 +568,17 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa
message("warning: target '${target}' does not exist...") message("warning: target '${target}' does not exist...")
endif() endif()
set(gp_cmd_paths ${gp_cmd_paths}
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
"C:/Program Files/Microsoft Visual Studio 8/VC/BIN"
"C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN"
"C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN"
"C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN"
"/usr/local/bin"
"/usr/bin"
)
# <setup-gp_tool-vars> # <setup-gp_tool-vars>
# #
# Try to choose the right tool by default. Caller can set gp_tool prior to # Try to choose the right tool by default. Caller can set gp_tool prior to
@ -574,14 +586,28 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa
# #
if("${gp_tool}" STREQUAL "") if("${gp_tool}" STREQUAL "")
set(gp_tool "ldd") set(gp_tool "ldd")
if(APPLE) if(APPLE)
set(gp_tool "otool") set(gp_tool "otool")
endif() endif()
if(WIN32 AND NOT UNIX) # This is how to check for cygwin, har! if(WIN32 AND NOT UNIX) # This is how to check for cygwin, har!
set(gp_tool "dumpbin") find_program(gp_dumpbin "dumpbin" PATHS ${gp_cmd_paths})
if(gp_dumpbin)
set(gp_tool "dumpbin")
else() # Try harder. Maybe we're on MinGW
set(gp_tool "objdump")
endif()
endif() endif()
endif() endif()
find_program(gp_cmd ${gp_tool} PATHS ${gp_cmd_paths})
if(NOT gp_cmd)
message(STATUS "warning: could not find '${gp_tool}' - cannot analyze prerequisites...")
return()
endif()
set(gp_tool_known 0) set(gp_tool_known 0)
if("${gp_tool}" STREQUAL "ldd") if("${gp_tool}" STREQUAL "ldd")
@ -612,30 +638,22 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa
set(ENV{VS_UNICODE_OUTPUT} "") # Block extra output from inside VS IDE. set(ENV{VS_UNICODE_OUTPUT} "") # Block extra output from inside VS IDE.
endif() endif()
if("${gp_tool}" STREQUAL "objdump")
set(gp_cmd_args "-p")
set(gp_regex "^\t*DLL Name: (.*\\.[Dd][Ll][Ll])${eol_char}$")
set(gp_regex_error "")
set(gp_regex_fallback "")
set(gp_regex_cmp_count 1)
set(gp_tool_known 1)
endif()
if(NOT gp_tool_known) if(NOT gp_tool_known)
message(STATUS "warning: gp_tool='${gp_tool}' is an unknown tool...") message(STATUS "warning: gp_tool='${gp_tool}' is an unknown tool...")
message(STATUS "CMake function get_prerequisites needs more code to handle '${gp_tool}'") message(STATUS "CMake function get_prerequisites needs more code to handle '${gp_tool}'")
message(STATUS "Valid gp_tool values are dumpbin, ldd and otool.") message(STATUS "Valid gp_tool values are dumpbin, ldd, objdump and otool.")
return() return()
endif() endif()
set(gp_cmd_paths ${gp_cmd_paths}
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
"C:/Program Files/Microsoft Visual Studio 8/VC/BIN"
"C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN"
"C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN"
"C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN"
"/usr/local/bin"
"/usr/bin"
)
find_program(gp_cmd ${gp_tool} PATHS ${gp_cmd_paths})
if(NOT gp_cmd)
message(STATUS "warning: could not find '${gp_tool}' - cannot analyze prerequisites...")
return()
endif()
if("${gp_tool}" STREQUAL "dumpbin") if("${gp_tool}" STREQUAL "dumpbin")
# When running dumpbin, it also needs the "Common7/IDE" directory in the # When running dumpbin, it also needs the "Common7/IDE" directory in the

View File

@ -287,6 +287,7 @@ if(BUILD_TESTING)
# run test for BundleUtilities on supported platforms/compilers # run test for BundleUtilities on supported platforms/compilers
if(MSVC OR if(MSVC OR
MINGW OR
CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Linux" OR
CMAKE_SYSTEM_NAME MATCHES "Darwin") CMAKE_SYSTEM_NAME MATCHES "Darwin")
if(NOT "${CMAKE_TEST_GENERATOR}" STREQUAL "Watcom WMake") if(NOT "${CMAKE_TEST_GENERATOR}" STREQUAL "Watcom WMake")