60 lines
2.7 KiB
Diff
60 lines
2.7 KiB
Diff
From f2b12a311d1a14ab5d9f67428201e1389748a9c1 Mon Sep 17 00:00:00 2001
|
|
From: Tom Jakubowski <tom@prospective.dev>
|
|
Date: Fri, 11 Oct 2024 12:23:29 -0700
|
|
Subject: [PATCH] GH-44384: [C++] Use CMAKE_LIBTOOL on macOS
|
|
|
|
When a builder sets `CMAKE_LIBTOOL`, use that as the program to bundle
|
|
dependencies. This matches the behavior of the Windows build.
|
|
|
|
Also make a nitpicky minor update to the error message when a non-Apple
|
|
libtool is detected.
|
|
---
|
|
cpp/cmake_modules/BuildUtils.cmake | 30 +++++++++++++++++-------------
|
|
1 file changed, 17 insertions(+), 13 deletions(-)
|
|
|
|
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()
|
|
|