1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
cmake_minimum_required(VERSION 2.8.10)
cmake_policy(SET CMP0074 NEW)
project(blosc_hdf5)
find_package(PkgConfig)
# options
option(BUILD_TESTS
"Build test programs form the blosc filter" ON)
option(BUILD_PLUGIN
"Build dynamically loadable plugin for HDF5 version > 1.8.11" ON)
if(BUILD_PLUGIN)
set(PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}/hdf5/plugins" CACHE PATH
"Where to install the dynamic HDF5-plugin")
endif(BUILD_PLUGIN)
set(BLOSC_LIBRARIES "${CMAKE_INSTALL_LIBDIR}/hdf5/plugins")
set(BLOSC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/blosc")
set(BLOSC_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/blosc")
set(BLOSC_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${BLOSC_INSTALL_DIR})
message("BLOSC_LIBRARIES='${BLOSC_LIBRARIES}'")
message("BLOSC_PREFIX='${BLOSC_PREFIX}'")
message("BLOSC_INSTALL_DIR='${BLOSC_INSTALL_DIR}'")
message("BLOSC_CMAKE_ARGS='${BLOSC_CMAKE_ARGS}'")
message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
# sources
set(SOURCES src/blosc_filter.c)
set(PLUGIN_SOURCES src/blosc_filter.c src/blosc_plugin.c )
# dependencies
if(MSVC)
# FindHDF5.cmake does not find Windows installations. Try to
# use an environment variable instead until the official "find"
# file can be updated for Windows.
#
# Note that you have to set this environment variable by hand.
file(TO_CMAKE_PATH "$ENV{HDF5_DIR}" HDF5_HINT)
set(HDF5_DIR ${HDF5_HINT} CACHE STRING "Path to HDF5 CMake config directory.")
find_package(HDF5 REQUIRED HINTS ${HDF5_DIR})
else(MSVC)
find_package(HDF5 REQUIRED)
endif(MSVC)
pkg_check_modules(BLOSC REQUIRED blosc)
include_directories(${HDF5_INCLUDE_DIRS})
# add blosc libraries
add_library(blosc_filter_shared SHARED ${SOURCES})
set_target_properties(
blosc_filter_shared PROPERTIES OUTPUT_NAME blosc_filter)
target_link_libraries(blosc_filter_shared ${HDF5_LIBRARIES} ${BLOSC_LIBRARIES})
if(BUILD_PLUGIN)
add_library(blosc_plugin_shared SHARED ${PLUGIN_SOURCES})
set_target_properties(
blosc_plugin_shared PROPERTIES OUTPUT_NAME H5Zblosc)
target_link_libraries(blosc_plugin_shared ${HDF5_LIBRARIES} ${BLOSC_LIBRARIES})
install(TARGETS blosc_plugin_shared DESTINATION ${PLUGIN_INSTALL_PATH} COMPONENT HDF5_FILTER_DEV)
endif(BUILD_PLUGIN)
# install
install(FILES src/blosc_filter.h DESTINATION include COMPONENT HDF5_FILTER_DEV)
install(TARGETS blosc_filter_shared DESTINATION ${PLUGIN_INSTALL_PATH} COMPONENT HDF5_FILTER_DEV)
# test
message("LINK LIBRARIES='blosc_filter_shared ${HDF5_LIBRARIES}'")
if(BUILD_TESTS)
enable_testing()
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)
set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT})
add_executable(example src/example.c)
target_link_libraries(example blosc_filter_shared ${HDF5_LIBRARIES} ${LIBS})
add_test(test_hdf5_filter example)
endif(BUILD_TESTS)
|