@@ -281,6 +281,56 @@ else()
281281 endif ()
282282endif ()
283283
284+ if (APPLE )
285+ set (JINDOSDK_C_DYNAMIC_LIB_NAME "jindosdk_c.${PAIMON_JINDOSDK_C_BUILD_VERSION} " )
286+ set (JINDOSDK_C_DYNAMIC_LIB_FILE "lib${JINDOSDK_C_DYNAMIC_LIB_NAME} .dylib" )
287+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64" )
288+ set (JINDOSDK_C_BUILD_SHA256_CHECKSUM
289+ "${PAIMON_JINDOSDK_C_MACOS_X86_64_BUILD_SHA256_CHECKSUM} " )
290+ if (DEFINED ENV{PAIMON_JINDOSDK_C_MACOS_X86_64_URL})
291+ set (JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_MACOS_X86_64_URL} " )
292+ else ()
293+ set_urls (JINDOSDK_C_SOURCE_URL
294+ "https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION} /jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION} -macos-11_0-x86_64.tar.gz"
295+ )
296+ endif ()
297+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64" )
298+ set (JINDOSDK_C_BUILD_SHA256_CHECKSUM
299+ "${PAIMON_JINDOSDK_C_MACOS_AARCH64_BUILD_SHA256_CHECKSUM} " )
300+ if (DEFINED ENV{PAIMON_JINDOSDK_C_MACOS_AARCH64_URL})
301+ set (JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_MACOS_AARCH64_URL} " )
302+ else ()
303+ set_urls (JINDOSDK_C_SOURCE_URL
304+ "https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION} /jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION} -macos-11_0-aarch64.tar.gz"
305+ )
306+ endif ()
307+ endif ()
308+ else ()
309+ set (JINDOSDK_C_DYNAMIC_LIB_NAME "jindosdk_c" )
310+ set (JINDOSDK_C_DYNAMIC_LIB_FILE "lib${JINDOSDK_C_DYNAMIC_LIB_NAME} .so" )
311+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64" )
312+ set (JINDOSDK_C_BUILD_SHA256_CHECKSUM
313+ "${PAIMON_JINDOSDK_C_LINUX_X86_64_BUILD_SHA256_CHECKSUM} " )
314+ if (DEFINED ENV{PAIMON_JINDOSDK_C_LINUX_X86_64_URL})
315+ set (JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_LINUX_X86_64_URL} " )
316+ else ()
317+ set_urls (JINDOSDK_C_SOURCE_URL
318+ "https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION} /jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION} -linux.tar.gz"
319+ )
320+ endif ()
321+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64" )
322+ set (JINDOSDK_C_BUILD_SHA256_CHECKSUM
323+ "${PAIMON_JINDOSDK_C_LINUX_AARCH64_BUILD_SHA256_CHECKSUM} " )
324+ if (DEFINED ENV{PAIMON_JINDOSDK_C_LINUX_AARCH64_URL})
325+ set (JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_LINUX_AARCH64_URL} " )
326+ else ()
327+ set_urls (JINDOSDK_C_SOURCE_URL
328+ "https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION} /jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION} -linux-el7-aarch64.tar.gz"
329+ )
330+ endif ()
331+ endif ()
332+ endif ()
333+
284334set (EP_CXX_FLAGS "${CMAKE_CXX_FLAGS } " )
285335set (EP_C_FLAGS "${CMAKE_C_FLAGS } " )
286336string (REPLACE "-Wglobal-constructors" "" EP_CXX_FLAGS ${EP_CXX_FLAGS} )
@@ -1105,6 +1155,97 @@ macro(build_lz4)
11051155 add_dependencies (lz4 lz4_ep )
11061156endmacro ()
11071157
1158+ macro (build_jindosdk_c )
1159+ message (STATUS "Building jindosdk-c from precompiled package" )
1160+
1161+ set (JINDOSDK_C_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /jindosdk_ep-install" )
1162+ set (JINDOSDK_C_HOME "${JINDOSDK_C_PREFIX} " )
1163+ set (JINDOSDK_C_INCLUDE_DIR "${JINDOSDK_C_PREFIX} /include" )
1164+ set (JINDOSDK_C_LIB_DIR "${JINDOSDK_C_PREFIX} /lib/native" )
1165+ set (JINDOSDK_C_DYNAMIC_LIB "${JINDOSDK_C_LIB_DIR} /${JINDOSDK_C_DYNAMIC_LIB_FILE} " )
1166+
1167+ # Extract and install jindosdk from precompiled package
1168+ externalproject_add (jindosdk_ep
1169+ URL ${JINDOSDK_C_SOURCE_URL}
1170+ URL_HASH "SHA256=${JINDOSDK_C_BUILD_SHA256_CHECKSUM} "
1171+ ${THIRDPARTY_LOG_OPTIONS}
1172+ CONFIGURE_COMMAND ""
1173+ BUILD_COMMAND ""
1174+ INSTALL_COMMAND bash -c
1175+ "cp -r <SOURCE_DIR>/include/* ${JINDOSDK_C_INCLUDE_DIR} "
1176+ COMMAND bash -c
1177+ "cp -r <SOURCE_DIR>/lib/native/${JINDOSDK_C_DYNAMIC_LIB_FILE} * ${JINDOSDK_C_LIB_DIR} "
1178+ BUILD_BYPRODUCTS "${JINDOSDK_C_DYNAMIC_LIB} " )
1179+
1180+ # The include directory must exist before it is referenced by a target.
1181+ file (MAKE_DIRECTORY "${JINDOSDK_C_INCLUDE_DIR} " )
1182+ file (MAKE_DIRECTORY "${JINDOSDK_C_LIB_DIR} " )
1183+
1184+ add_library (jindosdk::c_sdk SHARED IMPORTED )
1185+ set_target_properties (jindosdk::c_sdk
1186+ PROPERTIES IMPORTED_LOCATION "${JINDOSDK_C_DYNAMIC_LIB} "
1187+ INTERFACE_INCLUDE_DIRECTORIES
1188+ "${JINDOSDK_C_INCLUDE_DIR} " )
1189+ list (APPEND JINDOSDK_INCLUDE_DIR ${JINDOSDK_C_INCLUDE_DIR} )
1190+
1191+ add_dependencies (jindosdk::c_sdk jindosdk_ep )
1192+ install (DIRECTORY "${JINDOSDK_C_LIB_DIR} /"
1193+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
1194+ FILES_MATCHING
1195+ PATTERN "${JINDOSDK_C_DYNAMIC_LIB_FILE} *" )
1196+
1197+ endmacro ()
1198+
1199+ macro (build_jindosdk_nextarch )
1200+ message (STATUS "Building jindosdk-nextarch from local source" )
1201+
1202+ set (JINDOSDK_NEXTARCH_PREFIX
1203+ "${CMAKE_CURRENT_BINARY_DIR } /jindosdk-nextarch_ep-install" )
1204+ set (JINDOSDK_NEXTARCH_HOME "${JINDOSDK_NEXTARCH_PREFIX} " )
1205+ set (JINDOSDK_NEXTARCH_INCLUDE_DIR "${JINDOSDK_NEXTARCH_PREFIX} /include" )
1206+ set (JINDOSDK_NEXTARCH_LIB_DIR "${JINDOSDK_NEXTARCH_PREFIX} /lib" )
1207+ set (JINDOSDK_NEXTARCH_SOURCE_DIR "${CMAKE_SOURCE_DIR } /third_party/jindosdk-nextarch" )
1208+ set (JINDOSDK_NEXTARCH_STATIC_LIB
1209+ "${JINDOSDK_NEXTARCH_LIB_DIR} /libjindosdk-nextarch.a" )
1210+
1211+ # Get jindosdk dependencies (headers and dynamic library)
1212+ get_target_property (JINDOSDK_C_INCLUDE_DIR jindosdk::c_sdk
1213+ INTERFACE_INCLUDE_DIRECTORIES )
1214+ get_target_property (JINDOSDK_C_LIBRARY_LOCATION jindosdk::c_sdk IMPORTED_LOCATION )
1215+ get_filename_component (JINDOSDK_C_DIR_ROOT "${JINDOSDK_C_INCLUDE_DIR} " DIRECTORY )
1216+
1217+ # Compile flags for jindosdk-nextarch
1218+ set (JINDOSDK_NEXTARCH_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS} " )
1219+ set (JINDOSDK_NEXTARCH_CMAKE_C_FLAGS "${EP_C_FLAGS} " )
1220+ set (JINDOSDK_NEXTARCH_CMAKE_ARGS
1221+ ${EP_COMMON_CMAKE_ARGS}
1222+ "-DCMAKE_INSTALL_PREFIX=${JINDOSDK_NEXTARCH_PREFIX} "
1223+ "-DCMAKE_CXX_FLAGS=${JINDOSDK_NEXTARCH_CMAKE_CXX_FLAGS} "
1224+ "-DCMAKE_C_FLAGS=${JINDOSDK_NEXTARCH_CMAKE_C_FLAGS} "
1225+ -DJINDOSDK_ROOT=${JINDOSDK_C_DIR_ROOT}
1226+ -DJINDOSDK_LIBRARY_NAME=${JINDOSDK_C_DYNAMIC_LIB_NAME} )
1227+
1228+ externalproject_add (jindosdk-nextarch_ep
1229+ SOURCE_DIR ${JINDOSDK_NEXTARCH_SOURCE_DIR }
1230+ CMAKE_ARGS ${JINDOSDK_NEXTARCH_CMAKE_ARGS}
1231+ BUILD_BYPRODUCTS "${JINDOSDK_NEXTARCH_STATIC_LIB} "
1232+ DEPENDS jindosdk::c_sdk ${THIRDPARTY_LOG_OPTIONS} )
1233+
1234+ # The include directory must exist before it is referenced by a target.
1235+ file (MAKE_DIRECTORY "${JINDOSDK_NEXTARCH_INCLUDE_DIR} " )
1236+ file (MAKE_DIRECTORY "${JINDOSDK_NEXTARCH_LIB_DIR} " )
1237+
1238+ add_library (jindosdk::nextarch STATIC IMPORTED )
1239+ set_target_properties (jindosdk::nextarch
1240+ PROPERTIES IMPORTED_LOCATION "${JINDOSDK_NEXTARCH_STATIC_LIB} "
1241+ INTERFACE_INCLUDE_DIRECTORIES
1242+ "${JINDOSDK_NEXTARCH_INCLUDE_DIR} " )
1243+ target_link_libraries (jindosdk::nextarch INTERFACE jindosdk::c_sdk pthread dl )
1244+ list (APPEND JINDOSDK_INCLUDE_DIR ${JINDOSDK_NEXTARCH_INCLUDE_DIR} )
1245+
1246+ add_dependencies (jindosdk::nextarch jindosdk-nextarch_ep )
1247+ endmacro ()
1248+
11081249macro (build_protobuf )
11091250 message (STATUS "Building protobuf from source" )
11101251 set (PROTOBUF_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /protobuf_ep-install" )
@@ -1672,6 +1813,10 @@ if(PAIMON_ENABLE_ORC)
16721813 resolve_dependency (Protobuf )
16731814 resolve_dependency (ORC )
16741815endif ()
1816+ if (PAIMON_ENABLE_JINDO)
1817+ build_jindosdk_c ()
1818+ build_jindosdk_nextarch ()
1819+ endif ()
16751820if (PAIMON_ENABLE_LUCENE)
16761821 build_boost ()
16771822 build_lucene ()
0 commit comments