Merge pull request #1819 from jotelha/master

Find parallel NetCDF with cmake for USER-NETCDF
This commit is contained in:
Axel Kohlmeyer
2020-01-07 16:39:35 -05:00
committed by GitHub
3 changed files with 82 additions and 5 deletions

View File

@ -46,10 +46,14 @@ endif()
find_path (NETCDF_INCLUDE_DIR netcdf.h
HINTS "${NETCDF_DIR}/include")
mark_as_advanced (NETCDF_INCLUDE_DIR)
set (NETCDF_C_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR})
string(REGEX REPLACE "/include/?$" ""
NETCDF_LIB_HINT ${NETCDF_INCLUDE_DIR})
find_library (NETCDF_LIBRARY NAMES netcdf
HINTS "${NETCDF_DIR}/lib")
HINTS "${NETCDF_DIR}" "${NETCDF_LIB_HINT}" PATH_SUFFIXES lib lib64)
mark_as_advanced (NETCDF_LIBRARY)
set (NETCDF_C_LIBRARIES ${NETCDF_LIBRARY})

View File

@ -0,0 +1,55 @@
# source: https://ftp.space.dtu.dk/pub/Ioana/pism0.6.1-10/CMake/FindPNetCDF.cmake
# license: GPL v3 (https://ftp.space.dtu.dk/pub/Ioana/pism0.6.1-10/COPYING)
#
# - Find PNetCDF
# Find the native PNetCDF includes and library
#
# PNETCDF_INCLUDES - where to find netcdf.h, etc
# PNETCDF_LIBRARIES - Link these libraries when using NetCDF
# PNETCDF_FOUND - True if PNetCDF was found
#
# Normal usage would be:
# find_package (PNetCDF REQUIRED)
# target_link_libraries (uses_pnetcdf ${PNETCDF_LIBRARIES})
if (PNETCDF_INCLUDES AND PNETCDF_LIBRARIES)
# Already in cache, be silent
set (PNETCDF_FIND_QUIETLY TRUE)
endif (PNETCDF_INCLUDES AND PNETCDF_LIBRARIES)
find_path (PNETCDF_INCLUDES pnetcdf.h
HINTS "${PNETCDF_ROOT}/include" "$ENV{PNETCDF_ROOT}/include")
string(REGEX REPLACE "/include/?$" ""
PNETCDF_LIB_HINT ${PNETCDF_INCLUDES})
find_library (PNETCDF_LIBRARIES
NAMES pnetcdf
HINTS ${PNETCDF_LIB_HINT} PATH_SUFFIXES lib lib64)
if ((NOT PNETCDF_LIBRARIES) OR (NOT PNETCDF_INCLUDES))
message(STATUS "Trying to find PNetCDF using LD_LIBRARY_PATH (we're desperate)...")
file(TO_CMAKE_PATH "$ENV{LD_LIBRARY_PATH}" LD_LIBRARY_PATH)
find_library(PNETCDF_LIBRARIES
NAMES pnetcdf
HINTS ${LD_LIBRARY_PATH})
if (PNETCDF_LIBRARIES)
get_filename_component(PNETCDF_LIB_DIR ${PNETCDF_LIBRARIES} PATH)
string(REGEX REPLACE "/(lib|lib64)/?$" "/include"
PNETCDF_H_HINT ${PNETCDF_LIB_DIR})
find_path (PNETCDF_INCLUDES pnetcdf.h
HINTS ${PNETCDF_H_HINT}
DOC "Path to pnetcdf.h")
endif()
endif()
# handle the QUIETLY and REQUIRED arguments and set PNETCDF_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (PNetCDF DEFAULT_MSG PNETCDF_LIBRARIES PNETCDF_INCLUDES)
mark_as_advanced (PNETCDF_LIBRARIES PNETCDF_INCLUDES)

View File

@ -1,6 +1,24 @@
if(PKG_USER-NETCDF)
find_package(NetCDF REQUIRED)
include_directories(${NETCDF_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020)
# USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary.
# NetCDF library enables dump sytle "netcdf", while PNetCDF enables dump style "netcdf/mpiio"
find_package(NetCDF)
if(NETCDF_FOUND)
find_package(PNetCDF)
else(NETCDF_FOUND)
find_package(PNetCDF REQUIRED)
endif(NETCDF_FOUND)
if(NETCDF_FOUND)
include_directories(${NETCDF_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
add_definitions(-DLMP_HAS_NETCDF)
endif(NETCDF_FOUND)
if(PNETCDF_FOUND)
include_directories(${PNETCDF_INCLUDES})
list(APPEND LAMMPS_LINK_LIBS ${PNETCDF_LIBRARIES})
add_definitions(-DLMP_HAS_PNETCDF)
endif(PNETCDF_FOUND)
add_definitions(-DNC_64BIT_DATA=0x0020)
endif()