# 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_PLUGINS) SET(liblib_LIBS ${liblib_LIBS} ncpoco) ENDIF() FOREACH(LIBS ${liblib_LIBS}) SET(LARGS ${LARGS} $) 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_SDK) 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}")