@@ -61,7 +61,7 @@ github_actions_group_begin "Building Arrow C++ libraries"
6161install_dir=" ${build_dir} /cpp-install"
6262: " ${ARROW_ACERO:= ON} "
6363export ARROW_ACERO
64- : " ${ARROW_BUILD_TESTS:= ON } "
64+ : " ${ARROW_BUILD_TESTS:= OFF } "
6565export ARROW_BUILD_TESTS
6666: " ${ARROW_DATASET:= ON} "
6767export ARROW_DATASET
@@ -78,6 +78,55 @@ export ARROW_TEST_DATA="${arrow_dir}/testing/data"
7878export PARQUET_TEST_DATA=" ${arrow_dir} /cpp/submodules/parquet-testing/data"
7979export AWS_EC2_METADATA_DISABLED=TRUE
8080
81+ # Determine vcpkg triplet based on architecture
82+ vcpkg_arch=" $( arch) "
83+ case " ${vcpkg_arch} " in
84+ arm64)
85+ vcpkg_triplet=" arm64-osx"
86+ ;;
87+ i386 | x86_64)
88+ vcpkg_triplet=" x64-osx"
89+ ;;
90+ * )
91+ vcpkg_triplet=" arm64-osx"
92+ ;;
93+ esac
94+
95+ # Set LLVM_DIR to point to vcpkg-installed LLVM if VCPKG_ROOT_LOCAL is set
96+ llvm_dir_arg=" "
97+ gandiva_cxx_flags=" "
98+ osx_sysroot_arg=" "
99+ re2_source_arg=" -Dre2_SOURCE=BUNDLED"
100+ if [ -n " ${VCPKG_ROOT_LOCAL:- } " ]; then
101+ vcpkg_installed=" ${VCPKG_ROOT_LOCAL} /installed/${vcpkg_triplet} "
102+ llvm_cmake_dir=" ${vcpkg_installed} /share/llvm"
103+ if [ -d " ${llvm_cmake_dir} " ]; then
104+ llvm_dir_arg=" -DLLVM_DIR=${llvm_cmake_dir} "
105+
106+ # vcpkg's clang needs to know where to find system headers
107+ # Arrow's GandivaAddBitcode.cmake uses CMAKE_OSX_SYSROOT to set SDKROOT env var
108+ sdk_path=" $( xcrun --show-sdk-path) "
109+ if [ -d " ${sdk_path} " ]; then
110+ osx_sysroot_arg=" -DCMAKE_OSX_SYSROOT=${sdk_path} "
111+ fi
112+
113+ # Also pass the C++ standard library include path via ARROW_GANDIVA_PC_CXX_FLAGS
114+ xcode_path=" $( xcode-select -p) "
115+ cxx_include_path=" ${xcode_path} /Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1"
116+ if [ -d " ${cxx_include_path} " ]; then
117+ gandiva_cxx_flags=" -DARROW_GANDIVA_PC_CXX_FLAGS=-stdlib=libc++;-isystem;${cxx_include_path} "
118+ fi
119+
120+ # Use vcpkg's RE2 since it's installed as a dependency of LLVM
121+ # This ensures ABI compatibility - vcpkg's RE2 uses std::string_view API
122+ # which matches what vcpkg's LLVM and Abseil expect
123+ re2_cmake_dir=" ${vcpkg_installed} /share/re2"
124+ if [ -d " ${re2_cmake_dir} " ]; then
125+ re2_source_arg=" -Dre2_ROOT=${vcpkg_installed} "
126+ fi
127+ fi
128+ fi
129+
81130cmake \
82131 -S " ${arrow_dir} /cpp" \
83132 -B " ${build_dir} /cpp" \
@@ -100,10 +149,13 @@ cmake \
100149 -DCMAKE_INSTALL_PREFIX=" ${install_dir} " \
101150 -DCMAKE_UNITY_BUILD=" ${CMAKE_UNITY_BUILD} " \
102151 -DGTest_SOURCE=BUNDLED \
152+ " ${llvm_dir_arg} " \
153+ " ${osx_sysroot_arg} " \
154+ " ${gandiva_cxx_flags} " \
103155 -DPARQUET_BUILD_EXAMPLES=OFF \
104156 -DPARQUET_BUILD_EXECUTABLES=OFF \
105157 -DPARQUET_REQUIRE_ENCRYPTION=OFF \
106- -Dre2_SOURCE=BUNDLED \
158+ " ${re2_source_arg} " \
107159 -GNinja
108160cmake --build " ${build_dir} /cpp" --target install
109161github_actions_group_end
@@ -125,7 +177,27 @@ if [ "${ARROW_RUN_TESTS:-}" == "ON" ]; then
125177 github_actions_group_end
126178fi
127179
128- export JAVA_JNI_CMAKE_ARGS=" -DProtobuf_ROOT=${build_dir} /cpp/protobuf_ep-install"
180+ # Pass paths to dependencies so the JNI build can find them
181+ # Build up the JNI CMake args based on what's available
182+ jni_cmake_args=" ${llvm_dir_arg} "
183+
184+ # Add Protobuf path if bundled, otherwise CMake will find system Protobuf
185+ if [ -d " ${build_dir} /cpp/protobuf_ep-install" ]; then
186+ jni_cmake_args=" ${jni_cmake_args} -DProtobuf_ROOT=${build_dir} /cpp/protobuf_ep-install"
187+ fi
188+
189+ # RE2 path for the JNI build - prefer vcpkg's RE2 if we used it for the C++ build,
190+ # otherwise fall back to bundled RE2 if available
191+ if [ -n " ${VCPKG_ROOT_LOCAL:- } " ]; then
192+ vcpkg_re2_dir=" ${VCPKG_ROOT_LOCAL} /installed/${vcpkg_triplet} "
193+ if [ -d " ${vcpkg_re2_dir} /share/re2" ]; then
194+ jni_cmake_args=" ${jni_cmake_args} -Dre2_ROOT=${vcpkg_re2_dir} "
195+ fi
196+ elif [ -d " ${build_dir} /cpp/re2_ep-install" ]; then
197+ jni_cmake_args=" ${jni_cmake_args} -Dre2_ROOT=${build_dir} /cpp/re2_ep-install"
198+ fi
199+
200+ export JAVA_JNI_CMAKE_ARGS=" ${jni_cmake_args} "
129201" ${source_dir} /ci/scripts/jni_build.sh" \
130202 " ${source_dir} " \
131203 " ${install_dir} " \
@@ -153,6 +225,7 @@ archery linking check-dependencies \
153225 --allow libncurses \
154226 --allow libobjc \
155227 --allow libz \
228+ --allow libz3 \
156229 " arrow_cdata_jni/${normalized_arch} /libarrow_cdata_jni.dylib" \
157230 " arrow_dataset_jni/${normalized_arch} /libarrow_dataset_jni.dylib" \
158231 " arrow_orc_jni/${normalized_arch} /libarrow_orc_jni.dylib" \
0 commit comments