Unverified Commit 8cc8c279 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1819 from jotelha/master

Find parallel NetCDF with cmake for USER-NETCDF
parents 0dda120e 46584d45
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
# 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)
+22 −4
Original line number Diff line number Diff line
if(PKG_USER-NETCDF)
  find_package(NetCDF REQUIRED)
  # 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 -DNC_64BIT_DATA=0x0020)
    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()