@@ -73,24 +73,28 @@ option (DISABLE_NEON_FORCE "Force disable neon instructions" OFF)
7373option (DISABLE_SVE_FORCE "Force disable sve instructions" OFF )
7474# AIO library configuration
7575option (ENABLE_LIBAIO "Whether to enable libaio support" ON )
76+ if (NOT APPLE )
77+ if (ENABLE_CXX11_ABI)
78+ add_definitions (-D_GLIBCXX_USE_CXX11_ABI=1)
79+ message (STATUS "Using libstdc++ with ${Yellow} C++11 ABI${CR} " )
80+ else ()
81+ add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0)
82+ message (STATUS "Using libstdc++ with ${Yellow} pre-C++11 ABI${CR} " )
7683
77- if (ENABLE_CXX11_ABI)
78- add_definitions (-D_GLIBCXX_USE_CXX11_ABI=1)
79- message (STATUS "Using libstdc++ with ${Yellow} C++11 ABI${CR} " )
80- else ()
81- add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0)
82- message (STATUS "Using libstdc++ with ${Yellow} pre-C++11 ABI${CR} " )
83-
84- # for avoiding symbol conflict: _Rep::_S_create
85- vsag_add_shared_linker_flag(-fvisibility-inlines-hidden)
84+ # for avoiding symbol conflict: _Rep::_S_create
85+ vsag_add_shared_linker_flag(-fvisibility-inlines-hidden)
86+ endif ()
8687endif ()
8788
8889if (ENABLE_WERROR)
8990 add_compile_options (-Werror)
9091endif ()
9192
92- vsag_add_exe_linker_flag (-static -libstdc++)
93- vsag_add_shared_linker_flag (-static -libstdc++)
93+ # On Apple platforms, use the system's libc++ instead of static linking libstdc++
94+ if (NOT APPLE )
95+ vsag_add_exe_linker_flag (-static -libstdc++)
96+ vsag_add_shared_linker_flag (-static -libstdc++)
97+ endif ()
9498vsag_add_shared_linker_flag (-fvisibility=hidden)
9599
96100if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
@@ -107,25 +111,30 @@ else ()
107111 endif ()
108112endif ()
109113
110- if (ENABLE_LIBCXX)
114+ if (ENABLE_LIBCXX OR APPLE )
111115 message (STATUS "Using libc++ with C++11 ABI" )
112-
113- set (LIBCXX_SEARCH_PATH /opt/alibaba-cloud-compiler/lib64)
114- find_library (LIBCXX_STATIC libc++.a PATHS ${LIBCXX_SEARCH_PATH} )
115- find_library (LIBCXXABI_STATIC libc++abi.a PATHS ${LIBCXX_SEARCH_PATH} )
116- if (LIBCXX_STATIC AND LIBCXXABI_STATIC)
117- get_filename_component (LIBCXX_DIR "${LIBCXX_STATIC} " DIRECTORY )
118- message (STATUS "Found libc++ at ${LIBCXX_STATIC} " )
119- message (STATUS "Found libc++abi at ${LIBCXXABI_STATIC} " )
120- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
121-
122- vsag_add_shared_linker_flag ("-fuse-ld=lld" )
123- vsag_add_shared_linker_flag ("-Wl,-rpath,${LIBCXX_DIR} " )
124- vsag_add_exe_linker_flag ("-fuse-ld=lld" )
125- vsag_add_exe_linker_flag ("-Wl,-rpath,${LIBCXX_DIR} " )
126- set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} ${LIBCXX_STATIC} ${LIBCXXABI_STATIC} " )
127- else ()
128- message (FATAL_ERROR "libc++ or libc++abi not found" )
116+ if (APPLE )
117+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
118+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++" )
119+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++" )
120+ else ()
121+ set (LIBCXX_SEARCH_PATH /opt/alibaba-cloud-compiler/lib64)
122+ find_library (LIBCXX_STATIC libc++.a PATHS ${LIBCXX_SEARCH_PATH} )
123+ find_library (LIBCXXABI_STATIC libc++abi.a PATHS ${LIBCXX_SEARCH_PATH} )
124+ if (LIBCXX_STATIC AND LIBCXXABI_STATIC)
125+ get_filename_component (LIBCXX_DIR "${LIBCXX_STATIC} " DIRECTORY )
126+ message (STATUS "Found libc++ at ${LIBCXX_STATIC} " )
127+ message (STATUS "Found libc++abi at ${LIBCXXABI_STATIC} " )
128+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++" )
129+
130+ vsag_add_shared_linker_flag ("-fuse-ld=lld" )
131+ vsag_add_shared_linker_flag ("-Wl,-rpath,${LIBCXX_DIR} " )
132+ vsag_add_exe_linker_flag ("-fuse-ld=lld" )
133+ vsag_add_exe_linker_flag ("-Wl,-rpath,${LIBCXX_DIR} " )
134+ set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} ${LIBCXX_STATIC} ${LIBCXXABI_STATIC} " )
135+ else ()
136+ message (FATAL_ERROR "libc++ or libc++abi not found" )
137+ endif ()
129138 endif ()
130139else ()
131140 if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
@@ -202,17 +211,17 @@ set (common_cmake_args
202211 "-DCMAKE_INCLUDE_PATH=${CMAKE_INSTALL_PREFIX} /include"
203212 "-DCMAKE_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX} /lib:/opt/alibaba-cloud-compiler/lib64"
204213)
205-
206- set (common_configure_envs
207- "env"
208- "CC=${CMAKE_C_COMPILER} "
209- "CXX=${CMAKE_CXX_COMPILER} "
210- "CFLAGS=${CMAKE_C_FLAGS} -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE -gdwarf-4"
211- "CXXFLAGS=${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE -gdwarf-4"
212- "CPPFLAGS=-isystem ${CMAKE_INSTALL_PREFIX} /include"
213- "LDFLAGS=-Wl,-rpath= \\\\ $ \\ $ORIGIN ${ld_flags} "
214- "PATH=${BUILDING_PATH} :$ENV{PATH} "
215- "ACLOCAL_PATH=${ACLOCAL_PATH} "
214+ include (cmake/DarwinDep.cmake)
215+ set (common_configure_envs
216+ "env"
217+ "CC=${CMAKE_C_COMPILER} "
218+ "CXX=${CMAKE_CXX_COMPILER} "
219+ "CFLAGS=${CMAKE_C_FLAGS} -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE -gdwarf-4"
220+ "CXXFLAGS=${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE -gdwarf-4"
221+ "CPPFLAGS=-isystem ${CMAKE_INSTALL_PREFIX} /include"
222+ "LDFLAGS=${ld_flags_workaround} ${ld_flags} " # Use the workaround for LDFLAGS
223+ "PATH=${BUILDING_PATH} :$ENV{PATH} "
224+ "ACLOCAL_PATH=${ACLOCAL_PATH} "
216225)
217226
218227# set the default compilation parallelism of thirdparties
@@ -319,7 +328,9 @@ endif ()
319328
320329# sources
321330add_subdirectory (src)
322- add_subdirectory (mockimpl)
331+ if (NOT APPLE )
332+ add_subdirectory (mockimpl)
333+ endif ()
323334if (ENABLE_EXAMPLES)
324335 add_subdirectory (examples/cpp)
325336endif ()
@@ -353,7 +364,9 @@ if (ENABLE_PYBINDS)
353364 pybind11_add_module (_pyvsag python_bindings/binding.cpp)
354365 target_compile_options (_pyvsag PRIVATE -fopenmp)
355366 target_link_libraries (_pyvsag PRIVATE pybind11::module vsag)
356- target_link_options (_pyvsag PRIVATE -static -libstdc++ -static -libgcc)
367+ if (NOT APPLE )
368+ target_link_options (_pyvsag PRIVATE -static -libstdc++ -static -libgcc)
369+ endif ()
357370
358371 message (STATUS "Building _pyvsag for Python ${Python3_VERSION} " )
359372 message (STATUS "Expected output: _pyvsag${Python3_SOABI}${CMAKE_SHARED_MODULE_SUFFIX} " )
0 commit comments