HPCW 3.0
Loading...
Searching...
No Matches
eccodes.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 Antoine Morvan
4# All rights reserved.
5#
6# SPDX-License-Identifier: Apache-2.0
7
8set_property(GLOBAL PROPERTY eccodes_can_use_system TRUE)
9set_property(GLOBAL PROPERTY eccodes_depends netcdf libaec ecbuild)
10
11set(eccodes_cmake_args "" CACHE STRING "Custom CMake arguments for ecCodes")
12set(eccodes_build_args "" CACHE STRING "Custom Make arguments for ecCodes")
13
14if(eccodes_enabled)
15 if(USE_SYSTEM_eccodes)
16 message(STATUS "ECCODES: enabled (system installed)")
17 find_package(eccodes MODULE REQUIRED)
18
19 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}" "${eccodes_LIBRARY_DIRS}")
20 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}" "${eccodes_LIBRARY_DIRS}")
21 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}" "${eccodes_f90_LIBRARY_DIRS}")
22 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}" "${eccodes_f90_LIBRARY_DIRS}")
23 set_if_not_present(ENV{CPATH} "$ENV{CPATH}" "${eccodes_INCLUDE_DIRS}")
24 else()
25 if(NOT TARGET eccodes)
26 message(STATUS "ECCODES: enabled (internally built)")
27
28 ExternalProject_Data_Add(
29 eccodes
30 ${eccodes_revision}
31 DEPENDS netcdf::C libaec
32 CMAKE_ARGS ${cmake_params}
33 -DBUILD_SHARED_LIBS:BOOL=ON
34 -DCMAKE_INSTALL_PREFIX:FILEPATH=<INSTALL_DIR>
35 -DENABLE_FORTRAN=ON
36 -DECBUILD_TRUST_FLAGS:BOOL=ON
37 -DENABLE_AEC=ON
38 -DENABLE_PNG=OFF
39 -DENABLE_NETCDF=ON
40 -DENABLE_ECCODES_THREADS=ON
41 -DCMAKE_MODULE_PATH=${ecbuild_DIR}/cmake
42 ${default_cmake_args}
43 ${eccodes_cmake_args}
44 BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} -j${BUILD_PARALLEL_LEVEL} ${default_build_args} ${eccodes_build_args})
45
46 add_library(eccodes_f90 UNKNOWN IMPORTED)
47 ExternalProject_Get_Property(eccodes INSTALL_DIR)
48 set(ECCODES_DIR ${INSTALL_DIR})
49
50 set_if_not_present(ENV{CPATH} "$ENV{CPATH}" "${ECCODES_DIR}/include")
51 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}" "${ECCODES_DIR}/lib64")
52 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}" "${ECCODES_DIR}/lib64")
53 set_if_not_present(ENV{PATH} "$ENV{PATH}" "${ECCODES_DIR}/bin")
54 endif()
55 endif()
56endif()