@@ -45,6 +45,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
4545option (PAIMON_BUILD_STATIC "Build static library" ON )
4646option (PAIMON_BUILD_SHARED "Build shared library" ON )
4747option (PAIMON_BUILD_TESTS "Build tests" OFF )
48+ option (PAIMON_BUILD_BENCHMARKS "Build benchmarks" OFF )
4849option (PAIMON_USE_ASAN "Use Address Sanitizer" OFF )
4950option (PAIMON_USE_UBSAN "Use Undefined Behavior Sanitizer" OFF )
5051option (PAIMON_USE_CXX11_ABI "Use C++11 ABI" ON )
@@ -354,6 +355,29 @@ endif()
354355
355356set(ENV{PAIMON_TEST_DATA} " ${CMAKE_SOURCE_DIR } /test/test_data ")
356357
358+ if(PAIMON_BUILD_TESTS OR PAIMON_BUILD_BENCHMARKS)
359+ resolve_dependency(GTest)
360+ include_directories(SYSTEM ${GTEST_INCLUDE_DIR} )
361+
362+ paimon_link_libraries_whole_archive(PAIMON_LOCAL_FILE_SYSTEM_STATIC_LINK_LIBS
363+ paimon_local_file_system_static)
364+ paimon_link_libraries_no_as_needed(PAIMON_LOCAL_FILE_SYSTEM_SHARED_LINK_LIBS
365+ paimon_local_file_system_shared)
366+ paimon_link_libraries_whole_archive(PAIMON_BLOB_FILE_FORMAT_STATIC_LINK_LIBS
367+ paimon_blob_file_format_static)
368+ paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
369+ paimon_parquet_file_format_static)
370+
371+ if(PAIMON_ENABLE_ORC)
372+ paimon_link_libraries_whole_archive(PAIMON_ORC_FILE_FORMAT_STATIC_LINK_LIBS
373+ paimon_orc_file_format_static)
374+ endif()
375+ if(PAIMON_ENABLE_AVRO)
376+ paimon_link_libraries_whole_archive(PAIMON_AVRO_FILE_FORMAT_STATIC_LINK_LIBS
377+ paimon_avro_file_format_static)
378+ endif()
379+ endif()
380+
357381if(PAIMON_BUILD_TESTS)
358382 if(NOT PAIMON_ENABLE_ORC)
359383 message(FATAL_ERROR " PAIMON_ENABLE_ORC must be enabled if PAIMON_BUILD_TESTS is enable "
@@ -365,7 +389,6 @@ if(PAIMON_BUILD_TESTS)
365389 endif()
366390 # Adding unit tests part of the " paimon " portion of the test suite
367391 add_custom_target(paimon-tests)
368- resolve_dependency(GTest)
369392
370393 add_custom_target(unittest
371394 ctest
@@ -375,7 +398,6 @@ if(PAIMON_BUILD_TESTS)
375398 --output-on-failure)
376399 add_dependencies(unittest paimon-tests)
377400
378- include_directories(SYSTEM ${GTEST_INCLUDE_DIR} )
379401 include_directories(" ${CMAKE_SOURCE_DIR } /test/ ")
380402
381403 paimon_link_libraries_whole_archive(
@@ -388,15 +410,6 @@ if(PAIMON_BUILD_TESTS)
388410 TEST_PLUGIN_LINK_LIBS paimon_parquet_file_format_shared
389411 paimon_blob_file_format_shared)
390412 set(TEST_STATIC_LINK_LIBS ${TEST_WHOLE_ARCHIVE_LINK_LIBS} ${TEST_PLUGIN_LINK_LIBS} )
391- paimon_link_libraries_whole_archive(PAIMON_LOCAL_FILE_SYSTEM_STATIC_LINK_LIBS
392- paimon_local_file_system_static)
393- paimon_link_libraries_no_as_needed(PAIMON_LOCAL_FILE_SYSTEM_SHARED_LINK_LIBS
394- paimon_local_file_system_shared)
395- paimon_link_libraries_whole_archive(PAIMON_BLOB_FILE_FORMAT_STATIC_LINK_LIBS
396- paimon_blob_file_format_static)
397- paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
398- paimon_parquet_file_format_static)
399-
400413 if(PAIMON_ENABLE_LANCE)
401414 paimon_link_libraries_whole_archive(PAIMON_LANCE_FILE_FORMAT_STATIC_LINK_LIBS
402415 paimon_lance_file_format_static)
@@ -405,15 +418,11 @@ if(PAIMON_BUILD_TESTS)
405418 list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS} )
406419 endif()
407420 if(PAIMON_ENABLE_ORC)
408- paimon_link_libraries_whole_archive(PAIMON_ORC_FILE_FORMAT_STATIC_LINK_LIBS
409- paimon_orc_file_format_static)
410421 paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
411422 paimon_orc_file_format_shared)
412423 list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS} )
413424 endif()
414425 if(PAIMON_ENABLE_AVRO)
415- paimon_link_libraries_whole_archive(PAIMON_AVRO_FILE_FORMAT_STATIC_LINK_LIBS
416- paimon_avro_file_format_static)
417426 paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
418427 paimon_avro_file_format_shared)
419428 list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS} )
@@ -441,6 +450,19 @@ if(PAIMON_BUILD_TESTS)
441450 endif()
442451endif()
443452
453+ if(PAIMON_BUILD_BENCHMARKS)
454+ add_custom_target(paimon-benchmarks)
455+ add_custom_target(benchmark
456+ ctest
457+ -j4
458+ -L
459+ benchmark
460+ --output-on-failure)
461+ add_dependencies(benchmark paimon-benchmarks)
462+
463+ set(PAIMON_BENCHMARK_LINK_TOOLCHAIN benchmark::benchmark)
464+ endif()
465+
444466paimon_print_dependency_resolution_summary()
445467
446468include(CMakePackageConfigHelpers)
@@ -472,3 +494,6 @@ add_subdirectory(src/paimon/global_index/lucene)
472494add_subdirectory(src/paimon/testing/mock)
473495add_subdirectory(src/paimon/testing/utils)
474496add_subdirectory(test/inte)
497+ if(PAIMON_BUILD_BENCHMARKS)
498+ add_subdirectory(benchmark)
499+ endif()
0 commit comments