From 15193c18b47ad8294ce2c8da311fd3b628a0a4b5 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Mon, 14 Jun 2010 14:08:23 -0500 Subject: [svn-r18996] Updated config files and install commands per external developers recommendations. Tested: local linux --- CMakeLists.txt | 78 ++++++++++++++++++++++------------ Resources/FindHDF5.cmake | 56 ++++++++++++++++++++++++ Resources/HDF5-config.cmake.build.in | 42 ++++++++++++++++++ Resources/HDF5-config.cmake.install.in | 43 +++++++++++++++++++ Resources/HDF5Config.cmake.in | 32 -------------- fortran/src/CMakeLists.txt | 2 +- src/CMakeLists.txt | 8 +--- 7 files changed, 193 insertions(+), 68 deletions(-) create mode 100644 Resources/FindHDF5.cmake create mode 100644 Resources/HDF5-config.cmake.build.in create mode 100644 Resources/HDF5-config.cmake.install.in delete mode 100644 Resources/HDF5Config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ba67e8..a9f42ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,7 +197,6 @@ SET (LIB_TYPE STATIC) IF (BUILD_SHARED_LIBS) SET (LIB_TYPE SHARED) SET (H5_BUILT_AS_DYNAMIC_LIB 1) - SET (LIBPOSTFIX "") IF (MSVC) SET (CMAKE_MFC_FLAG 0) FOREACH (flag_var @@ -215,7 +214,6 @@ ELSE (BUILD_SHARED_LIBS) # should this be a user setting : Everyone uses it anyway ? ADD_DEFINITIONS(-DPIC) ENDIF (NOT WIN32) - SET (LIBPOSTFIX "") IF (MSVC) SET (CMAKE_MFC_FLAG 0) FOREACH (flag_var @@ -233,28 +231,18 @@ ENDIF (BUILD_SHARED_LIBS) #----------------------------------------------------------------------------- # Set the target names of all the libraries #----------------------------------------------------------------------------- -SET (HDF5_LIB_TARGET ${HDF5_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_TEST_LIB_TARGET ${HDF5_TEST_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_CPP_LIB_TARGET ${HDF5_CPP_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_HL_LIB_TARGET ${HDF5_HL_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_HL_CPP_LIB_TARGET ${HDF5_HL_CPP_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_TOOLS_LIB_TARGET ${HDF5_TOOLS_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_F90_LIB_TARGET ${HDF5_F90_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_F90_C_LIB_TARGET ${HDF5_F90_C_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_F90_TEST_LIB_TARGET ${HDF5_F90_TEST_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_F90_C_TEST_LIB_TARGET ${HDF5_F90_C_TEST_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_HL_F90_LIB_TARGET ${HDF5_HL_F90_LIB_NAME}${LIBPOSTFIX}) -SET (HDF5_HL_F90_C_LIB_TARGET ${HDF5_HL_F90_C_LIB_NAME}${LIBPOSTFIX}) - -#----------------------------------------------------------------------------- -# Include the main src and config directories -#----------------------------------------------------------------------------- -SET (HDF5_INCLUDE_DIRECTORIES - ${HDF5_SRC_DIR} - ${HDF5_SOURCE_DIR} - ${HDF5_BINARY_DIR} -) -INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRECTORIES}) +SET (HDF5_LIB_TARGET ${HDF5_LIB_CORENAME}) +SET (HDF5_TEST_LIB_TARGET ${HDF5_TEST_LIB_CORENAME}) +SET (HDF5_CPP_LIB_TARGET ${HDF5_CPP_LIB_CORENAME}) +SET (HDF5_HL_LIB_TARGET ${HDF5_HL_LIB_CORENAME}) +SET (HDF5_HL_CPP_LIB_TARGET ${HDF5_HL_CPP_LIB_CORENAME}) +SET (HDF5_TOOLS_LIB_TARGET ${HDF5_TOOLS_LIB_CORENAME}) +SET (HDF5_F90_LIB_TARGET ${HDF5_F90_LIB_CORENAME}) +SET (HDF5_F90_C_LIB_TARGET ${HDF5_F90_C_LIB_CORENAME}) +SET (HDF5_F90_TEST_LIB_TARGET ${HDF5_F90_TEST_LIB_CORENAME}) +SET (HDF5_F90_C_TEST_LIB_TARGET ${HDF5_F90_C_TEST_LIB_CORENAME}) +SET (HDF5_HL_F90_LIB_TARGET ${HDF5_HL_F90_LIB_CORENAME}) +SET (HDF5_HL_F90_C_LIB_TARGET ${HDF5_HL_F90_C_LIB_CORENAME}) #----------------------------------------------------------------------------- # When building utility executables that generate other (source) files : @@ -301,9 +289,9 @@ ENDIF (CMAKE_BUILD_TYPE MATCHES Debug) #----------------------------------------------------------------------------- # Compiler specific flags : Shouldn't there be compiler tests for these #----------------------------------------------------------------------------- -IF (NOT WIN32) +IF (CMAKE_COMPILER_IS_GNUCC) SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common") -ENDIF (NOT WIN32) +ENDIF (CMAKE_COMPILER_IS_GNUCC) #----------------------------------------------------------------------------- # Option to allow the user to disable compiler warnings @@ -345,6 +333,11 @@ IF (CMAKE_COMPILER_IS_GNUCXX) ENDIF (CMAKE_COMPILER_IS_GNUCXX) #----------------------------------------------------------------------------- +# All libs/tests/examples need the main include directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR}) + +#----------------------------------------------------------------------------- # Option to Enable MPI Parallel #----------------------------------------------------------------------------- OPTION (HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF) @@ -566,7 +559,7 @@ INSTALL ( DESTINATION lib FILE - HDF5-config.cmake + HDF5-targets.cmake ) #----------------------------------------------------------------------------- @@ -576,7 +569,36 @@ EXPORT ( TARGETS ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES} FILE - HDF5-config.cmake + HDF5-targets.cmake +) + +#----------------------------------------------------------------------------- +# Configure the HDF5-config.cmake file for the build directory +#----------------------------------------------------------------------------- +SET (HDF5_INCLUDES_BUILD_TIME + ${HDF5_SRC_DIR} ${HDF5_CPP_SOURCE_DIR} ${HDF5_HL_SOURCE_DIR} + ${HDF5_TOOLS_SOURCE_DIR} ${HDF5_BINARY_DIR} +) +SET (HDF5_VERSION_STRING @HDF5_PACKAGE_VERSION@) +SET (HDF5_VERSION_MAJOR @HDF5_PACKAGE_VERSION_MAJOR@) +SET (HDF5_VERSION_MINOR @HDF5_PACKAGE_VERSION_MINOR@) + +CONFIGURE_FILE ( + ${HDF5_SOURCE_DIR}/Resources/HDF5-config.cmake.build.in + ${HDF5_BINARY_DIR}/HDF5-config.cmake @ONLY +) + +#----------------------------------------------------------------------------- +# Configure the HDF5-config.cmake file for the install directory +#----------------------------------------------------------------------------- +INSTALL (CODE + "SET (HDF5_INSTALL_SKIP_TARGETS 1) + INCLUDE (${HDF5_BINARY_DIR}/HDF5-config.cmake) + CONFIGURE_FILE ( + \"${HDF5_SOURCE_DIR}/Resources/HDF5-config.cmake.install.in\" + \"${CMAKE_INSTALL_PREFIX}/lib/HDF5-config.cmake\" @ONLY + ) + " ) #----------------------------------------------------------------------------- diff --git a/Resources/FindHDF5.cmake b/Resources/FindHDF5.cmake new file mode 100644 index 0000000..4e448ca --- /dev/null +++ b/Resources/FindHDF5.cmake @@ -0,0 +1,56 @@ +# +# To be used by projects that make use of Cmakeified hdf5-1.8 +# + +# +# Find the HDF5 includes and get all installed hdf5 library settings from +# HDF5-config.cmake file : Requires a CMake compatible hdf5-1.8.5 or later +# for this feature to work. The following vars are set if hdf5 is found. +# +# HDF5_FOUND - True if found, otherwise all other vars are undefined +# HDF5_INCLUDE_DIR - The include dir for main *.h files +# HDF5_FORTRAN_INCLUDE_DIR - The include dir for fortran modules and headers +# HDF5_VERSION_STRING - full version (e.g. 1.8.5) +# HDF5_VERSION_MAJOR - major part of version (e.g. 1.8) +# HDF5_VERSION_MINOR - minor part (e.g. 5) +# +# The following boolean vars will be defined +# HDF5_ENABLE_PARALLEL - 1 if HDF5 parallel supported +# HDF5_BUILD_FORTRAN - 1 if HDF5 was compiled with fortran on +# HDF5_BUILD_CPP_LIB - 1 if HDF5 was compiled with cpp on +# HDF5_BUILD_TOOLS - 1 if HDF5 was compiled with tools on +# HDF5_BUILD_HL_LIB - 1 if HDF5 was compiled with parallel on +# +# Target names that are valid (depending on enabled options) +# will be the following +# +# hdf5 : HDF5 C library +# hdf5_tools : the tools library +# hdf5_f90cstub : used by Fortran to C interface +# hdf5_fortran : Fortran HDF5 library +# hdf5_cpp : HDF5 cpp interface library +# hdf5_hl : High Level library +# hdf5_hl_f90cstub : used by Fortran to C interface to High Level library +# hdf5_hl_fortran : Fortran High Level library +# hdf5_hl_cpp : High Level cpp interface library +# +# To aid in finding HDF5 as part of a subproject set +# HDF5_ROOT_DIR_HINT to the location where HDF5-config.cmake lies + +FIND_PATH (HDF5_ROOT_DIR "HDF5-config.cmake" + ${HDF5_ROOT_DIR_HINT} + /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + "C:/Program Files/HDF5/lib" +) + +FIND_PATH (HDF5_INCLUDE_DIR "H5public.h" + ${HDF5_ROOT_DIR}/../include +) + +IF (HDF5_INCLUDE_DIR) + SET (HDF5_FOUND "YES") + INCLUDE (${HDF5_ROOT_DIR}/HDF5-config.cmake) +ENDIF (HDF5_INCLUDE_DIR) diff --git a/Resources/HDF5-config.cmake.build.in b/Resources/HDF5-config.cmake.build.in new file mode 100644 index 0000000..132e8be --- /dev/null +++ b/Resources/HDF5-config.cmake.build.in @@ -0,0 +1,42 @@ +#----------------------------------------------------------------------------- +# HDF5 Config file for compiling against hdf5 build directory +#----------------------------------------------------------------------------- + +SET (HDF5_INCLUDE_DIRS "@HDF5_INCLUDES_BUILD_TIME@") + +#----------------------------------------------------------------------------- +# Don't include targets if this file is being picked up by another +# project which has already build hdf5 as a subproject +#----------------------------------------------------------------------------- +IF (NOT TARGET "hdf5" AND NOT HDF5_INSTALL_SKIP_TARGETS) + GET_FILENAME_COMPONENT (SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + INCLUDE (${SELF_DIR}/HDF5-targets.cmake) +ENDIF (NOT TARGET "hdf5" AND NOT HDF5_INSTALL_SKIP_TARGETS) + +SET (HDF5_VERSION_STRING @HDF5_VERSION_STRING@) +SET (HDF5_VERSION_MAJOR @HDF5_VERSION_MAJOR@) +SET (HDF5_VERSION_MINOR @HDF5_VERSION_MINOR@) + +SET (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@) +SET (HDF5_BUILD_FORTRAN @HDF5_BUILD_FORTRAN@) +SET (HDF5_BUILD_CPP_LIB @HDF5_BUILD_CPP_LIB@) +SET (HDF5_BUILD_TOOLS @HDF5_BUILD_TOOLS@) +SET (HDF5_BUILD_HL_LIB @HDF5_BUILD_HL_LIB@) + +# +# To be continued ... +# +# XXX_INCLUDE_DIRS The final set of include directories listed in one variable for use by client code. This should not be a cache entry. +# XXX_LIBRARIES The libraries to link against to use XXX. These should include full paths. This should not be a cache entry. +# XXX_DEFINITIONS Definitions to use when compiling code that uses XXX. This really shouldn't include options such as (-DHAS_JPEG)that a client source-code file uses to decide whether to #include +# XXX_EXECUTABLE Where to find the XXX tool. +# XXX_YYY_EXECUTABLE Where to find the YYY tool that comes with XXX. +# XXX_LIBRARY_DIRS Optionally, the final set of library directories listed in one variable for use by client code. This should not be a cache entry. +# XXX_ROOT_DIR Where to find the base directory of XXX. +# XXX_VERSION_YY Expect Version YY if true. Make sure at most one of these is ever true. +# XXX_WRAP_YY If False, do not try to use the relevent CMake wrapping command. +# XXX_YY_FOUND If False, optional YY part of XXX sytem is not available. +# XXX_FOUND Set to false, or undefined, if we haven't found, or don't want to use XXX. +# XXX_RUNTIME_LIBRARY_DIRS Optionally, the runtime library search path for use when running an executable linked to shared libraries. +# The list should be used by user code to create the PATH on windows or LD_LIBRARY_PATH on unix. +# This should not be a cache entry. diff --git a/Resources/HDF5-config.cmake.install.in b/Resources/HDF5-config.cmake.install.in new file mode 100644 index 0000000..2c33edf --- /dev/null +++ b/Resources/HDF5-config.cmake.install.in @@ -0,0 +1,43 @@ +#----------------------------------------------------------------------------- +# HDF5 Config file for compiling against hdf5 install directory +#----------------------------------------------------------------------------- + +GET_FILENAME_COMPONENT (SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +GET_FILENAME_COMPONENT (HDF5_INCLUDE_DIRS "${SELF_DIR}/../include" ABSOLUTE) +SET (HDF5_FORTRAN_DIR ${HDF5_INCLUDE_DIRS}/fortran) + +#----------------------------------------------------------------------------- +# Don't include targets if this file is being picked up by another +# project which has already build hdf5 as a subproject +#----------------------------------------------------------------------------- +IF (NOT TARGET "hdf5") + INCLUDE (${SELF_DIR}/HDF5-targets.cmake) +ENDIF (NOT TARGET "hdf5") + +SET (HDF5_VERSION_STRING @HDF5_VERSION_STRING@) +SET (HDF5_VERSION_MAJOR @HDF5_VERSION_MAJOR@) +SET (HDF5_VERSION_MINOR @HDF5_VERSION_MINOR@) + +SET (HDF5_ENABLE_PARALLEL @HDF5_ENABLE_PARALLEL@) +SET (HDF5_BUILD_FORTRAN @HDF5_BUILD_FORTRAN@) +SET (HDF5_BUILD_CPP_LIB @HDF5_BUILD_CPP_LIB@) +SET (HDF5_BUILD_TOOLS @HDF5_BUILD_TOOLS@) +SET (HDF5_BUILD_HL_LIB @HDF5_BUILD_HL_LIB@) + +# +# To be continued ... +# +# XXX_INCLUDE_DIRS The final set of include directories listed in one variable for use by client code. This should not be a cache entry. +# XXX_LIBRARIES The libraries to link against to use XXX. These should include full paths. This should not be a cache entry. +# XXX_DEFINITIONS Definitions to use when compiling code that uses XXX. This really shouldn't include options such as (-DHAS_JPEG)that a client source-code file uses to decide whether to #include +# XXX_EXECUTABLE Where to find the XXX tool. +# XXX_YYY_EXECUTABLE Where to find the YYY tool that comes with XXX. +# XXX_LIBRARY_DIRS Optionally, the final set of library directories listed in one variable for use by client code. This should not be a cache entry. +# XXX_ROOT_DIR Where to find the base directory of XXX. +# XXX_VERSION_YY Expect Version YY if true. Make sure at most one of these is ever true. +# XXX_WRAP_YY If False, do not try to use the relevent CMake wrapping command. +# XXX_YY_FOUND If False, optional YY part of XXX sytem is not available. +# XXX_FOUND Set to false, or undefined, if we haven't found, or don't want to use XXX. +# XXX_RUNTIME_LIBRARY_DIRS Optionally, the runtime library search path for use when running an executable linked to shared libraries. +# The list should be used by user code to create the PATH on windows or LD_LIBRARY_PATH on unix. +# This should not be a cache entry. diff --git a/Resources/HDF5Config.cmake.in b/Resources/HDF5Config.cmake.in deleted file mode 100644 index f7d1fd6..0000000 --- a/Resources/HDF5Config.cmake.in +++ /dev/null @@ -1,32 +0,0 @@ -# -# HDF5 Config file for CMake -# - -SET(HDF5_INCLUDE_DIRS "@HDF5_INCLUDE_DIRECTORIES@i" ) -SET(HDF5_LIBRARIES "@HDF5_LIBRARIES@" ) -SET(HDF5_LINK_DIRECTORIES "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@" ) - -# Names for hdf5 library -SET(HDF5_LIB_NAME "@HDF5_LIB_NAME@") -SET(HDF5_LIB_NAME_RELEASE "@HDF5_LIB_NAME_RELEASE@") -SET(HDF5_LIB_NAME_DEBUG "@HDF5_LIB_NAME_DEBUG@") - -# Names for hdf5_hl library -SET(HDF5_HL_LIB_NAME "@HDF5_HL_LIB_NAME@") -SET(HDF5_HL_LIB_NAME_RELEASE "@HDF5_HL_LIB_NAME_RELEASE@") -SET(HDF5_HL_LIB_NAME_DEBUG "@HDF5_HL_LIB_NAME_DEBUG@") - -# Names for hdf5_cpp library -SET(HDF5_CPP_LIB_NAME "@HDF5_CPP_LIB_NAME@") -SET(HDF5_CPP_LIB_NAME_RELEASE "@HDF5_CPP_LIB_NAME_RELEASE@") -SET(HDF5_CPP_LIB_NAME_DEBUG "@HDF5_CPP_LIB_NAME_DEBUG@") - -# Names for hdf5_test library -SET(HDF5_TEST_LIB_NAME "@HDF5_TEST_LIB_NAME@") -SET(HDF5_TEST_LIB_NAME_RELEASE "@HDF5_TEST_LIB_NAME_RELEASE@") -SET(HDF5_TEST_LIB_NAME_DEBUG "@HDF5_TEST_LIB_NAME_DEBUG@") - -# Names for hdf5_test library -SET(HDF5_TOOLS_LIB_NAME "@HDF5_TOOLS_LIB_NAME@") -SET(HDF5_TOOLS_LIB_NAME_RELEASE "@HDF5_TOOLS_LIB_NAME_RELEASE@") -SET(HDF5_TOOLS_LIB_NAME_DEBUG "@HDF5_TOOLS_LIB_NAME_DEBUG@") diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index e351a6f..c2ca1e6 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -230,7 +230,7 @@ INSTALL ( INSTALL ( DIRECTORY - ${CMAKE_Fortran_MODULE_DIRECTORY}/${BUILD_TYPE}/ + ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/ DESTINATION include/fortran COMPONENT diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4a1c5c8..1e05424 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -599,15 +599,9 @@ SET (H5_PRIVATE_HEADERS ${HDF5_SRC_DIR}/H5Vprivate.h ${HDF5_SRC_DIR}/H5WBprivate.h ${HDF5_SRC_DIR}/H5Zprivate.h + ${HDF5_SRC_DIR}/H5win32defs.h ) -IF (WIN32) - SET (H5_PRIVATE_HEADERS - ${H5_PRIVATE_HEADERS} - ${HDF5_SRC_DIR}/H5win32defs.h - ) -ENDIF (WIN32) - INCLUDE_DIRECTORIES (${HDF5_SOURCE_DIR}) INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}) -- cgit v0.12