Skip to content

Commit

Permalink
Merge branch 'relax_coord_bound' of https://github.com/wkliao/netcdf-…
Browse files Browse the repository at this point in the history
…fortran into pr-aggregation.wif
  • Loading branch information
WardF committed Jul 30, 2018
2 parents 63cf211 + 98c9b3e commit 6479773
Show file tree
Hide file tree
Showing 17 changed files with 156 additions and 52 deletions.
8 changes: 4 additions & 4 deletions .travis.yml
Expand Up @@ -12,11 +12,11 @@ services:

env:
matrix:
- DOCKIMG=unidata/nctests:serial USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x64-signed
- DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x86-signed
- DOCKIMG=unidata/nctests:serial USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x64-signed
- DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x86-signed

- DOCKIMG=unidata/nctests:serial USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x64-unsigned
- DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x86-unsigned
- DOCKIMG=unidata/nctests:serial USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x64-unsigned
- DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DENABLE_NETCDF4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x86-unsigned

- DOCKIMG=unidata/nctests:serial USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-gcc-x64-signed
- DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-gcc-x86-signed
Expand Down
4 changes: 3 additions & 1 deletion CMakeExtras/Makefile.am
@@ -1 +1,3 @@
EXTRA_DIST = sizeof_ptrdiff_t.c test_c_ptrdiff_t.f90 MatchNetCDFFortranTypes.cmake
EXTRA_DIST = sizeof_ptrdiff_t.c test_c_ptrdiff_t.f90 \
MatchNetCDFFortranTypes.cmake \
check_relax_coord_bound.c check_pnetcdf.c check_parallel4.c
6 changes: 6 additions & 0 deletions CMakeExtras/check_parallel4.c
@@ -0,0 +1,6 @@
#include <netcdf_meta.h>
#if !defined(NC_HAS_PARALLEL4) || NC_HAS_PARALLEL4 == 0
choke me
#endif
int main() {return 0;}

5 changes: 5 additions & 0 deletions CMakeExtras/check_pnetcdf.c
@@ -0,0 +1,5 @@
#include <netcdf_meta.h>
#if !defined(NC_HAS_PNETCDF) || NC_HAS_PNETCDF == 0
choke me
#endif
int main() {return 0;}
5 changes: 5 additions & 0 deletions CMakeExtras/check_relax_coord_bound.c
@@ -0,0 +1,5 @@
#include <netcdf_meta.h>
#if !defined(NC_RELAX_COORD_BOUND) || NC_RELAX_COORD_BOUND == 0
choke me
#endif
int main() {return 0;}
95 changes: 58 additions & 37 deletions CMakeLists.txt
Expand Up @@ -287,7 +287,10 @@ MACRO(print_conf_summary)
MESSAGE(STATUS "\tUsing pnetcdf:\t\t\t" ${STATUS_PNETCDF})
ENDIF(STATUS_PNETCDF)

MESSAGE(STATUS "\tUsing Parallel IO:\t\t" ${STATUS_PARALLEL})
MESSAGE(STATUS "\tBuilding Parallel IO:\t\t" ${BUILD_PARALLEL})
MESSAGE(STATUS "\tUsing NetCDF4 Parallel IO:\t" ${NF_HAS_PARALLEL4})
MESSAGE(STATUS "\tUsing PnetCDF Parallel IO:\t" ${NF_HAS_PNETCDF})
MESSAGE(STATUS "\tTesting Parallel IO:\t\t" ${TEST_PARALLEL})

IF(CMAKE_PREFIX_PATH)
MESSAGE(STATUS "\tCMake Prefix Path:\t\t" "${CMAKE_PREFIX_PATH}")
Expand Down Expand Up @@ -393,37 +396,28 @@ IF(ENABLE_PARALLEL_TESTS)
ENDIF()

###
# Seek out dependent libraries.
# Seek out netcdf library file and include path.
###

