Skip to content

Commit b05cf08

Browse files
committed
Get Python build and tests for Gandiva working on, add to Appveyor build
1 parent 27ff2b3 commit b05cf08

File tree

9 files changed

+67
-14
lines changed

9 files changed

+67
-14
lines changed

ci/appveyor-cpp-build.bat

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ set ARROW_LLVM_VERSION=6.0.1
108108

109109
if "%ARROW_BUILD_GANDIVA%" == "ON" (
110110
@rem Install llvmdev in the toolchain if building gandiva.dll
111-
conda install -q -y llvmdev=%ARROW_LLVM_VERSION% || exit /B
111+
conda install -q -y llvmdev=%ARROW_LLVM_VERSION% ^
112+
clangdev=%ARROW_LLVM_VERSION% -c conda-forge || exit /B
112113
)
113114

114115
@rem Use Boost from Anaconda

ci/cpp-msvc-build-main.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ set PYARROW_BUNDLE_ARROW_CPP=ON
8585
set PYARROW_BUNDLE_BOOST=OFF
8686
set PYARROW_WITH_STATIC_BOOST=ON
8787
set PYARROW_WITH_PARQUET=ON
88+
set PYARROW_WITH_GANDIVA=%ARROW_BUILD_GANDIVA%
8889
set PYARROW_PARALLEL=2
8990

9091
@rem ARROW-3075; pkgconfig is broken for Parquet for now

cpp/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,10 @@ Note that this requires linking Boost statically"
311311
# Windows options
312312

313313
if (MSVC)
314+
option(MSVC_LINK_VERBOSE
315+
"Pass verbose linking options when linking libraries and executables"
316+
on)
317+
314318
option(ARROW_USE_CLCACHE
315319
"Use clcache if available"
316320
ON)

cpp/cmake_modules/FindGandiva.cmake

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ else()
4545
${GANDIVA_HOME}/include
4646
)
4747

48-
set(GANDIVA_SEARCH_LIB_PATH
49-
${GANDIVA_HOME}/lib
50-
)
48+
set(GANDIVA_SEARCH_LIB_PATH "${GANDIVA_HOME}")
5149

5250
find_path(GANDIVA_INCLUDE_DIR gandiva/expression_registry.h PATHS
5351
${GANDIVA_SEARCH_HEADER_PATHS}
@@ -57,18 +55,30 @@ else()
5755
endif()
5856

5957
find_library(GANDIVA_LIB_PATH NAMES gandiva
60-
PATHS
61-
${GANDIVA_SEARCH_LIB_PATH}
62-
NO_DEFAULT_PATH)
58+
PATHS ${GANDIVA_SEARCH_LIB_PATH}
59+
NO_DEFAULT_PATH
60+
PATH_SUFFIXES "lib")
6361
get_filename_component(GANDIVA_LIBS ${GANDIVA_LIB_PATH} DIRECTORY)
6462

65-
if (GANDIVA_INCLUDE_DIR AND GANDIVA_LIBS)
63+
find_library(GANDIVA_SHARED_LIB_PATH NAMES gandiva
64+
PATHS ${GANDIVA_SEARCH_LIB_PATH}
65+
NO_DEFAULT_PATH
66+
PATH_SUFFIXES "bin" )
67+
68+
get_filename_component(GANDIVA_SHARED_LIBS ${GANDIVA_SHARED_LIB_PATH} PATH )
69+
70+
if (GANDIVA_INCLUDE_DIR AND GANDIVA_LIBS AND GANDIVA_SHARED_LIBS)
6671
set(GANDIVA_FOUND TRUE)
6772
set(GANDIVA_LIB_NAME gandiva)
6873

