Restructure netCDF find modules to use modern import target #2054
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TYPE: enhancement
KEYWORDS: netCDF, cmake, compilation
SOURCE: internal
DESCRIPTION OF CHANGES:
Problem:
The current iteration of the cmake build uses the old-style of finding modules. This limits the usability of transitive properties as well as the native netCDF cmake build which provide imported targets.
See https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#find-modules for more information on module writing.
Solution:
Augment the output of the provided find module to supply an imported target that fully describes the netCDF library. Additionally, in rewriting how targets in WRF reference netCDF remove unnecessary linking to the library. Ensure the provided import target and flags of the find module matches the netCDF[-Fortran].cmake.in outputs verbatim thus emulating the native netCDF build for additional robustness.
LIST OF MODIFIED FILES:
M CMakeLists.txt
M cmake/modules/FindnetCDF-Fortran.cmake
M cmake/modules/FindnetCDF.cmake
M external/CMakeLists.txt
M external/RSL_LITE/CMakeLists.txt
M external/atm_ocn/CMakeLists.txt
M external/esmf_time_f90/CMakeLists.txt
M external/fftpack/fftpack5/CMakeLists.txt
M external/io_adios2/CMakeLists.txt
M external/io_esmf/CMakeLists.txt
M external/io_grib1/CMakeLists.txt
M external/io_grib1/MEL_grib1/CMakeLists.txt
M external/io_grib1/WGRIB/CMakeLists.txt
M external/io_grib1/grib1_util/CMakeLists.txt
M external/io_grib2/bacio-1.3/CMakeLists.txt
M external/io_grib2/g2lib/CMakeLists.txt
M external/io_grib_share/CMakeLists.txt
M external/io_netcdf/CMakeLists.txt
M external/io_netcdfpar/CMakeLists.txt
RELEASE NOTE:
Restructure netCDF find modules to use modern import target