Merge pull request #1819 from jotelha/master
Find parallel NetCDF with cmake for USER-NETCDF
This commit is contained in:
@ -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})
|
||||
|
||||
55
cmake/Modules/FindPNetCDF.cmake
Normal file
55
cmake/Modules/FindPNetCDF.cmake
Normal 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)
|
||||
@ -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()
|
||||
|
||||
Reference in New Issue
Block a user