kou commented on a change in pull request #10614:
URL: https://github.com/apache/arrow/pull/10614#discussion_r666514068
##########
File path: matlab/CMakeLists.txt
##########
@@ -32,8 +110,29 @@ endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules)
-# Arrow is Required
-find_package(Arrow REQUIRED)
+# Only build the MATLAB interface C++ tests if MATLAB_BUILD_TESTS=ON.
+if(MATLAB_BUILD_TESTS)
+ # Should support custom GTEST_ROOT as well as package managers.
Review comment:
Ah, sorry for my misunderstanding.
##########
File path: matlab/CMakeLists.txt
##########
@@ -17,13 +17,95 @@
cmake_minimum_required(VERSION 3.20)
+# Build the Arrow C++ libraries.
+function(build_arrow)
+ set(options BUILD_GTEST)
+ set(one_value_args)
+ set(multi_value_args)
+ cmake_parse_arguments(ARG
+ "${options}"
+ "${one_value_args}"
+ "${multi_value_args}"
+ ${ARGN})
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
+ endif()
+
+ set(ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-prefix")
+ set(ARROW_INCLUDE_DIR "${ARROW_PREFIX}/include")
+ set(ARROW_LIBRARY_DIR "${ARROW_PREFIX}/lib")
+ set(ARROW_SHARED_LIB
+
"${ARROW_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}arrow${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ )
+ set(ARROW_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-build")
+ set(ARROW_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${ARROW_PREFIX}"
+ "-DCMAKE_INSTALL_LIBDIR=lib")
+ set(ARROW_BUILD_BYPRODUCTS "${ARROW_SHARED_LIB}")
+
+ if(ARG_BUILD_GTEST)
+ build_gtest()
+ endif()
+
+ include(ExternalProject)
+ externalproject_add(arrow_ep
+ SOURCE_DIR "${CMAKE_SOURCE_DIR}/../cpp"
+ BINARY_DIR "${ARROW_BINARY_DIR}"
+ CMAKE_ARGS ${ARROW_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${ARROW_BUILD_BYPRODUCTS})
+
+ file(MAKE_DIRECTORY "${ARROW_INCLUDE_DIR}")
+
+ add_library(arrow_shared SHARED IMPORTED)
+ set_target_properties(arrow_shared
+ PROPERTIES IMPORTED_LOCATION ${ARROW_SHARED_LIB}
+ INTERFACE_INCLUDE_DIRECTORIES
${ARROW_INCLUDE_DIR})
+
+ add_dependencies(arrow_shared arrow_ep)
+endfunction()
+
+# Build the GoogleTest binaries that are bundled with the Arrow C++ libraries.
+macro(build_gtest)
+ set(ARROW_GTEST_PREFIX "${ARROW_BINARY_DIR}/googletest_ep-prefix")
+ set(ARROW_GTEST_INCLUDE_DIR "${ARROW_GTEST_PREFIX}/include")
+ set(ARROW_GTEST_LIBRARY_DIR "${ARROW_GTEST_PREFIX}/lib")
+ set(ARROW_GTEST_SHARED_LIB "${ARROW_GTEST_LIBRARY_DIR}/libgtest.so")
+
+ set(ARROW_GTEST_MAIN_PREFIX "${ARROW_BINARY_DIR}/googletest_ep-prefix")
+ set(ARROW_GTEST_MAIN_INCLUDE_DIR "${ARROW_GTEST_MAIN_PREFIX}/include")
+ set(ARROW_GTEST_MAIN_LIBRARY_DIR "${ARROW_GTEST_MAIN_PREFIX}/lib")
+ set(ARROW_GTEST_MAIN_SHARED_LIB
"${ARROW_GTEST_MAIN_LIBRARY_DIR}/libgtest_main.so")
Review comment:
```suggestion
set(ARROW_GTEST_MAIN_SHARED_LIB
"${ARROW_GTEST_MAIN_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}gtest_main${CMAKE_SHARED_LIBRARY_SUFFIX}")
```
##########
File path: matlab/CMakeLists.txt
##########
@@ -17,13 +17,95 @@
cmake_minimum_required(VERSION 3.20)
+# Build the Arrow C++ libraries.
+function(build_arrow)
+ set(options BUILD_GTEST)
+ set(one_value_args)
+ set(multi_value_args)
+ cmake_parse_arguments(ARG
+ "${options}"
+ "${one_value_args}"
+ "${multi_value_args}"
+ ${ARGN})
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(SEND_ERROR "Error: unrecognized arguments:
${ARG_UNPARSED_ARGUMENTS}")
+ endif()
+
+ set(ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-prefix")
+ set(ARROW_INCLUDE_DIR "${ARROW_PREFIX}/include")
+ set(ARROW_LIBRARY_DIR "${ARROW_PREFIX}/lib")
+ set(ARROW_SHARED_LIB
+
"${ARROW_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}arrow${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ )
+ set(ARROW_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep-build")
+ set(ARROW_CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${ARROW_PREFIX}"
+ "-DCMAKE_INSTALL_LIBDIR=lib")
+ set(ARROW_BUILD_BYPRODUCTS "${ARROW_SHARED_LIB}")
+
+ if(ARG_BUILD_GTEST)
+ build_gtest()
+ endif()
+
+ include(ExternalProject)
+ externalproject_add(arrow_ep
+ SOURCE_DIR "${CMAKE_SOURCE_DIR}/../cpp"
+ BINARY_DIR "${ARROW_BINARY_DIR}"
+ CMAKE_ARGS ${ARROW_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${ARROW_BUILD_BYPRODUCTS})
+
+ file(MAKE_DIRECTORY "${ARROW_INCLUDE_DIR}")
+
+ add_library(arrow_shared SHARED IMPORTED)
+ set_target_properties(arrow_shared
+ PROPERTIES IMPORTED_LOCATION ${ARROW_SHARED_LIB}
+ INTERFACE_INCLUDE_DIRECTORIES
${ARROW_INCLUDE_DIR})
+
+ add_dependencies(arrow_shared arrow_ep)
+endfunction()
+
+# Build the GoogleTest binaries that are bundled with the Arrow C++ libraries.
+macro(build_gtest)
+ set(ARROW_GTEST_PREFIX "${ARROW_BINARY_DIR}/googletest_ep-prefix")
+ set(ARROW_GTEST_INCLUDE_DIR "${ARROW_GTEST_PREFIX}/include")
+ set(ARROW_GTEST_LIBRARY_DIR "${ARROW_GTEST_PREFIX}/lib")
+ set(ARROW_GTEST_SHARED_LIB "${ARROW_GTEST_LIBRARY_DIR}/libgtest.so")
Review comment:
```suggestion
set(ARROW_GTEST_SHARED_LIB
"${ARROW_GTEST_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}gtest${CMAKE_SHARED_LIBRARY_SUFFIX}")
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]