69-
set(GANDIVA_STATIC_LIB ${GANDIVA_LIBS}/lib${GANDIVA_LIB_NAME}.a)
70-
71-
set(GANDIVA_SHARED_LIB ${GANDIVA_LIBS}/lib${GANDIVA_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
74+
if (MSVC)
75+
set(GANDIVA_STATIC_LIB "${GANDIVA_LIBS}/${GANDIVA_LIB_NAME}${GANDIVA_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}")
76+
set(GANDIVA_SHARED_LIB "${GANDIVA_SHARED_LIBS}/${GANDIVA_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
77+
set(GANDIVA_SHARED_IMP_LIB "${GANDIVA_LIBS}/${GANDIVA_LIB_NAME}.lib")
78+
else()
79+
set(GANDIVA_STATIC_LIB ${GANDIVA_LIBS}/${CMAKE_STATIC_LIBRARY_PREFIX}${GANDIVA_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
80+
set(GANDIVA_SHARED_LIB ${GANDIVA_SHARED_LIBS}/${CMAKE_SHARED_LIBRARY_PREFIX}${GANDIVA_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
81+
endif()
7282
endif()
7383

7484
if (GANDIVA_FOUND)

cpp/cmake_modules/FindParquet.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ if(NOT "$ENV{PARQUET_HOME}" STREQUAL "")
3030
set(PARQUET_HOME "$ENV{PARQUET_HOME}")
3131
endif()
3232

33+
if(NOT "$ENV{ARROW_HOME}" STREQUAL "")
34+
set(ARROW_HOME "$ENV{ARROW_HOME}")
35+
endif()
36+
3337
if (MSVC)
3438
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
3539

@@ -38,7 +42,8 @@ if (MSVC)
3842
endif()
3943

4044
find_library(PARQUET_SHARED_LIBRARIES NAMES parquet
41-
PATHS ${PARQUET_HOME} NO_DEFAULT_PATH
45+
PATHS ${PARQUET_HOME} ${ARROW_HOME}
46+
NO_DEFAULT_PATH
4247
PATH_SUFFIXES "bin" )
4348

4449
get_filename_component(PARQUET_SHARED_LIBS ${PARQUET_SHARED_LIBRARIES} PATH )

cpp/cmake_modules/SetupCxxFlags.cmake

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,3 +411,21 @@ else()
411411
endif()
412412

413413
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
414+
415+
# ----------------------------------------------------------------------
416+
# MSVC-specific linker options
417+
418+
set(MSVC_LINKER_FLAGS)
419+
420+
if (MSVC_LINK_VERBOSE)
421+
set(MSVC_LINKER_FLAGS "${MSVC_LINKER_FLAGS} /VERBOSE:LIB")
422+
endif()
423+
424+
set(MSVC_LINKER_FLAGS "${MSVC_LINKER_FLAGS} /NODEFAULTLIB:LIBCMT")
425+
426+
set(CMAKE_EXE_LINKER_FLAGS
427+
"${CMAKE_EXE_LINKER_FLAGS} ${MSVC_LINKER_FLAGS}")
428+
set(CMAKE_MODULE_LINKER_FLAGS
429+
"${CMAKE_MODULE_LINKER_FLAGS} ${MSVC_LINKER_FLAGS}")
430+
set(CMAKE_SHARED_LINKER_FLAGS
431+
"${CMAKE_SHARED_LINKER_FLAGS} ${MSVC_LINKER_FLAGS}")

cpp/src/gandiva/expression_registry.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class GANDIVA_EXPORT ExpressionRegistry {
6363
std::unique_ptr<FunctionRegistry> function_registry_;
6464
};
6565

66+
GANDIVA_EXPORT
6667
std::vector<std::shared_ptr<FunctionSignature>> GetRegisteredFunctionSignatures();
6768

6869
} // namespace gandiva

docs/source/python/development.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,8 @@ Now, we build and install Arrow C++ libraries
325325
cmake --build . --target INSTALL --config Release
326326
cd ..\..
327327
328+
If building with LLVM, also add `-DARROW_GANDIVA=ON`.
329+
328330
After that, we must put the install directory's bin path in our ``%PATH%``:
329331

330332
.. code-block:: shell

python/CMakeLists.txt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,12 +517,23 @@ if (PYARROW_BUILD_GANDIVA)
517517
bundle_arrow_lib(GANDIVA_SHARED_LIB
518518
ABI_VERSION ${ARROW_ABI_VERSION}
519519
SO_VERSION ${ARROW_SO_VERSION})
520+
521+
if (MSVC)
522+
bundle_arrow_implib(GANDIVA_SHARED_IMP_LIB)
523+
endif()
524+
endif()
525+
526+
if (MSVC)
527+
ADD_THIRDPARTY_LIB(gandiva
528+
SHARED_LIB ${GANDIVA_SHARED_IMP_LIB})
529+
else()
530+
ADD_THIRDPARTY_LIB(gandiva
531+
SHARED_LIB ${GANDIVA_SHARED_LIB})
520532
endif()
521533

522534
set(LINK_LIBS
523535
${LINK_LIBS}
524-
${GANDIVA_SHARED_LIB})
525-
536+
gandiva_shared)
526537
set(CYTHON_EXTENSIONS ${CYTHON_EXTENSIONS} gandiva)
527538
endif()
528539

0 commit comments

Comments
 (0)