netcdf-c/liblib/CMakeLists.txt

135 lines
3.6 KiB
CMake
Raw Normal View History

SET(liblib_LIBS dispatch netcdf3)
2012-07-26 06:09:19 +08:00
#####
# Add target objects/modules based on options.
#####
IF(USE_HDF5 OR USE_NETCDF4)
SET(liblib_LIBS ${liblib_LIBS} netcdf4)
ENDIF()
2013-03-16 04:31:07 +08:00
IF(USE_PNETCDF)
SET(liblib_LIBS ${liblib_LIBS} netcdfp)
2013-03-16 04:31:07 +08:00
ENDIF()
2012-07-26 06:09:19 +08:00
IF(USE_DAP)
SET(liblib_LIBS ${liblib_LIBS} oc2 dap2)
2012-07-20 06:11:10 +08:00
ENDIF()
2012-07-25 06:53:58 +08:00
FOREACH(LIBS ${liblib_LIBS})
SET(LARGS ${LARGS} $<TARGET_OBJECTS:${LIBS}>)
ENDFOREACH()
2015-08-16 06:26:35 +08:00
ADD_LIBRARY(netcdf nc_initialize.c ${LARGS} )
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()
2012-07-21 05:16:27 +08:00
2012-07-26 06:09:19 +08:00
#####
# Add dependencies required for linking.
#####
SET(TLL_LIBS "")
SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY})
2014-09-30 02:04:35 +08:00
# Add extra dependencies specified via NC_EXTRA_DEPS
SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS})
IF(HAVE_LIBDL)
SET(TLL_LIBS ${LIBDL} ${TLL_LIBS})
ENDIF()
IF(USE_HDF5 OR USE_NETCDF4)
IF(NOT MSVC)
2013-10-08 02:39:54 +08:00
# 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})
2013-10-08 02:39:54 +08:00
ENDIF()
IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES)
SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY})
2013-10-08 02:39:54 +08:00
ENDIF()
2014-08-21 18:03:41 +08:00
# 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} ${TLL_LIBS} ${SZIP_LIBRARY})
ELSE() # Windows CMake defines HDF5_LIBRARIES.
2013-10-08 02:39:54 +08:00
SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
ENDIF()
ENDIF()
2012-07-26 06:09:19 +08:00
IF(USE_DAP)
SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY})
2012-07-26 06:09:19 +08:00
ENDIF()
2012-07-21 05:16:27 +08:00
IF(USE_HDF4)
SET(TLL_LIBS ${HDF4_MFHDF_LIB} ${HDF4_DF_LIB} ${TLL_LIBS})
ENDIF()
2012-07-26 06:09:19 +08:00
IF(ENABLE_PNETCDF AND PNETCDF)
SET(TLL_LIBS ${TLL_LIBS} ${PNETCDF})
2012-07-25 06:53:58 +08:00
ENDIF()
IF(TLL_LIBS)
LIST(REMOVE_DUPLICATES TLL_LIBS)
ENDIF()
2012-08-11 05:44:00 +08:00
TARGET_LINK_LIBRARIES(netcdf ${TLL_LIBS})
2012-09-14 02:27:23 +08:00
IF(MSVC)
SET_TARGET_PROPERTIES(netcdf PROPERTIES
LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
)
2012-09-14 02:27:23 +08:00
ENDIF()
2012-10-03 06:56:12 +08:00
IF(NOT MSVC)
IF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(netcdf PROPERTIES LINK_FLAGS -shared)
ENDIF()
2012-10-03 06:56:12 +08:00
ENDIF()
IF(ENABLE_SHARED_LIBRARY_VERSION)
SET_TARGET_PROPERTIES(netcdf PROPERTIES
VERSION ${netCDF_LIB_VERSION}
SOVERSION ${netCDF_SO_VERSION}
)
ENDIF(ENABLE_SHARED_LIBRARY_VERSION)
2015-10-21 00:10:55 +08:00
###
# 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)
2015-10-21 00:10:55 +08:00
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()
2012-08-11 05:44:00 +08:00
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}")