From a4724f7aeea2f15cf032e39f4c38af08ace53280 Mon Sep 17 00:00:00 2001 From: Ward Fisher Date: Thu, 6 Nov 2014 15:48:28 -0700 Subject: [PATCH] Initial attempt at getting netcdf-c to automatically build and install netcdf-fortran. --- CMakeLists.txt | 15 +++++++++++++++ PostInstall.cmake | 1 + fortran_install.sh.in | 18 ++++++++++++++++++ liblib/CMakeLists.txt | 7 +++++++ 4 files changed, 41 insertions(+) create mode 100644 PostInstall.cmake create mode 100755 fortran_install.sh.in diff --git a/CMakeLists.txt b/CMakeLists.txt index c6bc7db5d..d5a304554 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,6 +309,14 @@ OPTION(ENABLE_LOGGING "Enable Logging." OFF) IF(ENABLE_LOGGING) SET(LOGGING ON) ENDIF() + +# Option to automatically build netcdf-fortran. +OPTION(BUILD_FORTRAN "Download and build netcdf-fortran automatically." OFF) +IF(BUILD_FORTRAN) + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/fortran_install.sh.in" + "${CMAKE_BINARY_DIR}/fortran_install.sh") +ENDIF(BUILD_FORTRAN) + # Option to use HDF4 OPTION(ENABLE_HDF4 "Build netCDF-4 with HDF5 read capability(HDF4, HDF5 and Zlib required)." OFF) IF(ENABLE_HDF4) @@ -1520,5 +1528,12 @@ install( # End export files #### +### +# If build fortran, we will want to run a script. +### +IF(BUILD_FORTRAN) + INSTALL(SCRIPT "${CMAKE_SOURCE_DIR}/PostInstall.cmake") +ENDIF(BUILD_FORTRAN) + # CPack inclusion must come last. INCLUDE(CPack) diff --git a/PostInstall.cmake b/PostInstall.cmake new file mode 100644 index 000000000..027fb2968 --- /dev/null +++ b/PostInstall.cmake @@ -0,0 +1 @@ +EXECUTE_PROCESS(COMMAND sh -c "${CMAKE_BINARY_DIR}/fortran_install.sh") \ No newline at end of file diff --git a/fortran_install.sh.in b/fortran_install.sh.in new file mode 100755 index 000000000..e2bcc4118 --- /dev/null +++ b/fortran_install.sh.in @@ -0,0 +1,18 @@ +#!/bin/bash +# Script to automatically build, install netcdf-fortran. +# Very rought draft. + + +### +# Fetch netcdf-fortran from git +### +git clone http://github.com/unidata/netcdf-fortran +cd netcdf-fortran +mkdir -p build +cd build +git checkout v4.4.1 + +### +# Invoke cmake to build netcdf-fortran +### +cmake .. -DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@ -DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ && make && make install diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt index 00cf0f3bd..ee215b38f 100644 --- a/liblib/CMakeLists.txt +++ b/liblib/CMakeLists.txt @@ -110,6 +110,13 @@ INSTALL( INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) +### +# If build fortran, we will want to run a script. +### +IF(BUILD_FORTRAN) + INSTALL(SCRIPT "${CMAKE_SOURCE_DIR}/PostInstall.cmake") +ENDIF(BUILD_FORTRAN) + SET(ALL_TLL_LIBS ${TLL_LIBS} PARENT_SCOPE) SET(NC_LIBS ${NC_LIBS} PARENT_SCOPE)