From eaa35ea07e004e62b00eb710b9c3c7e4b5f0d0fe Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Wed, 31 Oct 2012 14:50:41 -0400 Subject: [PATCH] Build python dependencies: Python, NetCDF4 --- external/external_python_build.cmake | 54 ++++++++++++++++++++++++++++ external/python_build.cmake | 6 ++++ external/python_install.cmake | 5 +++ 3 files changed, 65 insertions(+) create mode 100644 external/external_python_build.cmake create mode 100644 external/python_build.cmake create mode 100644 external/python_install.cmake diff --git a/external/external_python_build.cmake b/external/external_python_build.cmake new file mode 100644 index 0000000..86de2cb --- /dev/null +++ b/external/external_python_build.cmake @@ -0,0 +1,54 @@ +INCLUDE(FindPythonInterp) + +SET(INTERNAL_NETCDF4_PYTHON ON) +SET(INTERNAL_CYTHON ON) + + +IF(INTERNAL_CYTHON) + SET(CYTHON_URL "http://cython.org/release/Cython-0.17.1.tar.gz" CACHE STRING "URL to download Cython from") +ENDIF(INTERNAL_CYTHON) + +IF(INTERNAL_NETCDF4_PYTHON) + SET(NETCDF4_PYTHON_URL "http://netcdf4-python.googlecode.com/files/netCDF4-1.0.1.tar.gz" CACHE STRING "URL to download NetCDF4-python from") +ENDIF(INTERNAL_NETCDF4_PYTHON) + + + + + +IF(INTERNAL_CYTHON) + ExternalProject_Add(cython + DEPENDS ${PREV_PYTHON_BUILD} + URL ${CYTHON_URL} + PREFIX ${BUILD_PREFIX}/cython-prefix + CONFIGURE_COMMAND echo "No configure" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${PYTHON_EXECUTABLE} setup.py build + INSTALL_COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${CMAKE_BINARY_DIR}/ext_build/python + ) + SET(PREV_PYTHON_BUILD ${PREV_PYTHON_BUILD} cython) +ENDIF(INTERNAL_CYTHON) + + +IF(INTERNAL_NETCDF4_PYTHON) + SET(PYTHON_CPPFLAGS -I${NETCDF_INCLUDE_PATH}) + SET(PYTHON_LDFLAGS -L${NETCDF_BIN_DIR}/lib) + SET(BUILD_ENVIRONMENT + ${CMAKE_COMMAND} + "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" + "-DPYTHON_CPPFLAGS:STRING=${PYTHON_CPPFLAGS}" + "-DHDF5_DIR=${HDF5_BIN_DIR}" + "-DNETCDF4_DIR=${NETCDF_BIN_DIR}" + "-DPYTHON_LDFLAGS:STRING=${PYTHON_LDFLAGS}" + "-DTARGET_PATH=${CMAKE_BINARY_DIR}/ext_build/python" "-P") + + ExternalProject_Add(netcdf4-python + DEPENDS ${PREV_PYTHON_BUILD} + URL ${NETCDF4_PYTHON_URL} + PREFIX ${BUILD_PREFIX}/netcdf4-python-prefix + CONFIGURE_COMMAND echo "No configure" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake + INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake + ) +ENDIF(INTERNAL_NETCDF4_PYTHON) diff --git a/external/python_build.cmake b/external/python_build.cmake new file mode 100644 index 0000000..0d1b968 --- /dev/null +++ b/external/python_build.cmake @@ -0,0 +1,6 @@ +SET(ENV{HDF5_DIR} ${HDF5_DIR}) +SET(ENV{NETCDF4_DIR} ${NETCDF4_DIR}) +SET(ENV{CPPFLAGS} ${PYTHON_CPPFLAGS}) +SET(ENV{LDFLAGS} ${PYTHON_LDFLAGS}) +SET(ENV{PYTHONPATH} ${TARGET_PATH}/lib/python2.7/site-packages:$ENV{PYTHONPATH}) +execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py build) diff --git a/external/python_install.cmake b/external/python_install.cmake new file mode 100644 index 0000000..fa40226 --- /dev/null +++ b/external/python_install.cmake @@ -0,0 +1,5 @@ +SET(ENV{HDF5_DIR} ${HDF5_DIR}) +SET(ENV{NETCDF4_DIR} ${NETCDF4_DIR}) +SET(ENV{CPPFLAGS} ${PYTHON_CPPFLAGS}) +SET(ENV{LDFLAGS} ${PYTHON_LDFLAGS}) +execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${TARGET_PATH})