Fixed HDF5 support in cmake. Fixed fortran.
This commit is contained in:
parent
537a68b668
commit
d720854361
8 changed files with 63 additions and 106 deletions
61
external/external_build.cmake
vendored
61
external/external_build.cmake
vendored
|
@ -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)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue