|
| 1 | +include(ExternalProject) |
| 2 | + |
| 3 | +# hdf5 is too large. Instead of adding as a submodule, let's simply download from GitHub. |
| 4 | +ExternalProject_Add(hdf5-external |
| 5 | + PREFIX ${CMAKE_CURRENT_BINARY_DIR} |
| 6 | + DOWNLOAD_DIR ${TiFlash_SOURCE_DIR}/contrib/hdf5-cmake/download |
| 7 | + URL https://github.com/HDFGroup/hdf5/archive/refs/tags/hdf5_1.14.4.3.zip |
| 8 | + URL_HASH MD5=bc987d22e787290127aacd7b99b4f31e |
| 9 | + CMAKE_ARGS |
| 10 | + -DCMAKE_BUILD_TYPE=Release |
| 11 | + -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> |
| 12 | + -DBUILD_STATIC_LIBS=ON |
| 13 | + -DBUILD_SHARED_LIBS=OFF |
| 14 | + -DBUILD_TESTING=OFF |
| 15 | + -DHDF5_BUILD_HL_LIB=OFF |
| 16 | + -DHDF5_BUILD_TOOLS=OFF |
| 17 | + -DHDF5_BUILD_CPP_LIB=ON |
| 18 | + -DHDF5_BUILD_EXAMPLES=OFF |
| 19 | + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF |
| 20 | + -DHDF5_ENABLE_SZIP_SUPPORT=OFF |
| 21 | + BUILD_BYPRODUCTS <INSTALL_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}hdf5.a # Workaround for Ninja |
| 22 | + USES_TERMINAL_DOWNLOAD TRUE |
| 23 | + USES_TERMINAL_CONFIGURE TRUE |
| 24 | + USES_TERMINAL_BUILD TRUE |
| 25 | + USES_TERMINAL_INSTALL TRUE |
| 26 | + EXCLUDE_FROM_ALL TRUE |
| 27 | + DOWNLOAD_EXTRACT_TIMESTAMP TRUE |
| 28 | +) |
| 29 | + |
| 30 | +ExternalProject_Get_Property(hdf5-external INSTALL_DIR) |
| 31 | + |
| 32 | +add_library(tiflash_contrib::hdf5 STATIC IMPORTED GLOBAL) |
| 33 | +set_target_properties(tiflash_contrib::hdf5 PROPERTIES |
| 34 | + IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}hdf5.a |
| 35 | +) |
| 36 | +add_dependencies(tiflash_contrib::hdf5 hdf5-external) |
| 37 | + |
| 38 | +file(MAKE_DIRECTORY ${INSTALL_DIR}/include) |
| 39 | +target_include_directories(tiflash_contrib::hdf5 SYSTEM INTERFACE |
| 40 | + ${INSTALL_DIR}/include |
| 41 | +) |
0 commit comments