diff --git a/cpp/cmake_modules/FindParquet.cmake b/cpp/cmake_modules/FindParquet.cmake index 0339ec56ae2..8bbe05f127f 100644 --- a/cpp/cmake_modules/FindParquet.cmake +++ b/cpp/cmake_modules/FindParquet.cmake @@ -60,8 +60,22 @@ if(PARQUET_HOME) PATHS ${PARQUET_HOME} NO_DEFAULT_PATH PATH_SUFFIXES "lib") get_filename_component(PARQUET_LIBS ${PARQUET_LIBRARIES} PATH ) - set(PARQUET_ABI_VERSION "1.0.0") - set(PARQUET_SO_VERSION "1") + + # Try to autodiscover the Parquet ABI version + get_filename_component(PARQUET_LIB_REALPATH ${PARQUET_LIBRARIES} REALPATH) + get_filename_component(PARQUET_EXT_REALPATH ${PARQUET_LIB_REALPATH} EXT) + string(REGEX MATCH ".([0-9]+.[0-9]+.[0-9]+)" HAS_ABI_VERSION ${PARQUET_EXT_REALPATH}) + if (HAS_ABI_VERSION) + if (APPLE) + string(REGEX REPLACE ".([0-9]+.[0-9]+.[0-9]+).dylib" "\\1" PARQUET_ABI_VERSION ${PARQUET_EXT_REALPATH}) + else() + string(REGEX REPLACE ".so.([0-9]+.[0-9]+.[0-9]+)" "\\1" PARQUET_ABI_VERSION ${PARQUET_EXT_REALPATH}) + endif() + string(REGEX REPLACE "([0-9]+).[0-9]+.[0-9]+" "\\1" PARQUET_SO_VERSION ${PARQUET_ABI_VERSION}) + else() + set(PARQUET_ABI_VERSION "1.0.0") + set(PARQUET_SO_VERSION "1") + endif() else() pkg_check_modules(PARQUET parquet) if (PARQUET_FOUND)