Removed FindHealpix as we have now an internal healpix package. Added gengetopt as a dependency to build. Fixed library broken linkage.

This commit is contained in:
Guilhem Lavaux 2012-10-30 14:38:41 -04:00
parent 51f6798f88
commit 2e9a820d34
3 changed files with 64 additions and 43 deletions

View file

@ -1,8 +1,29 @@
include(FindOpenMP)
OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF)
IF(ENABLE_OPENMP)
IF (NOT OPENMP_FOUND)
MESSAGE(ERROR "No known compiler option for enabling OpenMP")
ENDIF(NOT OPENMP_FOUND)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKED_FLAGS} ${OpenMP_C_FLAGS}")
ENDIF(ENABLE_OPENMP)
SET(INTERNAL_FFTW OFF)
SET(INTERNAL_GSL ON)
SET(INTERNAL_BOOST ON)
SET(INTERNAL_NETCDF ON)
SET(INTERNAL_HDF5 ON)
SET(INTERNAL_GENGETOPT ON)
IF(INTERNAL_GENGETOPT)
SET(GENGETOPT_URL "ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-2.22.5.tar.gz" CACHE STRING "URL to download gengetopt from")
ENDIF(INTERNAL_GENGETOPT)
IF(INTERNAL_HDF5)
SET(HDF5_URL "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.9.tar.gz" CACHE STRING "URL to download HDF5 from")
@ -28,6 +49,30 @@ find_program(GENGETOPT gengetopt)
SET(CONFIGURE_CPP_FLAGS "${EXTRA_CPP_FLAGS}")
SET(CONFIGURE_LD_FLAGS "${EXTRA_LD_FLAGS}")
##################
# Build gengetopt
##################
if (INTERNAL_GENGETOPT)
SET(GENGETOPT_SOURCE_DIR ${CMAKE_BINARY_DIR}/gengetopt-prefix/src/gengetopt)
SET(GENGETOPT_BIN_DIR ${CMAKE_BINARY_DIR}/ext_build/gengetopt)
ExternalProject_Add(gengetopt
URL ${GENGETOPT_URL}
CONFIGURE_COMMAND ${GENGETOPT_SOURCE_DIR}/configure
--prefix=${GENGETOPT_BIN_DIR}
CPPFLAGS=${CONFIGURE_CPP_FLAGS}
LDFLAGS=${CONFIGURE_LD_FLAGS}
CC=${CMAKE_C_COMPILER}
CXX=${CMAKE_CXX_COMPILER}
BUILD_IN_SOURCE 1
INSTALL_COMMAND make install
)
SET(GENGETOPT ${GENGETOPT_BIN_DIR}/bin/gengetopt)
else(INTERNAL_GENGETOPT)
find_program(GENGETOPT gengetopt)
endif(INTERNAL_GENGETOPT)
###############
# Build HDF5
###############
@ -44,7 +89,9 @@ if (INTERNAL_HDF5)
SET(cosmotool_DEPS ${cosmotool_DEPS} hdf5)
SET(hdf5_built hdf5)
set(HDF5_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5.a CACHE STRING "HDF5 lib" FORCE)
set(HDF5_CPP_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_cpp.a CACHE STRING "HDF5 C++ lib" FORCE)
set(HDF5HL_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl.a CACHE STRING "HDF5-HL lib" FORCE)
set(HDF5HL_CPP_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl_cpp.a CACHE STRING "HDF5-HL C++ lib" FORCE)
SET(HDF5_INCLUDE_PATH ${HDF5_BIN_DIR}/include CACHE STRING "HDF5 include path" FORCE)
SET(ENV{HDF5_ROOT} ${HDF5_BIN_DIR})
SET(HDF5_ROOTDIR ${HDF5_BIN_DIR})
@ -52,6 +99,8 @@ if (INTERNAL_HDF5)
else(INTERNAL_HDF5)
find_path(HDF5_INCLUDE_PATH hdf5.h)
find_library(HDF5_LIBRARY hdf5)
find_library(HDF5_CPP_LIBRARY hdf5_cpp)
find_library(HDF5HL_CPP_LIBRARY hdf5_hl_cpp)
find_library(HDF5HL_LIBRARY hdf5_hl)
endif (INTERNAL_HDF5)
SET(CONFIGURE_CPP_FLAGS "${CONFIGURE_CPP_FLAGS} -I${HDF5_INCLUDE_PATH}")
@ -164,7 +213,14 @@ ExternalProject_Add(healpix
DEPENDS cfitsio
SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/healpix
CONFIGURE_COMMAND echo No configure
BUILD_COMMAND make HEALPIX_TARGET=sampler HEALPIX_CC=${CMAKE_C_COMPILER} HEALPIX_CXX=${CMAKE_CXX_COMPILER} HEALPIX_BASE_PATH=${CMAKE_BINARY_DIR} OMP_SUPPORT=${ENABLE_OPENMP} EXTRA_CPPFLAGS=${CONFIGURE_CPP_FLAGS} OMP_FLAGS=${OpenMP_C_FLAGS}
BUILD_COMMAND make
HEALPIX_TARGET=sampler
HEALPIX_CC=${CMAKE_C_COMPILER}
HEALPIX_CXX=${CMAKE_CXX_COMPILER}
HEALPIX_BASE_PATH=${CMAKE_BINARY_DIR}
OMP_SUPPORT=${ENABLE_OPENMP}
EXTRA_CPPFLAGS=${CONFIGURE_CPP_FLAGS}
OMP_FLAGS=${OpenMP_C_FLAGS}
BUILD_IN_SOURCE 1
INSTALL_COMMAND ${CMAKE_COMMAND} -DHEALPIX_DIR:STRING=${CMAKE_SOURCE_DIR}/external/healpix -DDEST_DIR:STRING=${CMAKE_BINARY_DIR}/ext_build/healpix -P ${CMAKE_SOURCE_DIR}/external/install_healpix.cmake
)
@ -176,6 +232,7 @@ set(PSHT_LIBRARY ${HPIX_LIBPATH}/libpsht.a)
set(CUTILS_LIBRARY ${HPIX_LIBPATH}/libc_utils.a)
SET(HEALPIX_INCLUDE_PATH ${CMAKE_BINARY_DIR}/ext_build/healpix/include)
SET(HEALPIX_LIBRARIES ${HEALPIX_LIBRARY} ${FFTPACK_LIBRARY} ${CXXSUPPORT_LIBRARY} ${PSHT_LIBRARY} ${CUTILS_LIBRARY} ${CFITSIO_LIBRARY} )
set(GSL_LIBRARIES ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
SET(NETCDF_LIBRARIES ${NETCDFCPP_LIBRARY} ${NETCDF_LIBRARY} ${HDF5HL_LIBRARY} ${HDF5_LIBRARY} ${ZLIB_LIBRARY})