@@ -160,6 +160,18 @@ else()
160160 endif ()
161161endif ()
162162
163+ if (DEFINED ENV{PAIMON_GFLAGS_URL})
164+ set (GFLAGS_SOURCE_URL "$ENV{PAIMON_GFLAGS_URL} " )
165+ else ()
166+ if (EXISTS "${THIRDPARTY_DIR} /${PAIMON_GFLAGS_PKG_NAME} " )
167+ set_urls (GFLAGS_SOURCE_URL "${THIRDPARTY_DIR} /${PAIMON_GFLAGS_PKG_NAME} " )
168+ else ()
169+ set_urls (GFLAGS_SOURCE_URL
170+ "${THIRDPARTY_MIRROR_URL} https://github.com/gflags/gflags/archive/refs/tags/${PAIMON_GFLAGS_BUILD_VERSION} .tar.gz"
171+ )
172+ endif ()
173+ endif ()
174+
163175if (DEFINED ENV{PAIMON_ZLIB_URL})
164176 set (ZLIB_SOURCE_URL "$ENV{PAIMON_ZLIB_URL} " )
165177else ()
@@ -280,6 +292,18 @@ else()
280292 endif ()
281293endif ()
282294
295+ if (DEFINED ENV{PAIMON_ZDFS_URL})
296+ set (ZDFS_SOURCE_URL "$ENV{PAIMON_ZDFS_URL} " )
297+ else ()
298+ if (EXISTS "${THIRDPARTY_DIR} /${PAIMON_ZDFS_PKG_NAME} " )
299+ set_urls (ZDFS_SOURCE_URL "${THIRDPARTY_DIR} /${PAIMON_ZDFS_PKG_NAME} " )
300+ else ()
301+ set_urls (ZDFS_SOURCE_URL
302+ "http://beiming.alibaba-inc.com/beiming/services/zdfs/${PAIMON_ZDFS_BUILD_VERSION} /apps/zdfs-dfs-lib"
303+ )
304+ endif ()
305+ endif ()
306+
283307set (EP_CXX_FLAGS "${CMAKE_CXX_FLAGS } " )
284308set (EP_C_FLAGS "${CMAKE_C_FLAGS } " )
285309string (REPLACE "-Wglobal-constructors" "" EP_CXX_FLAGS ${EP_CXX_FLAGS} )
@@ -800,6 +824,50 @@ macro(build_jindosdk_nextarch)
800824 add_dependencies (jindosdk::nextarch jindosdk-nextarch_ep )
801825endmacro ()
802826
827+ macro (build_zdfs )
828+ message (STATUS "Building zdfs from precompiled package" )
829+
830+ set (ZDFS_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /zdfs_ep-install" )
831+ set (ZDFS_HOME "${ZDFS_PREFIX} " )
832+ set (ZDFS_INCLUDE_DIR "${ZDFS_PREFIX} /include" )
833+ set (ZDFS_LIB_DIR "${ZDFS_PREFIX} /lib" )
834+ set (ZDFS_STATIC_LIB "${ZDFS_LIB_DIR} /libzdfs.a" )
835+ set (ZDFS_DYNAMIC_LIB "${ZDFS_LIB_DIR} /libzdfs.so" )
836+
837+ # Extract and install zdfs from precompiled package
838+ externalproject_add (zdfs_ep
839+ URL ${ZDFS_SOURCE_URL}
840+ URL_HASH "SHA256=${PAIMON_ZDFS_BUILD_SHA256_CHECKSUM} "
841+ ${THIRDPARTY_LOG_OPTIONS}
842+ CONFIGURE_COMMAND ""
843+ BUILD_COMMAND ""
844+ INSTALL_COMMAND bash -c
845+ "cp -r <SOURCE_DIR>/include/* ${ZDFS_INCLUDE_DIR} "
846+ COMMAND bash -c "cp -r <SOURCE_DIR>/lib/libzdfs.* ${ZDFS_LIB_DIR} "
847+ BUILD_BYPRODUCTS "${ZDFS_STATIC_LIB} " "${ZDFS_DYNAMIC_LIB} " )
848+
849+ # The include directory must exist before it is referenced by a target.
850+ file (MAKE_DIRECTORY "${ZDFS_INCLUDE_DIR} " )
851+ file (MAKE_DIRECTORY "${ZDFS_LIB_DIR} " )
852+
853+ add_library (zdfs::sdk_static STATIC IMPORTED )
854+ set_target_properties (zdfs::sdk_static
855+ PROPERTIES IMPORTED_LOCATION "${ZDFS_STATIC_LIB} "
856+ INTERFACE_INCLUDE_DIRECTORIES "${ZDFS_INCLUDE_DIR} " )
857+ add_dependencies (zdfs::sdk_static zdfs_ep )
858+
859+ add_library (zdfs::sdk_shared SHARED IMPORTED )
860+ set_target_properties (zdfs::sdk_shared
861+ PROPERTIES IMPORTED_LOCATION "${ZDFS_DYNAMIC_LIB} "
862+ INTERFACE_INCLUDE_DIRECTORIES "${ZDFS_INCLUDE_DIR} " )
863+ add_dependencies (zdfs::sdk_shared zdfs_ep )
864+
865+ install (DIRECTORY "${ZDFS_LIB_DIR} /"
866+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
867+ FILES_MATCHING
868+ PATTERN "libzdfs.*" )
869+ endmacro ()
870+
803871macro (build_protobuf )
804872 message (STATUS "Building protobuf from source" )
805873 set (PROTOBUF_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /protobuf_ep-install" )
@@ -1339,6 +1407,44 @@ macro(build_glog)
13391407 endif ()
13401408endmacro ()
13411409
1410+ macro (build_gflags )
1411+ message (STATUS "Building gflags from source" )
1412+ set (GFLAGS_PREFIX "${CMAKE_CURRENT_BINARY_DIR } /gflags_ep-install" )
1413+ set (GFLAGS_INCLUDE_DIR "${GFLAGS_PREFIX} /include" )
1414+ if (${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG" )
1415+ set (GLOG_LIB_SUFFIX "_debug" )
1416+ else ()
1417+ set (GLOG_LIB_SUFFIX "" )
1418+ endif ()
1419+ set (GFLAGS_STATIC_LIB "${GFLAGS_PREFIX} /lib/libgflags${GLOG_LIB_SUFFIX} .a" )
1420+ set (GFLAGS_CMAKE_CXX_FLAGS " -Wno-error ${EP_CXX_FLAGS} " )
1421+ set (GFLAGS_CMAKE_C_FLAGS " -Wno-error ${EP_C_FLAGS} " )
1422+
1423+ set (GFLAGS_CMAKE_ARGS
1424+ ${EP_COMMON_CMAKE_ARGS}
1425+ -DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}
1426+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE }
1427+ -DGFLAGS_NAMESPACE=gflags
1428+ -DCMAKE_CXX_FLAGS=${GFLAGS_CMAKE_CXX_FLAGS}
1429+ -DCMAKE_C_FLAGS=${GFLAGS_CMAKE_C_FLAGS} )
1430+
1431+ externalproject_add (gflags_ep
1432+ URL ${GFLAGS_SOURCE_URL}
1433+ URL_HASH "SHA256=${PAIMON_GFLAGS_BUILD_SHA256_CHECKSUM} "
1434+ CMAKE_ARGS ${GFLAGS_CMAKE_ARGS}
1435+ BUILD_BYPRODUCTS "${GFLAGS_STATIC_LIB} " )
1436+
1437+ file (MAKE_DIRECTORY "${GFLAGS_INCLUDE_DIR} " )
1438+ add_library (gflags::gflags STATIC IMPORTED )
1439+ set_target_properties (gflags::gflags
1440+ PROPERTIES IMPORTED_LOCATION "${GFLAGS_STATIC_LIB} "
1441+ INTERFACE_INCLUDE_DIRECTORIES "${GFLAGS_INCLUDE_DIR} "
1442+ INTERFACE_LINK_DIRECTORIES "${GFLAGS_BUILD_DIR} /lib"
1443+ INTERFACE_COMPILE_DEFINITIONS "GFLAGS_USE_GFLAGS_EXPORT" )
1444+
1445+ add_dependencies (gflags::gflags gflags_ep )
1446+ endmacro ()
1447+
13421448build_fmt ()
13431449build_rapidjson ()
13441450build_snappy ()
@@ -1360,6 +1466,10 @@ if(PAIMON_ENABLE_JINDO)
13601466 build_jindosdk_c ()
13611467 build_jindosdk_nextarch ()
13621468endif ()
1469+ if (PAIMON_ENABLE_ZDFS)
1470+ build_gflags ()
1471+ build_zdfs ()
1472+ endif ()
13631473if (PAIMON_ENABLE_LUCENE)
13641474 build_boost ()
13651475 build_lucene ()
0 commit comments