HPCW 3.0
Loading...
Searching...
No Matches
cdo.cmake
Go to the documentation of this file.
1# Copyright (c) 2020 - 2024 David Guibert
2# Copyright (c) 2024 - 2025 Niclas Schroeter
3# Copyright (c) 2024 - 2025 Antoine Morvan
4# All rights reserved.
5#
6# SPDX-License-Identifier: Apache-2.0
7
8set_property(GLOBAL PROPERTY cdo_can_use_system TRUE)
9set_property(GLOBAL PROPERTY cdo_depends szip eccodes netcdf)
10
11set(cdo_configure_args "" CACHE STRING "Custom configure arguments for cdo")
12set(cdo_build_args "" CACHE STRING "Custom Make arguments for cdo")
13
14if(cdo_enabled)
15 if(USE_SYSTEM_cdo)
16 message(STATUS "CDO: enabled (system installed)")
17 find_program(CDO_PROGRAM cdo REQUIRED)
18 get_filename_component(CDO_BIN_DIR "${CDO_PROGRAM}" DIRECTORY)
19 set_if_not_present(ENV{PATH} "$ENV{PATH}" "${CDO_BIN_DIR}")
20 else()
21 message(STATUS "CDO: enabled (internally built)")
22
23 ExternalProject_Data_Add(
24 cdo
25 DEPENDS SZIP::SZIP eccodes netcdf::C ${cdo_revision}
26 PATCH_COMMAND ${Patch_EXECUTABLE} -p1 -i
27 ${CMAKE_SOURCE_DIR}/projects/cdo.patch
28 CONFIGURE_COMMAND env
29 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
30 LIBRARY_PATH=$ENV{LIBRARY_PATH}
31 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}
32 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}
33 F77=${CMAKE_Fortran_COMPILER} ./configure --prefix=<INSTALL_DIR>
34 --with-netcdf=${NETCDF_DIR} --with-szlib=${SZIP_DIR} --with-eccodes
35 "LDFLAGS=$ENV{LDFLAGS} -L${HDF5_DIR}/lib -lhdf5_hl -lhdf5" ${default_configure_args} ${cdo_configure_args} ${cdo_patching}
36 BUILD_COMMAND env
37 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
38 LIBRARY_PATH=$ENV{LIBRARY_PATH}
39 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}
40 ${CMAKE_MAKE_PROGRAM} -j${BUILD_PARALLEL_LEVEL} ${default_build_args} ${cdo_build_args})
41
42 ExternalProject_Get_Property(cdo INSTALL_DIR)
43 set(CDO_DIR ${INSTALL_DIR})
44 set(CDO_BIN_DIR ${INSTALL_DIR}/bin)
45
46 set_if_not_present(ENV{PATH} "$ENV{PATH}" "${CDO_DIR}/bin")
47 set_if_not_present(ENV{CPATH} "$ENV{CPATH}" "${CDO_DIR}/include")
48 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}" "${CDO_DIR}/lib")
49 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}"
50 "${CDO_DIR}/lib")
51
52 endif(USE_SYSTEM_cdo)
53endif(cdo_enabled)