Skip to content

Commit cd763be

Browse files
committed
Replace manual config queries with list constructed variable query
1 parent b7f31dc commit cd763be

File tree

2 files changed

+42
-12
lines changed

2 files changed

+42
-12
lines changed

cmake/modules/FindnetCDF-Fortran.cmake

+16-3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ else()
4343
execute_process( COMMAND ${NETCDF-FORTRAN_PROGRAM} --prefix OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF-Fortran_PREFIX )
4444
execute_process( COMMAND ${NETCDF-FORTRAN_PROGRAM} --flibs OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF-Fortran_FLIBS )
4545
execute_process( COMMAND ${NETCDF-FORTRAN_PROGRAM} --version OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF-Fortran_VERSION_RAW )
46-
execute_process( COMMAND ${NETCDF-FORTRAN_PROGRAM} --has-nc4 OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF-Fortran_NC4_YES )
4746

4847
# check for large file support
4948
find_file( netCDF-Fortran_INCLUDE_FILE netcdf.inc ${netCDF-Fortran_INCLUDE_DIR} )
@@ -59,11 +58,25 @@ else()
5958
string( REPLACE " " ";" netCDF-Fortran_VERSION_LIST ${netCDF-Fortran_VERSION_RAW} )
6059
list( GET netCDF-Fortran_VERSION_LIST -1 netCDF-Fortran_VERSION )
6160

62-
# Convert to YES/NO - Note cannot be generator expression if you want to use it during configuration time
63-
string( TOUPPER ${netCDF-Fortran_NC4_YES} netCDF-Fortran_NC4 )
61+
# These do not pull all options available from nc-config out, but rather mirrors what is available from netCDFConfig.cmake.in
62+
set(
63+
netCDF-Fortran_QUERY_YES_OPTIONS
64+
dap
65+
nc2
66+
nc4
67+
f90
68+
f03
69+
)
6470

6571
set( netCDF-Fortran_DEFINITIONS )
6672
set( netCDF-Fortran_LIBRARY_DIR ${netCDF-Fortran_PREFIX}/lib )
73+
foreach( NF_QUERY ${netCDF-Fortran_QUERY_YES_OPTIONS} )
74+
execute_process( COMMAND ${NETCDF-FORTRAN_PROGRAM} --has-${NF_QUERY} OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF-Fortran_${NF_QUERY}_LOWERCASE )
75+
string( TOUPPER ${NF_QUERY} NF_QUERY_UPPERCASE )
76+
string( TOUPPER ${netCDF-Fortran_${NF_QUERY}_LOWERCASE} NF_ANSWER_UPPERCASE )
77+
# Convert to netCDF-Fortran_HAS_* = YES/NO - Note this cannot be generator expression if you want to use it during configuration time
78+
set( netCDF-Fortran_HAS_${NF_QUERY_UPPERCASE} ${NF_ANSWER_UPPERCASE} )
79+
endforeach()
6780

6881
set( netCDF-Fortran_LIBRARIES
6982
$<$<LINK_LANGUAGE:Fortran>:${netCDF-Fortran_FLIBS}>

cmake/modules/FindnetCDF.cmake

+26-9
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,32 @@ else()
4545
execute_process( COMMAND ${NETCDF_PROGRAM} --prefix OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_PREFIX )
4646
execute_process( COMMAND ${NETCDF_PROGRAM} --libs OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_CLIBS )
4747
execute_process( COMMAND ${NETCDF_PROGRAM} --version OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_VERSION_RAW )
48-
execute_process( COMMAND ${NETCDF_PROGRAM} --has-nc4 OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_NC4_YES )
49-
execute_process( COMMAND ${NETCDF_PROGRAM} --has-pnetcdf OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_PNETCDF_YES )
50-
execute_process( COMMAND ${NETCDF_PROGRAM} --has-parallel OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_PARALLEL_YES )
48+
49+
# These do not pull all options available from nc-config out, but rather mirrors what is available from netCDFConfig.cmake.in
50+
set(
51+
netCDF_QUERY_YES_OPTIONS
52+
dap
53+
dap2
54+
dap4
55+
nc2
56+
nc4
57+
hdf5
58+
hdf4
59+
pnetcdf
60+
parallel
61+
62+
# These are not part of the config but used in this to provide the properly linking
63+
szlib
64+
zstd
65+
)
66+
67+
foreach( NC_QUERY ${netCDF_QUERY_YES_OPTIONS} )
68+
execute_process( COMMAND ${NETCDF_PROGRAM} --has-${NC_QUERY} OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE netCDF_${NC_QUERY}_LOWERCASE )
69+
string( TOUPPER ${NC_QUERY} NC_QUERY_UPPERCASE )
70+
string( TOUPPER ${netCDF_${NC_QUERY}_LOWERCASE} NC_ANSWER_UPPERCASE )
71+
# Convert to netCDF_HAS_* = YES/NO - Note this cannot be generator expression if you want to use it during configuration time
72+
set( netCDF_HAS_${NC_QUERY_UPPERCASE} ${NC_ANSWER_UPPERCASE} )
73+
endforeach()
5174

5275
# check for large file support
5376
find_file( netCDF_INCLUDE_FILE netcdf.h ${netCDF_INCLUDE_DIR} )
@@ -63,13 +86,7 @@ else()
6386
string( REPLACE " " ";" netCDF_VERSION_LIST ${netCDF_VERSION_RAW} )
6487
list( GET netCDF_VERSION_LIST -1 netCDF_VERSION )
6588

66-
# Convert to YES/NO - Note cannot be generator expression if you want to use it during configuration time
67-
string( TOUPPER ${netCDF_NC4_YES} netCDF_NC4 )
68-
string( TOUPPER ${netCDF_PNETCDF_YES} netCDF_PNETCDF )
69-
string( TOUPPER ${netCDF_PARALLEL_YES} netCDF_PARALLEL )
70-
7189
set( netCDF_DEFINITIONS )
72-
7390
set( netCDF_LIBRARIES
7491
# All supported language variants will need this regardless - this may conflict with the RPATH in any
7592
# supplemental packages so be careful to use compatible langauge versions of netCDF

0 commit comments

Comments
 (0)