IF(NOT netCDF_LIBRARIES AND NOT netCDF_INCLUDE_DIR)
FIND_PACKAGE(netCDF)
ELSE()
SET(netCDF_FOUND TRUE)
IF(NOT NETCDF_C_LIBRARY)
FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf)
IF(NOT NETCDF_C_LIBRARY)
MESSAGE(FATAL_ERROR "libnetcdf not found.")
ENDIF()
ENDIF()
MESSAGE(STATUS "Found netcdf library: ${NETCDF_C_LIBRARY}")

IF (netCDF_FOUND)
INCLUDE_DIRECTORIES(SYSTEM ${netCDF_INCLUDE_DIR})
SET(NETCDF_C_LIBRARY ${netCDF_LIBRARIES})
SET(NETCDF_C_INCLUDE_DIR ${netCDF_INCLUDE_DIR})
ELSE()
# netCDF not properly packaged. Try to find it manually.
FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf libnetcdf)
IF(NOT NETCDF_C_LIBRARY)
MESSAGE(FATAL_ERROR "libnetcdf not found. Please reinstall and try again.")
ELSE()
MESSAGE(STATUS "Found netcdf: ${NETCDF_C_LIBRARY}")
FIND_PATH(NC_H_INCLUDE_DIR "netcdf.h")
IF(NOT NC_H_INCLUDE_DIR)
MESSAGE(FATAL_ERROR "Directory containing netcdf.h cannot be found. Please reinstall and try again.")
ELSE()
INCLUDE_DIRECTORIES(SYSTEM ${NC_H_INCLUDE_DIR})
ENDIF()
IF(NOT NETCDF_INCLUDE_DIR)
FIND_PATH(NETCDF_INCLUDE_DIR NAMES netcdf.h)
IF(NOT NETCDF_INCLUDE_DIR)
MESSAGE(FATAL_ERROR "netcdf.h not found.")
ENDIF()
ENDIF()
MESSAGE(STATUS "Found netcdf.h in ${NETCDF_INCLUDE_DIR}")
INCLUDE_DIRECTORIES(SYSTEM ${NETCDF_INCLUDE_DIR})

###
# End 'seek out dependent libraries'
# End 'Seek out netcdf library file and include path.'
###

###
Expand Down Expand Up @@ -520,7 +514,6 @@ CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_def_opaque "" USE_NETCDF4)
CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nccreate "" USE_NETCDF_V2)
CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_set_log_level "" USE_LOGGING)
CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} oc_open "" BUILD_DAP)
CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_use_parallel_enabled "" BUILD_PARALLEL)

IF(USE_NETCDF4)
SET(NC_BUILD_V4 TRUE)
Expand All @@ -531,24 +524,18 @@ IF(USE_NETCDF_V2)
SET(HAVE_NCCREATE TRUE)
ENDIF(USE_NETCDF_V2)

SET(STATUS_LOGGING OFF)
IF(USE_LOGGING)
SET(HAVE_NC_SET_LOG_LEVEL TRUE)
SET(STATUS_LOGGING ON)
ENDIF(USE_LOGGING)

SET(ENABLE_DAP OFF)
IF(BUILD_DAP)
SET(HAVE_OC_OPEN TRUE)
SET(ENABLE_DAP ON)
ENDIF(BUILD_DAP)

IF(BUILD_PARALLEL)
SET(STATUS_PARALLEL ON)
SET(HAVE_NC_USE_PARALLEL_ENABLED TRUE)
FIND_PATH(NC_MPIF_H_PATH "mpif.h")
IF(NC_MPIF_H_PATH)
INCLUDE_DIRECTORIES(${NC_MPIF_H_PATH})
ENDIF(NC_MPIF_H_PATH)
ENDIF(BUILD_PARALLEL)
##
# Set some status messages for the summary.
##
Expand All @@ -558,10 +545,10 @@ ENDIF(BUILD_PARALLEL)
# End status messages/variables.
##

