mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-17 16:50:18 +08:00
## Improvements to S3 Documentation * Create a new document *quickstart_paths.md* that give a summary of the legal path formats used by netcdf-c. This includes both file paths and URL paths. * Modify *nczarr.md* to remove most of the S3 related text. * Move the S3 text from *nczarr.md* to a new document *cloud.md*. * Add some S3-related text to the *byterange.md* document. Hopefully, this will make it easier for users to find the information they want. ## Rebuild NCZarr Testing In order to avoid problems with running make check in parallel, two changes were made: 1. The *nczarr_test* test system was rebuilt. Now, for each test. any generated files are kept in a test-specific directory, isolated from all other test executions. 2. Similarly, since the S3 test bucket is shared, any generated S3 objects are isolated using a test-specific key path. ## Other S3 Related Changes * Add code to ensure that files created on S3 are reclaimed at end of testing. * Used the bash "trap" command to ensure S3 cleanup even if the test fails. * Cleanup the S3 related configure.ac flag set since S3 is used in several places. So now one should use the option *--enable-s3* instead of *--enable-nczarr-s3*, although the latter is still kept as a deprecated alias for the former. * Get some of the github actions yml to work with S3; required fixing various test scripts adding a secret to access the Unidata S3 bucket. * Cleanup S3 portion of libnetcdf.settings.in and netcdf_meta.h.in and test_common.in. * Merge partial S3 support into dhttp.c. * Create an experimental s3 access library especially for use with Windows. It is enabled by using the options *--enable-s3-internal* (automake) or *-DENABLE_S3_INTERNAL=ON* (CMake). Also add a unit-test for it. * Move some definitions from ncrc.h to ncs3sdk.h ## Other Changes * Provide a default implementation of strlcpy and move this and similar defaults into *dmissing.c*.
215 lines
5.6 KiB
CMake
215 lines
5.6 KiB
CMake
# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
|
|
# 2015, 2016, 2017, 2018
|
|
# University Corporation for Atmospheric Research/Unidata.
|
|
|
|
# See netcdf-c/COPYRIGHT file for more info.
|
|
SET(liblib_LIBS dispatch netcdf3)
|
|
|
|
#####
|
|
# Add target objects/modules based on options.
|
|
#####
|
|
|
|
IF(USE_NETCDF4)
|
|
SET(liblib_LIBS ${liblib_LIBS} netcdf4)
|
|
ENDIF()
|
|
IF(USE_HDF5)
|
|
SET(liblib_LIBS ${liblib_LIBS} netcdfhdf5)
|
|
ENDIF()
|
|
|
|
IF(USE_PNETCDF)
|
|
SET(liblib_LIBS ${liblib_LIBS} netcdfp)
|
|
ENDIF()
|
|
|
|
IF(USE_HDF4)
|
|
SET(liblib_LIBS ${liblib_LIBS} netcdfhdf4)
|
|
ENDIF()
|
|
|
|
IF(ENABLE_DAP2)
|
|
SET(liblib_LIBS ${liblib_LIBS} oc2 dap2)
|
|
ENDIF()
|
|
|
|
IF(ENABLE_DAP4)
|
|
SET(liblib_LIBS ${liblib_LIBS} dap4)
|
|
SET(liblib_LIBS ${liblib_LIBS} ncxml)
|
|
ENDIF()
|
|
|
|
IF(ENABLE_NCZARR)
|
|
SET(liblib_LIBS ${liblib_LIBS} nczarr)
|
|
ENDIF()
|
|
|
|
IF(ENABLE_S3_INTERNAL)
|
|
SET(liblib_LIBS ${liblib_LIBS} ncxml)
|
|
ENDIF()
|
|
|
|
IF(ENABLE_PLUGINS)
|
|
SET(liblib_LIBS ${liblib_LIBS} ncpoco)
|
|
ENDIF()
|
|
|
|
FOREACH(LIBS ${liblib_LIBS})
|
|
SET(LARGS ${LARGS} $<TARGET_OBJECTS:${LIBS}>)
|
|
ENDFOREACH()
|
|
|
|
ADD_LIBRARY(netcdf nc_initialize.c ${LARGS} )
|
|
|
|
IF(MPI_C_INCLUDE_PATH)
|
|
target_include_directories(netcdf PUBLIC ${MPI_C_INCLUDE_PATH})
|
|
ENDIF(MPI_C_INCLUDE_PATH)
|
|
|
|
IF(MOD_NETCDF_NAME)
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES LIBRARY_OUTPUT_NAME ${NETCDF_LIB_NAME})
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES ARCHIVE_OUTPUT_NAME ${NETCDF_LIB_NAME})
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES RUNTIME_OUTPUT_NAME ${NETCDF_LIB_NAME})
|
|
ENDIF()
|
|
|
|
# Make sure that netcdf.dll path does not include the build configuration
|
|
IF(MSVC)
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR})
|
|
ENDIF()
|
|
|
|
#####
|
|
# Add dependencies required for linking.
|
|
#####
|
|
|
|
SET(TLL_LIBS "")
|
|
|
|
SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY})
|
|
|
|
# Add extra dependencies specified via NC_EXTRA_DEPS
|
|
SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS})
|
|
|
|
IF(ENABLE_NCZARR_ZIP)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${Zip_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(Blosc_FOUND)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${Blosc_LIBRARIES})
|
|
ENDIF()
|
|
IF(Zstd_FOUND)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${Zstd_LIBRARIES})
|
|
ENDIF()
|
|
IF(Bz2_FOUND)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${Bz2_LIBRARIES})
|
|
ENDIF()
|
|
IF(SZIP_FOUND)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${SZIP_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(HAVE_LIBDL)
|
|
SET(TLL_LIBS ${LIBDL} ${TLL_LIBS})
|
|
ENDIF()
|
|
|
|
IF(ENABLE_NCZARR_ZIP)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${Zip_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(USE_HDF5)
|
|
IF(NOT MSVC)
|
|
# Some version of cmake define HDF5_hdf5_LIBRARY instead of
|
|
# HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES
|
|
IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARIES)
|
|
SET(HDF5_C_LIBRARIES ${HDF5_hdf5_LIBRARY})
|
|
ENDIF()
|
|
IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES)
|
|
SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY})
|
|
ENDIF()
|
|
# The order of the libraries is important here for static
|
|
# builds:
|
|
# Make sure that HDF5_C_LIBRARY appears *after*
|
|
# HDF5_HL_LIBRARY.
|
|
SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
|
ELSE() # Windows CMake defines HDF5_LIBRARIES.
|
|
SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(FOUND_CURL)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(USE_HDF4)
|
|
SET(TLL_LIBS ${HDF4_MFHDF_LIB} ${HDF4_DF_LIB} ${TLL_LIBS})
|
|
ENDIF()
|
|
|
|
IF(ENABLE_PNETCDF AND PNETCDF)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${PNETCDF})
|
|
ENDIF()
|
|
|
|
IF(ENABLE_S3_AWS)
|
|
TARGET_LINK_DIRECTORIES(netcdf PUBLIC ${AWSSDK_LIB_DIR})
|
|
TARGET_LINK_LIBRARIES(netcdf ${AWS_LINK_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(HAVE_LIBXML2)
|
|
SET(TLL_LIBS ${TLL_LIBS} ${LIBXML2_LIBRARIES})
|
|
ENDIF()
|
|
|
|
IF(NOT WIN32)
|
|
IF(NOT APPLE)
|
|
IF(CMAKE_DL_LIBS)
|
|
TARGET_LINK_LIBRARIES(netcdf ${CMAKE_DL_LIBS})
|
|
ENDIF()
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(TLL_LIBS)
|
|
LIST(REMOVE_DUPLICATES TLL_LIBS)
|
|
ENDIF()
|
|
|
|
TARGET_LINK_LIBRARIES(netcdf ${TLL_LIBS})
|
|
|
|
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${TLL_LIBS})
|
|
IF(MSVC)
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES
|
|
LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
|
|
)
|
|
ENDIF()
|
|
|
|
IF(NOT MSVC)
|
|
IF(BUILD_SHARED_LIBS)
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES LINK_FLAGS -shared)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(ENABLE_SHARED_LIBRARY_VERSION)
|
|
SET_TARGET_PROPERTIES(netcdf PROPERTIES
|
|
VERSION ${netCDF_LIB_VERSION}
|
|
SOVERSION ${netCDF_SO_VERSION}
|
|
)
|
|
ENDIF(ENABLE_SHARED_LIBRARY_VERSION)
|
|
|
|
###
|
|
# The INCLUDES directive was introduced in 2.8.12.
|
|
# However, 2.8.11 is still the default on some
|
|
# popular linux distributions. See
|
|
# https://github.com/Unidata/netcdf-c/issues/135
|
|
# for more information.
|
|
###
|
|
IF(${CMAKE_VERSION} VERSION_LESS 2.8.12)
|
|
INSTALL(
|
|
TARGETS netcdf EXPORT netCDFTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
|
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
ELSE()
|
|
INSTALL(
|
|
TARGETS netcdf EXPORT netCDFTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
ENDIF()
|
|
|
|
SET(ALL_TLL_LIBS ${TLL_LIBS} PARENT_SCOPE)
|
|
SET(NC_LIBS ${NC_LIBS} PARENT_SCOPE)
|
|
|
|
FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.c)
|
|
SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am)
|
|
ADD_EXTRA_DIST("${CUR_EXTRA_DIST}")
|