@@ -52,8 +52,15 @@ option(PAIMON_ENABLE_AVRO "Whether to enable avro file format" ON)
5252option (PAIMON_ENABLE_ORC "Whether to enable orc file format" ON )
5353option (PAIMON_ENABLE_LANCE "Whether to enable lance file format" OFF )
5454option (PAIMON_ENABLE_JINDO "Whether to enable jindo file system" OFF )
55- option (PAIMON_ENABLE_LUMINA "Whether to enable lumina vector index" ON )
56- option (PAIMON_ENABLE_LUCENE "Whether to enable lucene index" ON )
55+ option (PAIMON_ENABLE_LUMINA "Whether to enable lumina vector index" OFF )
56+ option (PAIMON_ENABLE_LUCENE "Whether to enable lucene index" OFF )
57+ option (PAIMON_ENABLE_MACOS "Whether to enable experimental macOS support" OFF )
58+
59+ if (APPLE )
60+ if (NOT PAIMON_ENABLE_MACOS)
61+ message (FATAL_ERROR ,"macOS support is currently experimental." )
62+ endif ()
63+ endif ()
5764
5865if (PAIMON_ENABLE_ORC)
5966 add_definitions (-DPAIMON_ENABLE_ORC )
@@ -334,8 +341,13 @@ add_compile_definitions("GLOG_USE_GLOG_EXPORT")
334341
335342set(THREADS_PREFER_PTHREAD_FLAG ON)
336343find_package(Threads REQUIRED)
337- set(PAIMON_VERSION_SCRIPT_FLAGS
338- " -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/paimon/symbols.map ")
344+ if(APPLE)
345+ set(PAIMON_VERSION_SCRIPT_FLAGS
346+ " -Wl,-exported_symbols_list,${CMAKE_SOURCE_DIR}/src/paimon/symbols.list ")
347+ else()
348+ set(PAIMON_VERSION_SCRIPT_FLAGS
349+ " -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/paimon/symbols.map ")
350+ endif()
339351
340352set(ENV{PAIMON_TEST_DATA} " ${CMAKE_SOURCE_DIR } /test/test_data ")
341353
@@ -363,47 +375,82 @@ if(PAIMON_BUILD_TESTS)
363375 include_directories(SYSTEM ${GTEST_INCLUDE_DIR} )
364376 include_directories(" ${CMAKE_SOURCE_DIR } /test/ ")
365377
366- set(TEST_STATIC_LINK_LIBS
367- " -Wl,--whole-archive "
368- paimon_file_index_static
369- paimon_global_index_static
370- paimon_local_file_system_static
371- paimon_mock_file_format_static
372- " -Wl,--no-whole-archive "
373- " -Wl,--no-as-needed "
374- paimon_parquet_file_format_shared
375- paimon_blob_file_format_shared
376- " -Wl,--as-needed ")
378+ if(APPLE)
379+ set(TEST_STATIC_LINK_LIBS
380+ " -Wl,-force_load "
381+ paimon_file_index_static
382+ paimon_global_index_static
383+ paimon_local_file_system_static
384+ paimon_mock_file_format_static
385+ paimon_parquet_file_format_shared
386+ paimon_blob_file_format_shared)
387+ else()
388+ set(TEST_STATIC_LINK_LIBS
389+ " -Wl,--whole-archive "
390+ paimon_file_index_static
391+ paimon_global_index_static
392+ paimon_local_file_system_static
393+ paimon_mock_file_format_static
394+ " -Wl,--no-whole-archive "
395+ " -Wl,--no-as-needed "
396+ paimon_parquet_file_format_shared
397+ paimon_blob_file_format_shared
398+ " -Wl,--as-needed ")
399+ endif()
377400
378401 if(PAIMON_ENABLE_LANCE)
379- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
380- list(APPEND TEST_STATIC_LINK_LIBS paimon_lance_file_format_shared)
381- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
402+ if(APPLE)
403+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lance_file_format_shared)
404+ else()
405+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
406+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lance_file_format_shared)
407+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
408+ endif()
382409 endif()
383410 if(PAIMON_ENABLE_ORC)
384- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
385- list(APPEND TEST_STATIC_LINK_LIBS paimon_orc_file_format_shared)
386- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
411+ if(APPLE)
412+ list(APPEND TEST_STATIC_LINK_LIBS paimon_orc_file_format_shared)
413+ else()
414+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
415+ list(APPEND TEST_STATIC_LINK_LIBS paimon_orc_file_format_shared)
416+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
417+ endif()
387418 endif()
388419 if(PAIMON_ENABLE_AVRO)
389- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
390- list(APPEND TEST_STATIC_LINK_LIBS paimon_avro_file_format_shared)
391- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
420+ if(APPLE)
421+ list(APPEND TEST_STATIC_LINK_LIBS paimon_avro_file_format_shared)
422+ else()
423+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
424+ list(APPEND TEST_STATIC_LINK_LIBS paimon_avro_file_format_shared)
425+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
426+ endif()
392427 endif()
393428 if(PAIMON_ENABLE_JINDO)
394- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
395- list(APPEND TEST_STATIC_LINK_LIBS paimon_jindo_file_system_shared)
396- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
429+ if(APPLE)
430+ list(APPEND TEST_STATIC_LINK_LIBS paimon_jindo_file_system_shared)
431+ else()
432+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
433+ list(APPEND TEST_STATIC_LINK_LIBS paimon_jindo_file_system_shared)
434+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
435+ endif()
397436 endif()
398437 if(PAIMON_ENABLE_LUMINA)
399- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
400- list(APPEND TEST_STATIC_LINK_LIBS paimon_lumina_index_shared)
401- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
438+ if(APPLE)
439+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lumina_index_shared)
440+ else()
441+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
442+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lumina_index_shared)
443+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
444+ endif()
402445 endif()
403446 if(PAIMON_ENABLE_LUCENE)
404- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
405- list(APPEND TEST_STATIC_LINK_LIBS paimon_lucene_index_shared)
406- list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
447+ if(APPLE)
448+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lucene_index_shared)
449+ else()
450+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--no-as-needed ")
451+ list(APPEND TEST_STATIC_LINK_LIBS paimon_lucene_index_shared)
452+ list(APPEND TEST_STATIC_LINK_LIBS " -Wl,--as-needed ")
453+ endif()
407454 endif()
408455endif()
409456
0 commit comments