1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15+ # Build the gandiva library
16+ function (build_gandiva_lib TYPE )
17+ string (TOUPPER ${TYPE} TYPE_UPPER_CASE)
18+ add_library (gandiva_${TYPE} ${TYPE_UPPER_CASE} $<TARGET_OBJECTS :gandiva_obj_lib >)
19+
20+ target_include_directories (gandiva_${TYPE}
21+ PUBLIC
22+ $<INSTALL_INTERFACE :include >
23+ $<BUILD_INTERFACE :${CMAKE_SOURCE_DIR} /include >
24+ PRIVATE
25+ ${CMAKE_SOURCE_DIR} /src
26+ )
27+
28+ # ARROW is a public dependency i.e users of gandiva also will have a dependency on arrow.
29+ target_link_libraries (gandiva_${TYPE}
30+ PUBLIC
31+ ARROW::ARROW_${TYPE_UPPER_CASE}
32+ PRIVATE
33+ Boost::boost
34+ Boost::regex
35+ Boost::system
36+ Boost::filesystem
37+ LLVM::LLVM_INTERFACE )
38+
39+ # Set version for the library.
40+ set (GANDIVA_VERSION_MAJOR 0)
41+ set (GANDIVA_VERSION_MINOR 1)
42+ set (GANDIVA_VERSION_PATCH 0)
43+ set (GANDIVA_VERSION ${GANDIVA_VERSION_MAJOR} .${GANDIVA_VERSION_MINOR} .${GANDIVA_VERSION_PATCH} )
44+
45+ set_target_properties (gandiva_${TYPE} PROPERTIES
46+ VERSION ${GANDIVA_VERSION}
47+ SOVERSION ${GANDIVA_VERSION_MAJOR}
48+ OUTPUT_NAME gandiva
49+ )
50+ endfunction (build_gandiva_lib TYPE )
51+
1552# Add a unittest executable, with its dependencies.
1653function (add_gandiva_unit_test REL_TEST_NAME )
1754 get_filename_component (TEST_NAME ${REL_TEST_NAME} NAME_WE )
1855
1956 add_executable (${TEST_NAME} ${REL_TEST_NAME} ${ARGN} )
2057 if (${REL_TEST_NAME} MATCHES "llvm" )
2158 # If the unit test has llvm in its name, include llvm.
22- target_link_llvm (${TEST_NAME} PRIVATE )
59+ add_dependencies (${TEST_NAME} LLVM::LLVM_INTERFACE )
60+ target_link_libraries (${TEST_NAME} PRIVATE LLVM::LLVM_INTERFACE )
2361 endif ()
2462
2563 target_include_directories (${TEST_NAME} PRIVATE
2664 ${CMAKE_SOURCE_DIR} /include
2765 ${CMAKE_SOURCE_DIR} /src
2866 )
2967 target_link_libraries (${TEST_NAME}
30- PRIVATE ${ARROW_LIB } gtest_main Boost::boost
68+ PRIVATE ${ARROW_LIB_SHARED } gtest_main Boost::boost
3169 )
3270 add_test (NAME ${TEST_NAME} COMMAND ${TEST_NAME} )
3371 set_property (TEST ${TEST_NAME} PROPERTY LABELS unittest ${TEST_NAME} )
@@ -46,15 +84,15 @@ function(add_precompiled_unit_test REL_TEST_NAME)
4684endfunction (add_precompiled_unit_test REL_TEST_NAME )
4785
4886# Add an integ executable, with its dependencies.
49- function (add_gandiva_integ_test REL_TEST_NAME )
87+ function (add_gandiva_integ_test REL_TEST_NAME GANDIVA_LIB )
5088 get_filename_component (TEST_NAME ${REL_TEST_NAME} NAME_WE )
5189
52- add_executable (${TEST_NAME} ${REL_TEST_NAME} ${ARGN} )
53- target_include_directories (${TEST_NAME} PRIVATE ${CMAKE_SOURCE_DIR} )
54- target_link_libraries (${TEST_NAME} PRIVATE gandiva gtest_main )
90+ add_executable (${TEST_NAME} _${GANDIVA_LIB} ${REL_TEST_NAME} ${ARGN} )
91+ target_include_directories (${TEST_NAME} _${GANDIVA_LIB} PRIVATE ${CMAKE_SOURCE_DIR} )
92+ target_link_libraries (${TEST_NAME} _${GANDIVA_LIB} PRIVATE ${GANDIVA_LIB} gtest_main )
5593
56- add_test (NAME ${TEST_NAME} COMMAND ${TEST_NAME} )
57- set_property (TEST ${TEST_NAME} PROPERTY LABELS integ ${TEST_NAME} )
94+ add_test (NAME ${TEST_NAME} _${GANDIVA_LIB} COMMAND ${TEST_NAME} _${GANDIVA_LIB } )
95+ set_property (TEST ${TEST_NAME} _${GANDIVA_LIB} PROPERTY LABELS integ ${TEST_NAME} _${GANDIVA_LIB } )
5896endfunction (add_gandiva_integ_test REL_TEST_NAME )
5997
6098# Download and build external project.
0 commit comments