From b5e308680186fa512bce2fa64a825e0008145393 Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Fri, 20 Jul 2018 08:48:54 +0300 Subject: [PATCH] Provide the just-built cython to cosmotool. Forced to reorganize the order of the call to ExternalProject --- CMakeLists.txt | 2 ++ external/base_external.cmake | 15 ++++++++++++++ external/external_build.cmake | 31 +--------------------------- external/external_cosmotool.cmake | 31 ++++++++++++++++++++++++++++ external/external_python_build.cmake | 13 ++++++++++-- 5 files changed, 60 insertions(+), 32 deletions(-) create mode 100644 external/base_external.cmake create mode 100644 external/external_cosmotool.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index b54cd34..c638cd9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,8 +63,10 @@ macro(configure_exec _source _destdir _destfile) endmacro(configure_exec) +include(${CMAKE_SOURCE_DIR}/external/base_external.cmake) include(${CMAKE_SOURCE_DIR}/external/external_build.cmake) include(${CMAKE_SOURCE_DIR}/external/external_python_build.cmake) +include(${CMAKE_SOURCE_DIR}/external/external_cosmotool.cmake) SET(PYTHONPATH ${PYTHON_LOCAL_SITE_PACKAGE}) configure_exec(${CMAKE_SOURCE_DIR}/run_python.sh.in ${CMAKE_BINARY_DIR} run_python.sh) diff --git a/external/base_external.cmake b/external/base_external.cmake new file mode 100644 index 0000000..1628bb8 --- /dev/null +++ b/external/base_external.cmake @@ -0,0 +1,15 @@ +include(FindOpenMP) + +OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF) +OPTION(SDF_SUPPORT "Set to Yes to activate support for SDF" ON) + +IF(ENABLE_OPENMP) + + IF (NOT OPENMP_FOUND) + MESSAGE(FATAL_ERROR "No known compiler option for enabling OpenMP") + ENDIF(NOT OPENMP_FOUND) + +ENDIF(ENABLE_OPENMP) + +SET(BUILD_PREFIX ${CMAKE_BINARY_DIR}/ep_build) + diff --git a/external/external_build.cmake b/external/external_build.cmake index 791da79..1bc0ca4 100644 --- a/external/external_build.cmake +++ b/external/external_build.cmake @@ -221,35 +221,6 @@ ELSE(INTERNAL_GSL) ENDIF(INTERNAL_GSL) mark_as_advanced(GSL_LIBRARY GSLCBLAS_LIBRARY GSL_INCLUDE_PATH) -################## -# Build CosmoTool -################## - - -ExternalProject_Add(cosmotool - DEPENDS ${cosmotool_DEPS} - PREFIX ${BUILD_PREFIX}/cosmotool-prefix - SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/cosmotool - CMAKE_ARGS - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DHDF5_DIR=${HDF5_ROOTDIR} - -DHDF5_ROOTDIR=${HDF5_ROOTDIR} - -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/ext_build/cosmotool - -DNETCDF_INCLUDE_PATH=${NETCDF_INCLUDE_PATH} - -DNETCDFCPP_INCLUDE_PATH=${NETCDFCPP_INCLUDE_PATH} - -DGSL_INCLUDE_PATH=${GSL_INCLUDE_PATH} - -DGSL_LIBRARY=${GSL_LIBRARY} - -DGSLCBLAS_LIBRARY=${GSLCBLAS_LIBRARY} - -DNETCDF_LIBRARY=${NETCDF_LIBRARY} - -DNETCDFCPP_LIBRARY=${NETCDFCPP_LIBRARY} - -DENABLE_SHARP=OFF - -DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIRS} - -) -SET(COSMOTOOL_LIBRARY ${CMAKE_BINARY_DIR}/ext_build/cosmotool/lib/libCosmoTool.a) -set(COSMOTOOL_INCLUDE_PATH ${CMAKE_BINARY_DIR}/ext_build/cosmotool/include) - ################# # Build cfitsio ################# @@ -361,6 +332,6 @@ ENDIF(SDF_SUPPORT) include_directories(${CMAKE_BINARY_DIR}/src ${NETCDF_INCLUDE_PATH} ${GSL_INCLUDE_PATH} - ${HDF5_INCLUDE_PATH} ${COSMOTOOL_INCLUDE_PATH} + ${HDF5_INCLUDE_PATH} ${Boost_INCLUDE_DIRS} ${QHULL_INCLUDE_PATH} ${LIBSDF_INCLUDE_PATH}) diff --git a/external/external_cosmotool.cmake b/external/external_cosmotool.cmake new file mode 100644 index 0000000..cc982ec --- /dev/null +++ b/external/external_cosmotool.cmake @@ -0,0 +1,31 @@ +################## +# Build CosmoTool +################## + + +ExternalProject_Add(cosmotool + DEPENDS ${cosmotool_DEPS} + PREFIX ${BUILD_PREFIX}/cosmotool-prefix + SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/cosmotool + CMAKE_ARGS + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DHDF5_DIR=${HDF5_ROOTDIR} + -DHDF5_ROOTDIR=${HDF5_ROOTDIR} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/ext_build/cosmotool + -DNETCDF_INCLUDE_PATH=${NETCDF_INCLUDE_PATH} + -DNETCDFCPP_INCLUDE_PATH=${NETCDFCPP_INCLUDE_PATH} + -DGSL_INCLUDE_PATH=${GSL_INCLUDE_PATH} + -DGSL_LIBRARY=${GSL_LIBRARY} + -DGSLCBLAS_LIBRARY=${GSLCBLAS_LIBRARY} + -DNETCDF_LIBRARY=${NETCDF_LIBRARY} + -DNETCDFCPP_LIBRARY=${NETCDFCPP_LIBRARY} + -DENABLE_SHARP=OFF + -DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIRS} + ${CYTHON_OPTION} + +) +SET(COSMOTOOL_LIBRARY ${CMAKE_BINARY_DIR}/ext_build/cosmotool/lib/libCosmoTool.a) +set(COSMOTOOL_INCLUDE_PATH ${CMAKE_BINARY_DIR}/ext_build/cosmotool/include) + +include_directories(${COSMOTOOL_INCLUDE_PATH} ) diff --git a/external/external_python_build.cmake b/external/external_python_build.cmake index 0c4a953..fa04270 100644 --- a/external/external_python_build.cmake +++ b/external/external_python_build.cmake @@ -27,7 +27,7 @@ ELSE (PYTHON_VERSION_STRING VERSION_LESS 2.7) ENDIF (PYTHON_VERSION_STRING VERSION_LESS 2.7) IF(INTERNAL_CYTHON) - SET(CYTHON_URL "https://pypi.python.org/packages/73/8c/0c7de501038e9aaa6128219bf28989e55f129b5b31c5a66a55f648289466/Cython-0.17.1.tar.gz" CACHE STRING "URL to download Cython from") + SET(CYTHON_URL "https://files.pythonhosted.org/packages/d2/12/8ef44cede251b93322e8503fd6e1b25a0249fa498bebec191a5a06adbe51/Cython-0.28.4.tar.gz" CACHE STRING "URL to download Cython from") mark_as_advanced(CYTHON_URL) ENDIF(INTERNAL_CYTHON) @@ -82,6 +82,7 @@ SET(BASIC_PYTHON_ENV "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} " IF(INTERNAL_CYTHON) + SET(cosmotool_DEPS ${cosmotool_DEPS} cython) SET(BUILD_ENVIRONMENT ${CMAKE_COMMAND} ${BASIC_PYTHON_ENV} @@ -89,7 +90,7 @@ IF(INTERNAL_CYTHON) ExternalProject_Add(cython DEPENDS ${PREV_PYTHON_BUILD} URL ${CYTHON_URL} - URL_HASH MD5=f0bd2494dbe080a1185b61fa358135f2 + URL_HASH SHA256=76ac2b08d3d956d77b574bb43cbf1d37bd58b9d50c04ba281303e695854ebc46 PREFIX ${BUILD_PREFIX}/cython-prefix CONFIGURE_COMMAND echo "No configure" BUILD_IN_SOURCE 1 @@ -97,6 +98,14 @@ IF(INTERNAL_CYTHON) INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake ) SET(PREV_PYTHON_BUILD ${PREV_PYTHON_BUILD} cython) + file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cython-wrap + "#!/bin/sh\n${CMAKE_BINARY_DIR}/run_python.sh ${CMAKE_BINARY_DIR}/ext_build/python/bin/cython $@\n") + file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cython-wrap + DESTINATION ${CMAKE_BINARY_DIR}/ext_build/python/bin + FILE_PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE) + SET(CYTHON_OPTION -DCYTHON:FILEPATH=${CMAKE_BINARY_DIR}/ext_build/python/bin/cython-wrap) +ELSE() + SET(CYTHON_OPTION ) ENDIF(INTERNAL_CYTHON)