2 # Eventually replace with pnetCDF's actual config if using that
3 # Once found this file will define:
4 # pnetCDF_FOUND - System has pnetcdf
5 # pnetCDF_INCLUDE_DIRS - The pnetcdf include directories
6 # pnetCDF_LIBRARIES - The libraries needed to use pnetcdf
7 # pnetCDF_DEFINITIONS - Compiler switches required for using pnetcdf
9 # list( REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR} )
10 # find_package( pnetCDF )
11 # list( APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR} )
20 if ( ${PNETCDF_PROGRAM} MATCHES "-NOTFOUND$" )
21 message( STATUS "No pnetcdf-config found : ${PNETCDF_PROGRAM}" )
23 message( STATUS "Found PNETCDF_PROGRAM : ${PNETCDF_PROGRAM}" )
25 execute_process( COMMAND ${PNETCDF_PROGRAM} --includedir OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_INCLUDE_DIR )
26 execute_process( COMMAND ${PNETCDF_PROGRAM} --libdir OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_LIBRARY_DIR )
27 execute_process( COMMAND ${PNETCDF_PROGRAM} --prefix OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_PREFIX )
28 execute_process( COMMAND ${PNETCDF_PROGRAM} --version OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_VERSION_RAW )
29 execute_process( COMMAND ${PNETCDF_PROGRAM} --netcdf4 OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_NC4_ENABLED )
31 execute_process( COMMAND ${PNETCDF_PROGRAM} --has-c++ OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_CXX_YES )
32 execute_process( COMMAND ${PNETCDF_PROGRAM} --has-fortran OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE pnetCDF_FORTRAN_YES )
34 # check for large file support
35 find_file( pnetCDF_INCLUDE_FILE pnetcdf.inc ${pnetCDF_INCLUDE_DIR} )
36 file( READ ${pnetCDF_INCLUDE_FILE} pnetCDF_INCLUDE_FILE_STR )
37 string( FIND "${pnetCDF_INCLUDE_FILE_STR}" "nf_format_64bit" pnetCDF_LARGE_FILE_SUPPORT_FOUND )
38 if ( ${pnetCDF_LARGE_FILE_SUPPORT_FOUND} EQUAL -1 )
39 set( pnetCDF_LARGE_FILE_SUPPORT "NO" )
41 set( pnetCDF_LARGE_FILE_SUPPORT "YES" )
45 string( REPLACE " " ";" pnetCDF_VERSION_LIST ${pnetCDF_VERSION_RAW} )
46 list( GET pnetCDF_VERSION_LIST -1 pnetCDF_VERSION )
48 # Note that pnetCDF has decided to change things up and use "disabled" instead of "yes/no"
49 string( TOLOWER ${pnetCDF_NC4_ENABLED} pnetCDF_NC4_ENABLED )
50 if ( ${pnetCDF_NC4_ENABLED} STREQUAL "enabled" )
51 set( pnetCDF_NC4 "YES" )
53 set( pnetCDF_NC4 "NO" )
56 string( TOUPPER ${pnetCDF_CXX_YES} pnetCDF_CXX )
57 string( TOUPPER ${pnetCDF_FORTRAN_YES} pnetCDF_FORTRAN )
60 set( pnetCDF_DEFINITIONS )
67 HINTS ${pnetCDF_LIBRARY_DIR}
72 set( pnetCDF_LIBRARIES
73 $<$<LINK_LANGUAGE:C>:${pnetCDF_LIBRARY}>
74 $<$<BOOL:${pnetCDF_CXX}>:$<$<LINK_LANGUAGE:CXX>:${pnetCDF_LIBRARY}>>
75 $<$<BOOL:${pnetCDF_FORTRAN}>:$<$<LINK_LANGUAGE:Fortran>:${pnetCDF_LIBRARY}>>
77 set( pnetCDF_INCLUDE_DIRS ${pnetCDF_INCLUDE_DIR} )
79 find_package( PkgConfig )
80 include(FindPackageHandleStandardArgs)
82 # handle the QUIETLY and REQUIRED arguments and set pnetCDF_FOUND to TRUE
83 # if all listed variables are TRUE
84 find_package_handle_standard_args( pnetCDF DEFAULT_MSG
90 # mark_as_advanced( pnetCDF_CLIBS pnetCDF_CXXLIBS pnetCDF_FLIBS )