From 2e9a820d34ae0b10a8554de8d554a3d3d0531454 Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Tue, 30 Oct 2012 14:38:41 -0400 Subject: [PATCH] Removed FindHealpix as we have now an internal healpix package. Added gengetopt as a dependency to build. Fixed library broken linkage. --- external/external_build.cmake | 59 +++++++++++++++++++++++++++++++- external/install_healpix.cmake | 6 ++++ pipeline_tools/FindHealpix.cmake | 42 ----------------------- 3 files changed, 64 insertions(+), 43 deletions(-) create mode 100644 external/install_healpix.cmake delete mode 100644 pipeline_tools/FindHealpix.cmake diff --git a/external/external_build.cmake b/external/external_build.cmake index 64a6fe3..662f902 100644 --- a/external/external_build.cmake +++ b/external/external_build.cmake @@ -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}) diff --git a/external/install_healpix.cmake b/external/install_healpix.cmake new file mode 100644 index 0000000..28887e8 --- /dev/null +++ b/external/install_healpix.cmake @@ -0,0 +1,6 @@ +execute_process(COMMAND ${MAKE} -C ${HEALPIX_DIR} hdrcopy) + +set(bdir ${HEALPIX_DIR}/sampler) + +file(MAKE_DIRECTORY ${DEST_DIR}) +file(COPY ${bdir}/bin ${bdir}/lib ${bdir}/include DESTINATION ${DEST_DIR} NO_SOURCE_PERMISSIONS) diff --git a/pipeline_tools/FindHealpix.cmake b/pipeline_tools/FindHealpix.cmake deleted file mode 100644 index b693ad0..0000000 --- a/pipeline_tools/FindHealpix.cmake +++ /dev/null @@ -1,42 +0,0 @@ -OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF) - -# -# OpenMP handling -# - - -INCLUDE(FindOpenMP) - -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(HEALPIX_BASE_PATH $ENV{HEALPIX}) -SET(HEALPIX_TARGET $ENV{HEALPIX_TARGET}) -SET(HEALPIX_PATH ${HEALPIX_BASE_PATH}/src/cxx/${HEALPIX_TARGET}) -SET(HEALPIX_HINT_INCLUDE ${HEALPIX_PATH}/include) -SET(HEALPIX_HINT_LIB ${HEALPIX_PATH}/lib) - -find_path(HEALPIX_INCLUDE_PATH NAMES healpix_map.h PATHS ${HEALPIX_HINT_INCLUDE}) - -find_library(HEALPIX_LIBRARY healpix_cxx PATHS ${HEALPIX_HINT_LIB}) -find_library(FFTPACK_LIBRARY fftpack PATHS ${HEALPIX_HINT_LIB}) -find_library(CFITSIO_LIBRARY cfitsio PATHS ${HEALPIX_HINT_LIB}) -find_library(CXXSUPPORT_LIBRARY cxxsupport PATHS ${HEALPIX_HINT_LIB}) -find_library(PSHT_LIBRARY psht PATHS ${HEALPIX_HINT_LIB}) -find_library(CUTILS_LIBRARY c_utils PATHS ${HEALPIX_HINT_LIB}) - -SET(HEALPIX_LIBRARIES - ${HEALPIX_LIBRARY} ${EXTRA_HEALPIX_LIBRARIES} - ${FFTPACK_LIBRARY} ${CXXSUPPORT_LIBRARY} ${CFITSIO_LIBRARY} -) \ No newline at end of file