diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | config/cmake/ConfigureChecks.cmake | 11 | ||||
-rw-r--r-- | config/cmake/H5pubconf.h.in | 48 | ||||
-rw-r--r-- | config/cmake/HDF5UseFortran.cmake | 16 | ||||
-rw-r--r-- | config/cmake_ext_mod/ConfigureChecks.cmake | 5 | ||||
-rw-r--r-- | config/cmake_ext_mod/HDFUseCXX.cmake | 6 | ||||
-rw-r--r-- | release_docs/INSTALL_CMake.txt | 5 | ||||
-rw-r--r-- | release_docs/RELEASE.txt | 36 |
8 files changed, 79 insertions, 50 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b0640b9..6a6d708 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -430,7 +430,7 @@ set (CMAKE_POSITION_INDEPENDENT_CODE ON) #----------------------------------------------------------------------------- # Option to Build Static executables #----------------------------------------------------------------------------- -option (BUILD_STATIC_EXECS "Build Static Executabless" OFF) +option (BUILD_STATIC_EXECS "Build Static Executables" OFF) if (BUILD_STATIC_EXECS) if (NOT WIN32) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake index 0d955d0..6d1e3ce 100644 --- a/config/cmake/ConfigureChecks.cmake +++ b/config/cmake/ConfigureChecks.cmake @@ -167,12 +167,17 @@ endif () # Check if C has __float128 extension #----------------------------------------------------------------------------- -CHECK_TYPE_SIZE("__float128" SIZEOF___FLOAT128) -if (${HAVE_SIZEOF___FLOAT128}) +CHECK_TYPE_SIZE("__float128" ${HDF_PREFIX}_SIZEOF___FLOAT128) +if (${${HDF_PREFIX}_SIZEOF___FLOAT128}) set (${HDF_PREFIX}_HAVE_FLOAT128 1) else () set (${HDF_PREFIX}_HAVE_FLOAT128 0) - set (SIZEOF___FLOAT128 0) + set (${HDF_PREFIX}_SIZEOF___FLOAT128 0) +endif () + +CHECK_TYPE_SIZE("_Quad" ${HDF_PREFIX}_SIZEOF__QUAD) +if (NOT ${${HDF_PREFIX}_SIZEOF__QUAD}) + set (${HDF_PREFIX}_SIZEOF__QUAD 0) endif () #----------------------------------------------------------------------------- diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in index 8403aba..ccfe581 100644 --- a/config/cmake/H5pubconf.h.in +++ b/config/cmake/H5pubconf.h.in @@ -30,7 +30,7 @@ #cmakedefine H5_AC_APPLE_UNIVERSAL_BUILD @H5_AC_APPLE_UNIVERSAL_BUILD@ /* Define if C++ compiler recognizes offsetof */ -#cmakedefine H5_CXX_HAVE_OFFSETOF @H5_CXX_HAVE_OFFSETOF@ +#cmakedefine H5_CXX_HAVE_OFFSETOF @CXX_HAVE_OFFSETOF@ /* Define the default plugins path to compile */ #cmakedefine H5_DEFAULT_PLUGINDIR "@H5_DEFAULT_PLUGINDIR@" @@ -161,24 +161,12 @@ /* Define to 1 if you have the `fseeko' function. */ #cmakedefine H5_HAVE_FSEEKO @H5_HAVE_FSEEKO@ -/* Define to 1 if you have the `fseeko64' function. */ -#cmakedefine H5_HAVE_FSEEKO64 @H5_HAVE_FSEEKO64@ - -/* Define to 1 if you have the `fstat64' function. */ -#cmakedefine H5_HAVE_FSTAT64 @H5_HAVE_FSTAT64@ - -/* Define to 1 if you have the `ftello' function. */ -#cmakedefine H5_HAVE_FTELLO @H5_HAVE_FTELLO@ - -/* Define to 1 if you have the `ftello64' function. */ -#cmakedefine H5_HAVE_FTELLO64 @H5_HAVE_FTELLO64@ - -/* Define to 1 if you have the `ftruncate64' function. */ -#cmakedefine H5_HAVE_FTRUNCATE64 @H5_HAVE_FTRUNCATE64@ - /* Define if the compiler understands the __FUNCTION__ keyword */ #cmakedefine H5_HAVE_FUNCTION @H5_HAVE_FUNCTION@ +/* Determine if INTEGER*16 is available */ +#cmakedefine H5_HAVE_Fortran_INTEGER_SIZEOF_16 @H5_HAVE_Fortran_INTEGER_SIZEOF_16@ + /* Define to 1 if you have the `GetConsoleScreenBufferInfo' function. */ #cmakedefine H5_HAVE_GETCONSOLESCREENBUFFERINFO @H5_HAVE_GETCONSOLESCREENBUFFERINFO@ @@ -270,10 +258,10 @@ /* Define to 1 if you have the <mpe.h> header file. */ #cmakedefine H5_HAVE_MPE_H @H5_HAVE_MPE_H@ -/* Define if `MPI_Comm_c2f' and `MPI_Comm_f2c' exists */ +/* Define if MPI_Comm_c2f and MPI_Comm_f2c exists */ #cmakedefine H5_HAVE_MPI_MULTI_LANG_Comm @H5_HAVE_MPI_MULTI_LANG_Comm@ -/* Define if `MPI_Info_c2f' and `MPI_Info_f2c' exists */ +/* Define if MPI_Info_c2f and MPI_Info_f2c exists */ #cmakedefine H5_HAVE_MPI_MULTI_LANG_Info @H5_HAVE_MPI_MULTI_LANG_Info@ /* Define if we have parallel support */ @@ -348,22 +336,22 @@ /* Define to 1 if you have the `strdup' function. */ #cmakedefine H5_HAVE_STRDUP @H5_HAVE_STRDUP@ -/* Define to 1 if you have the `strtoll' function. */ -#cmakedefine H5_HAVE_STRTOLL @H5_HAVE_STRTOLL@ - -/* Define to 1 if you have the `strtoull' function. */ -#cmakedefine H5_HAVE_STRTOULL @H5_HAVE_STRTOULL@ - /* Define to 1 if you have the <strings.h> header file. */ #cmakedefine H5_HAVE_STRINGS_H @H5_HAVE_STRINGS_H@ /* Define to 1 if you have the <string.h> header file. */ #cmakedefine H5_HAVE_STRING_H @H5_HAVE_STRING_H@ -/* Define if `struct text_info' is defined */ +/* Define to 1 if you have the `strtoll' function. */ +#cmakedefine H5_HAVE_STRTOLL @H5_HAVE_STRTOLL@ + +/* Define to 1 if you have the `strtoull' function. */ +#cmakedefine H5_HAVE_STRTOULL @H5_HAVE_STRTOULL@ + +/* Define if struct text_info is defined */ #cmakedefine H5_HAVE_STRUCT_TEXT_INFO @H5_HAVE_STRUCT_TEXT_INFO@ -/* Define if `struct videoconfig' is defined */ +/* Define if struct videoconfig is defined */ #cmakedefine H5_HAVE_STRUCT_VIDEOCONFIG @H5_HAVE_STRUCT_VIDEOCONFIG@ /* Define to 1 if you have the `symlink' function. */ @@ -402,7 +390,7 @@ /* Define if we have thread safe support */ #cmakedefine H5_HAVE_THREADSAFE @H5_HAVE_THREADSAFE@ -/* Define if `timezone' is a global variable */ +/* Define if timezone is a global variable */ #cmakedefine H5_HAVE_TIMEZONE @H5_HAVE_TIMEZONE@ /* Define if the ioctl TIOCGETD is defined */ @@ -414,7 +402,7 @@ /* Define to 1 if you have the `tmpfile' function. */ #cmakedefine H5_HAVE_TMPFILE @H5_HAVE_TMPFILE@ -/* Define if `tm_gmtoff' is a member of `struct tm' */ +/* Define if tm_gmtoff is a member of struct tm */ #cmakedefine H5_HAVE_TM_GMTOFF @H5_HAVE_TM_GMTOFF@ /* Define to 1 if you have the <unistd.h> header file. */ @@ -435,7 +423,7 @@ /* Define if your system has window style path name. */ #cmakedefine H5_HAVE_WINDOW_PATH @H5_HAVE_WINDOW_PATH@ -/* Define to 1 if you have the <winsock.h> header file. */ +/* Define to 1 if you have the <winsock2.h> header file. */ #cmakedefine H5_HAVE_WINSOCK2_H @H5_HAVE_WINSOCK2_H@ /* Define to 1 if you have the <zlib.h> header file. */ @@ -453,7 +441,7 @@ /* Define if the compiler understands __inline__ */ #cmakedefine H5_HAVE___INLINE__ @H5_HAVE___INLINE__@ -/* Define if HDF5's high-level library headers should be included in hdf5.h */ +/* Define if the high-level library headers should be included in hdf5.h */ #cmakedefine H5_INCLUDE_HL @H5_INCLUDE_HL@ /* Define if your system can convert long double to (unsigned) long long diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake index 0e948fe..1f66bad 100644 --- a/config/cmake/HDF5UseFortran.cmake +++ b/config/cmake/HDF5UseFortran.cmake @@ -23,9 +23,9 @@ include (CheckFortranFunctionExists) CHECK_INCLUDE_FILES(quadmath.h C_HAVE_QUADMATH) if (${C_HAVE_QUADMATH}) - set(${HDF_PREFIX}_HAVE_QUADMATH 1) + set(${HDF_PREFIX}_HAVE_QUADMATH_H 1) else () - set(${HDF_PREFIX}_HAVE_QUADMATH 0) + set(${HDF_PREFIX}_HAVE_QUADMATH_H 0) endif () # The provided CMake Fortran macros don't provide a general compile/run function @@ -341,8 +341,8 @@ endif () set (${HDF_PREFIX}_FORTRAN_SIZEOF_LONG_DOUBLE ${${HDF_PREFIX}_SIZEOF_LONG_DOUBLE}) # remove the invalid kind from the list -if (NOT(${SIZEOF___FLOAT128} EQUAL 0)) - if (NOT(${SIZEOF___FLOAT128} EQUAL ${max_real_fortran_sizeof}) +if (NOT(${${HDF_PREFIX}_SIZEOF___FLOAT128} EQUAL 0)) + if (NOT(${${HDF_PREFIX}_SIZEOF___FLOAT128} EQUAL ${max_real_fortran_sizeof}) AND NOT(${${HDF_PREFIX}_FORTRAN_SIZEOF_LONG_DOUBLE} EQUAL ${max_real_fortran_sizeof}) # account for the fact that the C compiler can have 16-byte __float128 and the fortran compiler only has 8-byte doubles, # so we don't want to remove the 8-byte fortran doubles. @@ -423,9 +423,9 @@ set (PROG_SRC " #include <float.h> #include <stdio.h> -#define CHECK_FLOAT128 ${SIZEOF___FLOAT128} +#define CHECK_FLOAT128 ${${HDF_PREFIX}_SIZEOF___FLOAT128} #if CHECK_FLOAT128!=0 -# if ${${HDF_PREFIX}_HAVE_QUADMATH}!=0 +# if ${${HDF_PREFIX}_HAVE_QUADMATH_H}!=0 #include <quadmath.h> # endif # ifdef FLT128_DIG @@ -460,9 +460,9 @@ string (REGEX REPLACE "\n" ";" PROG_OUTPUT "${PROG_OUTPUT}") list (GET PROG_OUTPUT 0 LDBL_DIG) list (GET PROG_OUTPUT 1 FLT128_DIG) -if (SIZEOF___FLOAT128 EQUAL 0 OR FLT128_DIG EQUAL 0) +if (${HDF_PREFIX}_SIZEOF___FLOAT128 EQUAL 0 OR FLT128_DIG EQUAL 0) set (${HDF_PREFIX}_HAVE_FLOAT128 0) - set (SIZEOF___FLOAT128 0) + set (${HDF_PREFIX}_SIZEOF___FLOAT128 0) set (${HDF_PREFIX}_PAC_C_MAX_REAL_PRECISION ${LDBL_DIG}) else () set(${HDF_PREFIX}_PAC_C_MAX_REAL_PRECISION ${FLT128_DIG}) diff --git a/config/cmake_ext_mod/ConfigureChecks.cmake b/config/cmake_ext_mod/ConfigureChecks.cmake index b0deab7..9be30f7 100644 --- a/config/cmake_ext_mod/ConfigureChecks.cmake +++ b/config/cmake_ext_mod/ConfigureChecks.cmake @@ -322,17 +322,12 @@ if (NOT WINDOWS OR MINGW) HDF_FUNCTION_TEST (HAVE_OFF64_T) if (${HDF_PREFIX}_HAVE_OFF64_T) CHECK_FUNCTION_EXISTS (lseek64 ${HDF_PREFIX}_HAVE_LSEEK64) - CHECK_FUNCTION_EXISTS (fseeko64 ${HDF_PREFIX}_HAVE_FSEEKO64) - CHECK_FUNCTION_EXISTS (ftello64 ${HDF_PREFIX}_HAVE_FTELLO64) - CHECK_FUNCTION_EXISTS (ftruncate64 ${HDF_PREFIX}_HAVE_FTRUNCATE64) endif () CHECK_FUNCTION_EXISTS (fseeko ${HDF_PREFIX}_HAVE_FSEEKO) - CHECK_FUNCTION_EXISTS (ftello ${HDF_PREFIX}_HAVE_FTELLO) HDF_FUNCTION_TEST (HAVE_STAT64_STRUCT) if (HAVE_STAT64_STRUCT) - CHECK_FUNCTION_EXISTS (fstat64 ${HDF_PREFIX}_HAVE_FSTAT64) CHECK_FUNCTION_EXISTS (stat64 ${HDF_PREFIX}_HAVE_STAT64) endif () endif () diff --git a/config/cmake_ext_mod/HDFUseCXX.cmake b/config/cmake_ext_mod/HDFUseCXX.cmake index 3afcdb6..f293ec5 100644 --- a/config/cmake_ext_mod/HDFUseCXX.cmake +++ b/config/cmake_ext_mod/HDFUseCXX.cmake @@ -98,11 +98,11 @@ endmacro () if (CMAKE_CXX_COMPILER_LOADED) foreach (test OLD_HEADER_FILENAME - ${HDF_PREFIX}_NO_NAMESPACE - ${HDF_PREFIX}_NO_STD + HDF_NO_NAMESPACE + HDF_NO_STD BOOL_NOTDEFINED NO_STATIC_CAST - ${HDF_PREFIX}_CXX_HAVE_OFFSETOF + CXX_HAVE_OFFSETOF ) HDF_CXX_FUNCTION_TEST (${test}) endforeach () diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index a5864be..708e713 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -643,6 +643,11 @@ else () H5_DEFAULT_PLUGINDIR "/usr/local/hdf5/lib/plugin" endif () +NOTE: + The BUILD_STATIC_EXECS ("Build Static Executables") option is only valid + on some unix operating systems. It adds the "-static" flag to cflags. This + flag is not available on windows and some modern linux systems will + ignore the flag. ======================================================================== diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 9161b3c..b40f8ed 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -39,6 +39,7 @@ CONTENTS - Tested Configuration Features Summary - More Tested Platforms - Known Problems +- CMake vs. Autotools installations New Features @@ -511,3 +512,38 @@ Known Problems in the HDF5 source. Please report any new problems found to help@hdfgroup.org. + +CMake vs. Autotools installations +================================= +While both build systems produce similar results, there are differences. +Each system produces the same set of folders on linux (only CMake works +on standard Windows); bin, include, lib and share. Autotools places the +COPYING and RELEASE.txt file in the root folder, CMake places them in +the share folder. + +The bin folder contains the tools and the build scripts. Additionally, CMake +creates dynamic versions of the tools with the suffix "-shared". Autotools +installs one set of tools depending on the "--enable-shared" configuration +option. + build scripts + ------------- + Autotools: h5c++, h5cc, h5fc + CMake: h5c++, h5cc, h5hlc++, h5hlcc + +The include folder holds the header files and the fortran mod files. CMake +places the fortran mod files into separate shared and static subfolders, +while Autotools places one set of mod files into the include folder. Because +CMake produces a tools library, the header files for tools will appear in +the include folder. + +The lib folder contains the library files, and CMake adds the pkgconfig +subfolder with the hdf5*.pc files used by the bin/build scripts created by +the CMake build. CMake separates the C interface code from the fortran code by +creating C-stub libraries for each Fortran library. In addition, only CMake +installs the tools library. The names of the szip libraries are different +between the build systems. + +The share folder will have the most differences because CMake builds include +a number of CMake specific files for support of CMake's find_package and support +for the HDF5 Examples CMake project. + |