From 1623ae76cbcfe6151da867f4fb99a1560e619876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nico=20Schl=C3=B6mer?= Date: Wed, 20 Aug 2014 16:04:46 +0200 Subject: [PATCH 1/3] create and install netCDFConfigVersion.cmake export file --- CMakeLists.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7b4f2f40b..5f12ba79a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1412,5 +1412,21 @@ INSTALL(FILES "${netCDF_BINARY_DIR}/libnetcdf.settings" # End libnetcdf.settings section. ##### +# Create export configuration +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" + VERSION ${netCDF_VERSION} + COMPATIBILITY SameMajorVersion + ) + +set(ConfigPackageLocation lib/cmake/netCDF) +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" + DESTINATION ${ConfigPackageLocation} + COMPONENT Devel + ) + # CPack inclusion must come last. INCLUDE(CPack) From 901d4cc71539bc461eba02b4631f289fb1469b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nico=20Schl=C3=B6mer?= Date: Wed, 20 Aug 2014 17:41:09 +0200 Subject: [PATCH 2/3] proper support for CMake export files --- CMakeLists.txt | 91 +++++++++++++++++++++++++++++++------------ netCDFConfig.cmake.in | 35 +++++++++++++++++ 2 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 netCDFConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f12ba79a0..048c4f5291 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,8 +97,11 @@ ENDIF() STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) # Determine the configure date. -EXECUTE_PROCESS(COMMAND date - OUTPUT_VARIABLE CONFIG_DATE) +EXECUTE_PROCESS( + COMMAND date + OUTPUT_VARIABLE CONFIG_DATE + ) +string(STRIP ${CONFIG_DATE} CONFIG_DATE) ################################ # End Project Properties @@ -677,7 +680,7 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4) ELSE() IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED}) MESSAGE(FATAL_ERROR - "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.") + "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.") ENDIF() ENDIF() @@ -1225,7 +1228,8 @@ ENDIF(NOT DEFINED CMAKE_INSTALL_LIBDIR) SET(prefix ${CMAKE_INSTALL_PREFIX}) SET(exec_prefix ${CMAKE_INSTALL_PREFIX}) SET(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) -SET(includedir ${CMAKE_INSTALL_PREFIX}/include) +SET(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDERIR}) + SET(CC ${CMAKE_C_COMPILER}) # Process all dependency libraries and create a string @@ -1388,29 +1392,63 @@ is_enabled(USE_DISKLESS HAS_DISKLESS) is_enabled(USE_MMAP HAS_MMAP) is_enabled(JNA HAS_JNA) -# Generate file from template. +# Display +MESSAGE(" +NetCDF Configuration Summary +============================ + +General +------- + +NetCDF Version: ${PACKAGE_VERSION} +Configured On: ${CONFIG_DATE} +Host System: ${host_cpu}-${host_vendor}-${host_os} +Build Directory: ${abs_top_builddir} +Install Prefix: ${prefix} + + +Compiling Options +----------------- + +C Compiler: ${CC_VERSION} +CFLAGS: ${CFLAGS} +CPPFLAGS: ${CPPFLAGS} +LDFLAGS: ${LDFLAGS} +AM_CFLAGS ${AM_CFLAGS} +AM_CPPFLAGS: ${AM_CPPFLAGS} +AM_LDFLAGS: ${AM_LDFLAGS} +Shared Library: ${enable_shared} +Static Library: ${enable_static} +Extra libraries: ${LIBS} + + +Features: +--------- + +NetCDF-2 API: ${HAS_NC2} +NetCDF-4 API: ${HAS_NC4} +HDF4 Support: ${HAS_HDF4} +HDF5 Support: ${HAS_HDF5} +PNetCDF Support: ${HAS_PNETCDF} +Parallel Support: ${HAS_PARALLEL} +DAP Support: ${HAS_DAP} +Diskless Support: ${HAS_DISKLESS} +MMap Support: ${HAS_MMAP} +JNA Support: ${HAS_JNA} +") -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf.settings.in" - "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.settings" - @ONLY +# Generate file from template. +set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/netCDF) +CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/netCDFConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" ) -# Read in settings file, print out. -# Avoid using system-specific calls so that this -# might also work on Windows. -FILE(READ "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.settings" - LIBNETCDF_SETTINGS) -MESSAGE(${LIBNETCDF_SETTINGS}) - -# Install libnetcdf.settings file into same location -# as the libraries. -INSTALL(FILES "${netCDF_BINARY_DIR}/libnetcdf.settings" - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT libraries) - -##### -# End libnetcdf.settings section. -##### +INSTALL( + FILES "${netCDF_BINARY_DIR}/netCDFConfig.cmake" + DESTINATION "${ConfigPackageLocation}" + COMPONENT Devel + ) # Create export configuration include(CMakePackageConfigHelpers) @@ -1420,7 +1458,6 @@ write_basic_package_version_file( COMPATIBILITY SameMajorVersion ) -set(ConfigPackageLocation lib/cmake/netCDF) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" @@ -1428,5 +1465,9 @@ install( COMPONENT Devel ) +##### +# End libnetcdf.settings section. +##### + # CPack inclusion must come last. INCLUDE(CPack) diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in new file mode 100644 index 0000000000..932ef0dac0 --- /dev/null +++ b/netCDFConfig.cmake.in @@ -0,0 +1,35 @@ +# NetCDF Configuration Summary +# +# General +# +set(NetCDFVersion "@PACKAGE_VERSION@") +set(CONFIG_DATE "@CONFIG_DATE@") +set(HOST_SYSTEM "@host_cpu@-@host_vendor@-@host_os@") +set(BUILD_DIR "@abs_top_builddir@") +set(netCDF_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") + +# Compiling Options +# +set(netCDF_C_COMPILER @CC_VERSION@) +set(netCDF_C_COMPILER_FLAGS @CFLAGS@) +set(netCDF_C_CPP_FLAGS @CPPFLAGS@) +set(netCDF_LDFLAGS @LDFLAGS@) +set(netCDF_AM_CFLAGS @AM_CFLAGS@) +set(netCDF_AM_CPPFLAGS @AM_CPPFLAGS@) +set(netCDF_AM_LDFLAGS @AM_LDFLAGS@) +set(netCDF_SHARED @enable_shared@) +set(netCDF_STATIC @enable_static@) +set(netCDF_EXTRA_LIBS @LIBS@) + +# Features: +# +set(netCDF_HAS_NC2 @HAS_NC2@) +set(netCDF_HAS_NC4 @HAS_NC4@) +set(netCDF_HAS_HDF4 @HAS_HDF4@) +set(netCDF_HAS_HDF5 @HAS_HDF5@) +set(netCDF_HAS_PNETCDF @HAS_PNETCDF@) +set(netCDF_HAS_PARALLEL @HAS_PARALLEL@) +set(netCDF_HAS_DAP @HAS_DAP@) +set(netCDF_HAS_DISKLESS @HAS_DISKLESS@) +set(netCDF_HAS_MMAP @HAS_MMAP@) +set(netCDF_HAS_JNA @HAS_JNA@) From 260e9078a20477ec421a4c5ea710728c5804144b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nico=20Schl=C3=B6mer?= Date: Wed, 20 Aug 2014 18:29:28 +0200 Subject: [PATCH 3/3] use CONFIGURE_PACKAGE_CONFIG_FILE --- CMakeLists.txt | 12 +++++++++--- netCDFConfig.cmake.in | 9 +++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 048c4f5291..a3d8127c9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1438,20 +1438,26 @@ JNA Support: ${HAS_JNA} ") # Generate file from template. +include(CMakePackageConfigHelpers) set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/netCDF) -CONFIGURE_FILE( +CONFIGURE_PACKAGE_CONFIG_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/netCDFConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" + INSTALL_DESTINATION "${ConfigPackageLocation}" + NO_CHECK_REQUIRED_COMPONENTS_MACRO + PATH_VARS + CMAKE_INSTALL_PREFIX + CMAKE_INSTALL_INCLUDEDIR + CMAKE_INSTALL_LIBDIR ) INSTALL( - FILES "${netCDF_BINARY_DIR}/netCDFConfig.cmake" + FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake" DESTINATION "${ConfigPackageLocation}" COMPONENT Devel ) # Create export configuration -include(CMakePackageConfigHelpers) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake" VERSION ${netCDF_VERSION} diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in index 932ef0dac0..3271c28dde 100644 --- a/netCDFConfig.cmake.in +++ b/netCDFConfig.cmake.in @@ -2,11 +2,12 @@ # # General # +@PACKAGE_INIT@ + set(NetCDFVersion "@PACKAGE_VERSION@") -set(CONFIG_DATE "@CONFIG_DATE@") -set(HOST_SYSTEM "@host_cpu@-@host_vendor@-@host_os@") -set(BUILD_DIR "@abs_top_builddir@") -set(netCDF_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") +set_and_check(netCDF_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") +set_and_check(netCDF_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set_and_check(netCDF_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@") # Compiling Options #