SET(ENABLE_NETCDF4 OFF)
IF(USE_NETCDF4)
SET(ENABLE_NETCDF4 ON)
ADD_DEFINITIONS(-DUSE_NETCDF4)
SET(ENABLE_NETCDF_4 ON CACHE BOOL "")
SET(ENABLE_NETCDF4 ON CACHE BOOL "")
ENDIF()

Expand All @@ -573,6 +560,40 @@ IF (UNIX AND ${CMAKE_SIZEOF_VOID_P} MATCHES "8")
endif ()
ENDIF()

# Determine C library setting for NC_RELAX_COORD_BOUND
try_compile(NF_RELAX_COORD_BOUND ${CMAKE_CURRENT_BINARY_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras/check_relax_coord_bound.c"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${NETCDF_INCLUDE_DIR}"
)

# Determine C library setting for NC_HAS_PNETCDF
try_compile(NF_HAS_PNETCDF ${CMAKE_CURRENT_BINARY_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras/check_pnetcdf.c"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${NETCDF_INCLUDE_DIR}"
)

# Determine C library setting for NC_HAS_PARALLEL4
try_compile(NF_HAS_PARALLEL4 ${CMAKE_CURRENT_BINARY_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras/check_parallel4.c"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${NETCDF_INCLUDE_DIR}"
)

IF(NF_HAS_PARALLEL4)
ADD_DEFINITIONS(-DNF_HAS_PARALLEL4)
ENDIF()
IF(NF_HAS_PNETCDF)
ADD_DEFINITIONS(-DNF_HAS_PNETCDF)
ENDIF()

IF(NF_HAS_PNETCDF OR NF_HAS_PARALLEL4)
SET(BUILD_PARALLEL ON)
SET(HAVE_NC_USE_PARALLEL_ENABLED TRUE)
ELSE(NF_HAS_PNETCDF OR NF_HAS_PARALLEL4)
SET(BUILD_PARALLEL OFF)
SET(HAVE_NC_USE_PARALLEL_ENABLED FALSE)
SET(TEST_PARALLEL OFF)
ENDIF(NF_HAS_PNETCDF OR NF_HAS_PARALLEL4)

# Determine C/Fortran pointer compatibility.
try_compile(COMPILE_SUCCESS ${CMAKE_CURRENT_BINARY_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras/test_c_ptrdiff_t.f90"
Expand Down Expand Up @@ -623,7 +644,7 @@ IF(ENABLE_FORTRAN_TYPE_CHECKS)
# Do tests to determine which Fortran types correspond to NCBYTE, NCSHORT, ...
# The configure file got these by testing an F77 program, invoking
# UD_FORTRAN_TYPES defined in acinclude.m4.

INCLUDE(CMakeExtras/MatchNetCDFFortranTypes.cmake)
ELSE()
# Set Fortran types to default.
Expand Down Expand Up @@ -714,8 +735,8 @@ IF(NC_EXTRA_DEPS)
FOREACH(_DEP ${DEPS_LIST})
STRING(REGEX REPLACE "^-l" "" _LIB ${_DEP})
FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}")
MESSAGE(${${_LIB}_DEP})
IF(NOT "${_LIB}_DEP")
# MESSAGE(${${_LIB}_DEP})
IF(${_LIB}_DEP STREQUAL "")
MESSAGE(FATAL_ERROR "Error finding ${_LIB}.")
ELSE()
MESSAGE(STATUS "Found ${_LIB}: ${${_LIB}_DEP}")
Expand Down
40 changes: 35 additions & 5 deletions configure.ac
Expand Up @@ -35,6 +35,33 @@ AC_CONFIG_SRCDIR([libsrc/fort-attio.c])

AC_MSG_NOTICE([checking user options])

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
#include <netcdf_meta.h>
#if !defined(NC_RELAX_COORD_BOUND) || NC_RELAX_COORD_BOUND == 0
choke me
#endif]])], [nc_relax_coord_bound=yes], [nc_relax_coord_bound=no])
if test "x$nc_relax_coord_bound" = xyes; then
AC_DEFINE([NF_RELAX_COORD_BOUND], [1], [Enable a more relaxed boundary error check NF_EINVALCOORDS])
fi

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
#include <netcdf_meta.h>
#if !defined(NC_HAS_PNETCDF) || NC_HAS_PNETCDF == 0
choke me
#endif]])], [nc_has_pnetcdf=yes], [nc_has_pnetcdf=no])
if test "x$nc_has_pnetcdf" = xyes; then
AC_DEFINE([NF_HAS_PNETCDF], [1], [Enable parallel I/O support via PnetCDF])
fi

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
#include <netcdf_meta.h>
#if !defined(NC_HAS_PARALLEL4) || NC_HAS_PARALLEL4 == 0
choke me
#endif]])], [nc_has_parallel4=yes], [nc_has_parallel4=no])
if test "x$nc_has_parallel4" = xyes; then
AC_DEFINE([NF_HAS_PARALLEL4], [1], [Enable parallel I/O support via HDF5])
fi

# Does the user want to run extra tests with valgrind?
AC_MSG_CHECKING([whether extra valgrind tests should be run])
AC_ARG_ENABLE([valgrind-tests],
Expand All @@ -51,6 +78,10 @@ AC_ARG_ENABLE([parallel-tests],
netCDF-4 is not enabled, or built on a system \
without parallel I/O support.])])
test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no
if test "x$nc_has_pnetcdf" = xno -a "x$nc_has_parallel4" = xno ; then
# paralle I/O is not enabled
enable_parallel_tests=no
fi
AC_MSG_RESULT($enable_parallel_tests)

# Does the user want to do some extra tests?
Expand Down Expand Up @@ -462,7 +493,7 @@ AC_CHECK_HEADERS([netcdf.h], [], [AC_MSG_ERROR([netcdf.h could not be found. Ple
AC_SEARCH_LIBS([nc_open], [netcdf])

# See if various libraries are available
AC_CHECK_FUNCS([nc_def_opaque nccreate nc_set_log_level oc_open nc_use_parallel_enabled])
AC_CHECK_FUNCS([nc_def_opaque nccreate nc_set_log_level oc_open])
#test "x$ac_cv_func_oc_open" = xyes && nc_has_dap=yes || nc_has_dap=no
# Whether we build/test some functionality depends on what we found in
# the C library.
Expand All @@ -473,19 +504,16 @@ nc_build_v2=no
nc_build_v4=no
nc_has_logging=no
nc_has_dap=no
nc_has_parallel=no

test "x$ac_cv_func_nc_def_opaque" = xyes && nc_build_v4=yes
test "x$ac_cv_func_nccreate" = xyes && nc_build_v2=yes
test "x$ac_cv_func_nc_set_log_level" = xyes && nc_has_logging=yes
test "x$ac_cv_func_oc_open" = xyes && nc_has_dap=yes
test "x$ac_cv_func_nc_use_parallel_enabled" = xyes && nc_has_parallel=yes

#AC_CHECK_FUNC([nc_def_opaque],[nc_build_v4=yes])
#AC_CHECK_FUNC([nccreate],[nc_build_v2=yes])
#AC_CHECK_FUNC([nc_set_log_level],[nc_has_logging=yes])
#AC_CHECK_FUNC([oc_open],[nc_has_dap=yes])
#AC_CHECK_FUNC([nc_use_parallel_enabled],[nc_has_parallel=yes])

if test "x$nc_build_v4" = xyes; then
AC_DEFINE([USE_NETCDF4], [1], [if true, build netCDF-4])
Expand All @@ -500,7 +528,9 @@ AM_CONDITIONAL([USE_NETCDF4], [test "x$nc_build_v4" = xyes])
AM_CONDITIONAL([BUILD_V2], [test "x$nc_build_v2" = xyes])
AM_CONDITIONAL([USE_LOGGING], [test "x$nc_has_logging" = xyes])
AM_CONDITIONAL([BUILD_DAP], [test "x$nc_has_dap" = xyes])
AM_CONDITIONAL([BUILD_PARALLEL], [test "x$nc_has_parallel" = xyes])
AM_CONDITIONAL([BUILD_PNETCDF], [test "x$nc_has_pnetcdf" = xyes])
AM_CONDITIONAL([BUILD_PARALLEL4], [test "x$nc_has_parallel4" = xyes])
AM_CONDITIONAL([BUILD_PARALLEL], [test "x$nc_has_pnetcdf" = xyes -o "x$nc_has_parallel4" = xyes])
AC_CHECK_HEADER(stdlib.h, ,AC_DEFINE([NO_STDLIB_H], [], [no stdlib.h]))
AC_CHECK_HEADER(sys/types.h, ,AC_DEFINE([NO_SYS_TYPES_H], [], [no sys_types.h]))
AC_CHECK_HEADERS([sys/param.h])
Expand Down
2 changes: 1 addition & 1 deletion fortran/CMakeLists.txt
@@ -1,6 +1,6 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_VERBOSE_MAKEFILE OFF)
SET(CMAKE_BUILD_TYPE "RelWithDebInfo")
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

Expand Down
2 changes: 2 additions & 0 deletions libsrc/fort-lib.c
Expand Up @@ -150,6 +150,7 @@ f2c_maps(int ncid, int varid, const NF_INTEGER* fmaps, ptrdiff_t* cmaps)
return f2c_strides(ncid, varid, fmaps, cmaps);
}

#if 0
#ifdef USE_NETCDF4
/* These appear to only be defined in netcdf-4*/

Expand Down Expand Up @@ -274,3 +275,4 @@ nc_inq_compound_field_f(int ncid, nc_type xtype, int fieldid, char *name,
}

#endif /*USE_NETCDF4*/
#endif
3 changes: 3 additions & 0 deletions libsrc/nfconfig.in
Expand Up @@ -2,6 +2,9 @@
$Id: nfconfig.in,v 1.11 1997/12/03 17:41:42 steve Exp $
#endif

#undef NF_RELAX_COORD_BOUND
#undef NF_HAS_PARALLEL4
#undef NF_HAS_PNETCDF

#ifndef UD_NETCDF_CPP_INC
#define UD_NETCDF_CPP_INC
Expand Down
3 changes: 3 additions & 0 deletions libsrc/nfconfig.in.cmake
Expand Up @@ -2,6 +2,9 @@
$Id: nfconfig.in,v 1.11 1997/12/03 17:41:42 steve Exp $
#endif

#cmakedefine NF_RELAX_COORD_BOUND 1
#cmakedefine NF_HAS_PARALLEL4 1
#cmakedefine NF_HAS_PNETCDF 1

#ifndef UD_NETCDF_CPP_INC
#define UD_NETCDF_CPP_INC
Expand Down
2 changes: 1 addition & 1 deletion nf03_test/CMakeLists.txt
@@ -1,4 +1,4 @@
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_VERBOSE_MAKEFILE OFF)
SET(CMAKE_BUILD_TYPE "RelWithDebInfo")
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

Expand Down
5 changes: 3 additions & 2 deletions nf03_test/Makefile.am
Expand Up @@ -117,6 +117,7 @@ if BUILD_V2
check_PROGRAMS += tst03_f77_v2
tst03_f77_v2_SOURCES = module_tests.F90 tst03_f77_v2.F handle_err.F
TESTS += tst03_f77_v2
CLEANFILES += tst_f77_v2.nc temp.tmp

CLEANFILES += tst_f77_v2.nc
endif # BUILD_V2

CLEANFILES += temp.tmp

0 comments on commit 6479773

Please sign in to comment.