diff --git a/cpp/cmake_modules/BuildUtils.cmake b/cpp/cmake_modules/BuildUtils.cmake index 692efa78376f4..eb94563afcf77 100644 --- a/cpp/cmake_modules/BuildUtils.cmake +++ b/cpp/cmake_modules/BuildUtils.cmake @@ -97,23 +97,27 @@ function(arrow_create_merged_static_lib output_target) endforeach() if(APPLE) - # The apple-distributed libtool is what we want for bundling, but there is - # a GNU libtool that has a namecollision (and happens to be bundled with R, too). - # We are not compatible with GNU libtool, so we need to avoid it. - - # check in the obvious places first to find Apple's libtool - # HINTS is used before system paths and before PATHS, so we use that - # even though hard coded paths should go in PATHS - # TODO: use a VALIDATOR when we require cmake >= 3.25 - find_program(LIBTOOL_MACOS libtool HINTS /usr/bin - /Library/Developer/CommandLineTools/usr/bin) - - # confirm that the libtool we found is not GNU libtool + if(CMAKE_LIBTOOL) + set(LIBTOOL_MACOS ${CMAKE_LIBTOOL}) + else() + # The apple-distributed libtool is what we want for bundling, but there is + # a GNU libtool that has a namecollision (and happens to be bundled with R, too). + # We are not compatible with GNU libtool, so we need to avoid it. + + # check in the obvious places first to find Apple's libtool + # HINTS is used before system paths and before PATHS, so we use that + # even though hard coded paths should go in PATHS + # TODO: use a VALIDATOR when we require cmake >= 3.25 + find_program(LIBTOOL_MACOS libtool + HINTS /usr/bin /Library/Developer/CommandLineTools/usr/bin) + endif() + + # confirm that the libtool we found is Apple's libtool execute_process(COMMAND ${LIBTOOL_MACOS} -V OUTPUT_VARIABLE LIBTOOL_V_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT "${LIBTOOL_V_OUTPUT}" MATCHES ".*cctools-([0-9.]+).*") - message(FATAL_ERROR "libtool found appears to be the incompatible GNU libtool: ${LIBTOOL_MACOS}" + message(FATAL_ERROR "libtool found appears not to be Apple's libtool: ${LIBTOOL_MACOS}" ) endif()