Fixed HDF5 support in cmake. Fixed fortran.

This commit is contained in:
Guilhem Lavaux 2017-05-05 09:09:51 +02:00
parent 537a68b668
commit d720854361
8 changed files with 63 additions and 106 deletions

View file

@ -3,7 +3,7 @@ include(FindOpenMP)
OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF)
SET(FFTW_URL "http://www.fftw.org/fftw-3.3.3.tar.gz" CACHE URL "URL to download FFTW from")
SET(EIGEN_URL "http://bitbucket.org/eigen/eigen/get/3.1.4.tar.gz" CACHE URL "URL to download Eigen from")
SET(EIGEN_URL "http://bitbucket.org/eigen/eigen/get/3.2.10.tar.gz" CACHE URL "URL to download Eigen from")
SET(GENGETOPT_URL "ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-2.22.5.tar.gz" CACHE STRING "URL to download gengetopt from")
SET(HDF5_URL "https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar.bz2" CACHE STRING "URL to download HDF5 from")
SET(NETCDF_URL "http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-4.1.3.tar.gz" CACHE STRING "URL to download NetCDF from")
@ -12,6 +12,25 @@ SET(GSL_URL "ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz" CACHE STRING "URL to dow
mark_as_advanced(FFTW_URL EIGEN_URL HDF5_URL NETCDF_URL BOOST_URL GSL_URL)
MACRO(CHECK_CHANGE_STATE VAR)
IF (DEFINED _PREVIOUS_${VAR})
IF (NOT ${_PREVIOUS_${VAR}} EQUAL ${${VAR}})
foreach(loopvar ${ARGN})
UNSET(${loopvar} CACHE)
endforeach()
ENDIF (NOT ${_PREVIOUS_${VAR}} EQUAL ${${VAR}})
ENDIF (DEFINED _PREVIOUS_${VAR})
SET(_PREVIOUS_${VAR} ${${VAR}} CACHE INTERNAL "Internal value")
ENDMACRO(CHECK_CHANGE_STATE)
CHECK_CHANGE_STATE(INTERNAL_BOOST Boost_LIBRARIES Boost_INCLUDE_DIRS)
CHECK_CHANGE_STATE(INTERNAL_EIGEN EIGEN3_INCLUDE_DIRS)
CHECK_CHANGE_STATE(INTERNAL_GSL GSL_LIBRARY GSL_CBLAS_LIBRARY GSL_INCLUDE)
CHECK_CHANGE_STATE(INTERNAL_HDF5
HDF5_INCLUDE_DIR HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_DIR
HDF5_C_STATIC_LIBRARY HDF5_HL_STATIC_LIBRARY HDF5_CXX_STATIC_LIBRARY)
CHECK_CHANGE_STATE(INTERNAL_DLIB DLIB_INCLUDE_DIR DLIB_LIBRARIES)
IF(ENABLE_OPENMP)
IF (NOT OPENMP_FOUND)
@ -75,24 +94,35 @@ if (INTERNAL_HDF5)
set(HDF5_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5.a CACHE STRING "HDF5 lib" FORCE)
set(HDF5_HL_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_hl.a CACHE STRING "HDF5 HL lib" FORCE)
set(HDF5_CXX_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_cpp.a CACHE STRING "HDF5 C++ lib" FORCE)
SET(HDF5_INCLUDE_DIR ${HDF5_BIN_DIR}/include CACHE STRING "HDF5 include path" FORCE)
mark_as_advanced(HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIR)
SET(HDF5_INCLUDE_DIRS ${HDF5_BIN_DIR}/include CACHE STRING "HDF5 include path" FORCE)
mark_as_advanced(HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIRS)
MESSAGE(STATUS "Internal HDF5 directory: $ENV{HDF5_ROOT}")
MESSAGE(STATUS "Libs: ${HDF5_LIBRARIES}")
SET(HDF5_FOUND TRUE)
else (INTERNAL_HDF5)
mark_as_advanced(CLEAR HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIR)
mark_as_advanced(CLEAR HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIRS)
if(HDF5_ROOTDIR)
SET(ENV{HDF5_ROOT} ${HDF5_ROOTDIR})
endif(HDF5_ROOTDIR)
find_package(HDF5 COMPONENTS C CXX HL static)
set(HDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} CACHE STRING "HDF5 lib" FORCE)
set(HDF5_HL_LIBRARIES ${HDF5_HL_STATIC_LIBRARY} CACHE STRING "HDF5 HL lib" FORCE)
set(HDF5_CXX_LIBRARIES ${HDF5_CXX_STATIC_LIBRARY} CACHE STRING "HDF5 C++ lib" FORCE)
find_package(HDF5 COMPONENTS C CXX HL CONFIG QUIET)
if (NOT HDF5_FOUND)
cmessage(CWARNING "Could not find HDF5 cmake config. Try classical exploration")
find_package(HDF5 COMPONENTS C CXX HL)
cmessage(STATUS "HDF5 lib: ${HDF5_LIBRARIES}")
cmessage(STATUS "HDF5 includes: ${HDF5_INCLUDE_DIRS}")
get_filename_component(HDF5_BIN_DIR ${HDF5_C_LIBRARY_hdf5} DIRECTORY)
cmessage(STATUS "HDF5 libpath: ${HDF5_BIN_DIR}")
else()
set(HDF5_LIBRARIES ${HDF5_C_STATIC_LIBRARY} CACHE STRING "HDF5 lib" FORCE)
set(HDF5_HL_LIBRARIES ${HDF5_HL_STATIC_LIBRARY} CACHE STRING "HDF5 HL lib" FORCE)
set(HDF5_CXX_LIBRARIES ${HDF5_CXX_STATIC_LIBRARY} CACHE STRING "HDF5 C++ lib" FORCE)
get_filename_component(HDF5_BIN_DIR ${HDF5_C_STATIC_LIBRARY} DIRECTORY)
endif()
SET(CONFIGURE_LDFLAGS "${CONFIGURE_LDFLAGS} -L${HDF5_BIN_DIR}")
endif (INTERNAL_HDF5)
foreach(include_dir ${HDF5_INCLUDE_DIR})
foreach(include_dir ${HDF5_INCLUDE_DIRS})
SET(CONFIGURE_CPP_FLAGS "${CONFIGURE_CPP_FLAGS} -I${include_dir}")
endforeach(include_dir)
@ -161,8 +191,11 @@ if (INTERNAL_BOOST)
set(Boost_DEP boost)
ELSE (INTERNAL_BOOST)
find_package(Boost 1.53)
find_package(Boost 1.53 QUIET)
set(Boost_DEP)
if (NOT Boost_FOUND)
cmessage(CWARNING "Boost >= 1.53 was not found")
endif()
endif (INTERNAL_BOOST)
mark_as_advanced(Boost_INCLUDE_DIRS Boost_LIBRARIES)
@ -248,13 +281,17 @@ ENDIF(INTERNAL_FFTW)
IF (INTERNAL_EIGEN)
ExternalProject_Add(eigen
URL ${EIGEN_URL}
URL_HASH SHA256=04f8a4fa4afedaae721c1a1c756afeea20d3cdef0ce3293982cf1c518f178502
PREFIX ${BUILD_PREFIX}/eigen-prefix
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXT_INSTALL}
)
SET(EIGEN_INCLUDE_PATH ${EXT_INSTALL}/include/eigen3)
SET(EIGEN3_INCLUDE_DIRS ${EXT_INSTALL}/include/eigen3)
ELSE (INTERNAL_EIGEN)
pkg_check_modules(EIGEN3 eigen3)
pkg_check_modules(EIGEN3 QUIET eigen3 )
if (NOT EIGEN3_FOUND)
cmessage(CWARNING "Eigen library not found")
endif()
ENDIF(INTERNAL_EIGEN)