summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2014-09-03 17:12:52 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2014-09-03 17:12:52 (GMT)
commitc23f3a7ea577b66f103ab06e9310e819c13f5401 (patch)
tree5fd6bbaf00a3973ea0d0e591d9b6256b687c91a2
parent2154d1c6f1b791a2ba9125a48a098fd4da42f01f (diff)
downloadhdf5-c23f3a7ea577b66f103ab06e9310e819c13f5401.zip
hdf5-c23f3a7ea577b66f103ab06e9310e819c13f5401.tar.gz
hdf5-c23f3a7ea577b66f103ab06e9310e819c13f5401.tar.bz2
[svn-r25569] Added option to build tools static when building shared libraries. This will prevent 'dll' being appended to the tool name on windows. See HDFFV-8292.
Tested: local linux
-rw-r--r--CMakeLists.txt2
-rw-r--r--config/cmake/hdf5-config-version.cmake.in46
-rw-r--r--release_docs/INSTALL_CMake.txt1
-rw-r--r--release_docs/RELEASE.txt4
-rw-r--r--src/CMakeLists.txt18
-rw-r--r--tools/h5copy/CMakeLists.txt11
-rw-r--r--tools/h5diff/CMakeLists.txt18
-rw-r--r--tools/h5dump/CMakeLists.txt9
-rw-r--r--tools/h5import/CMakeLists.txt9
-rw-r--r--tools/h5jam/CMakeLists.txt36
-rw-r--r--tools/h5ls/CMakeLists.txt9
-rw-r--r--tools/h5repack/CMakeLists.txt9
-rw-r--r--tools/h5stat/CMakeLists.txt9
-rw-r--r--tools/lib/CMakeLists.txt13
-rw-r--r--tools/misc/CMakeLists.txt27
15 files changed, 174 insertions, 47 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6877b6a..a584e89 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -283,8 +283,8 @@ if (BUILD_SHARED_LIBS)
else (BUILD_SHARED_LIBS)
set (H5_BUILT_AS_STATIC_LIB 1)
set (H5_ENABLE_STATIC_LIB YES)
- set (CMAKE_POSITION_INDEPENDENT_CODE ON)
endif (BUILD_SHARED_LIBS)
+set (CMAKE_POSITION_INDEPENDENT_CODE ON)
#-----------------------------------------------------------------------------
# Option to Build Static executables
diff --git a/config/cmake/hdf5-config-version.cmake.in b/config/cmake/hdf5-config-version.cmake.in
index 148a659..63a730f 100644
--- a/config/cmake/hdf5-config-version.cmake.in
+++ b/config/cmake/hdf5-config-version.cmake.in
@@ -1,27 +1,47 @@
#-----------------------------------------------------------------------------
# HDF5 Version file for install directory
#-----------------------------------------------------------------------------
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
+# but only if the requested major.minor version is the same as the current one.
+# The variable HDF5_VERSION_STRING must be set before calling configure_file().
-set (PACKAGE_VERSION @HDF5_VERSION_STRING@)
+set (PACKAGE_VERSION "@HDF5_VERSION_STRING@")
-if ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+
+if ("${PACKAGE_FIND_VERSION_MAJOR}" STREQUAL "@H5_VERS_MAJOR@")
# exact match for version @H5_VERS_MAJOR@.@H5_VERS_MINOR@
- if ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
+ if ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@H5_VERS_MINOR@")
# compatible with any version @H5_VERS_MAJOR@.@H5_VERS_MINOR@.x
- set (PACKAGE_VERSION_COMPATIBLE 1)
+ set (PACKAGE_VERSION_COMPATIBLE TRUE)
- if ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
- set (PACKAGE_VERSION_EXACT 1)
+ if ("${PACKAGE_FIND_VERSION_PATCH}" STREQUAL "@H5_VERS_RELEASE@")
+ set (PACKAGE_VERSION_EXACT TRUE)
- if ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
+ if ("${PACKAGE_FIND_VERSION_TWEAK}" STREQUAL "@H5_VERS_SUBRELEASE@")
# not using this yet
- endif ("${PACKAGE_FIND_VERSION_TWEAK}" EQUAL @H5_VERS_SUBRELEASE@)
-
- endif ("${PACKAGE_FIND_VERSION_PATCH}" EQUAL @H5_VERS_RELEASE@)
-
- endif ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL @H5_VERS_MINOR@)
-endif ("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL @H5_VERS_MAJOR@)
+ endif ("${PACKAGE_FIND_VERSION_TWEAK}" STREQUAL "@H5_VERS_SUBRELEASE@")
+ endif ("${PACKAGE_FIND_VERSION_PATCH}" STREQUAL "@H5_VERS_RELEASE@")
+ else ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@H5_VERS_MINOR@")
+ set (PACKAGE_VERSION_COMPATIBLE FALSE)
+ endif ("${PACKAGE_FIND_VERSION_MINOR}" STREQUAL "@H5_VERS_MINOR@")
+endif ("${PACKAGE_FIND_VERSION_MAJOR}" STREQUAL "@H5_VERS_MAJOR@")
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+ return()
+endif()
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+ math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+ set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+ set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index 31e3917..29c542a 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -554,6 +554,7 @@ HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" OFF
HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF
HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" OFF
HDF5_BUILD_TOOLS "Build HDF5 Tools" OFF
+ONLY_STATIC_TOOLS "Build Only Static Tools" OFF
if (HDF5_BUILD_FORTRAN)
HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index b990342..665fc51 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -41,6 +41,10 @@ New Features
Configuration:
-------------
+ - CMake: Added option to build only tools static. This can be used when building
+ the libraries as shared. For release binaries on Windows, this option prevents
+ the tools being named with 'dll' being appended, see HDFFV-8292
+ (ADB 2014/09/03)
- Autotools: Automake updated to 1.14.1 (ADB - 2014/04/08)
- CMake: Moved minimum CMake version to 2.8.11 which enables better library
include processing. (ADB - 2014/03/26)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d5d57d4..fd02ef7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -858,7 +858,8 @@ set_source_files_properties (${HDF5_BINARY_DIR}/H5version.h GENERATED)
set (common_SRCS ${common_SRCS} ${HDF5_BINARY_DIR}/H5overflow.h)
set_source_files_properties (${HDF5_BINARY_DIR}/H5overflow.h GENERATED)
-add_library (${HDF5_LIB_TARGET} ${LIB_TYPE} ${common_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS})
+add_library (${HDF5_LIB_TARGET}_obj OBJECT ${common_SRCS} ${H5_PUBLIC_HEADERS} ${H5_PRIVATE_HEADERS})
+add_library (${HDF5_LIB_TARGET} ${LIB_TYPE} $<TARGET_OBJECTS:${HDF5_LIB_TARGET}_obj>)
TARGET_C_PROPERTIES (${HDF5_LIB_TARGET} " " " ")
target_link_libraries (${HDF5_LIB_TARGET} ${LINK_LIBS})
if (NOT WIN32)
@@ -873,6 +874,21 @@ set_target_properties (${HDF5_LIB_TARGET} PROPERTIES
FOLDER libraries
INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
)
+if (ONLY_STATIC_TOOLS)
+ add_library (${HDF5_LIB_TARGET}_static STATIC $<TARGET_OBJECTS:${HDF5_LIB_TARGET}_obj>)
+ TARGET_C_PROPERTIES (${HDF5_LIB_TARGET}_static " " " ")
+ target_link_libraries (${HDF5_LIB_TARGET}_static ${LINK_LIBS})
+ if (NOT WIN32)
+ target_link_libraries (${HDF5_LIB_TARGET}_static dl)
+ endif (NOT WIN32)
+ if (H5_HAVE_PARALLEL AND MPI_C_FOUND)
+ target_link_libraries (${HDF5_LIB_TARGET}_static ${MPI_C_LIBRARIES})
+ endif (H5_HAVE_PARALLEL AND MPI_C_FOUND)
+ H5_SET_LIB_OPTIONS (${HDF5_LIB_TARGET}_static ${HDF5_LIB_NAME} STATIC)
+ set_target_properties (${HDF5_LIB_TARGET}_static PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+ )
+endif (ONLY_STATIC_TOOLS)
option (HDF5_ENABLE_DEBUG_APIS "Turn on debugging in all packages" OFF)
if (HDF5_ENABLE_DEBUG_APIS)
diff --git a/tools/h5copy/CMakeLists.txt b/tools/h5copy/CMakeLists.txt
index 267d92b..6f42f5a 100644
--- a/tools/h5copy/CMakeLists.txt
+++ b/tools/h5copy/CMakeLists.txt
@@ -9,11 +9,16 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# --------------------------------------------------------------------
# Add the h5copy and test executables
# --------------------------------------------------------------------
-add_executable (h5copy ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copy.c)
-TARGET_NAMING (h5copy ${LIB_TYPE})
+add_executable (h5copy ${HDF5_TOOLS_H5COPY_SOURCE_DIR}/h5copy.c )
TARGET_C_PROPERTIES (h5copy " " " ")
-target_link_libraries (h5copy ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5copy PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5copy STATIC)
+ target_link_libraries (h5copy ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5copy ${LIB_TYPE})
+ target_link_libraries (h5copy ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5copy)
diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt
index 35c55a4..4e38fe1 100644
--- a/tools/h5diff/CMakeLists.txt
+++ b/tools/h5diff/CMakeLists.txt
@@ -13,10 +13,15 @@ add_executable (h5diff
${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c
${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_main.c
)
-TARGET_NAMING (h5diff ${LIB_TYPE})
TARGET_C_PROPERTIES (h5diff " " " ")
-target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5diff PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5diff STATIC)
+ target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5diff ${LIB_TYPE})
+ target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5diff)
@@ -25,10 +30,15 @@ if (H5_HAVE_PARALLEL)
${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c
${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/ph5diff_main.c
)
- TARGET_NAMING (ph5diff ${LIB_TYPE})
TARGET_C_PROPERTIES (ph5diff " " " ")
- target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (ph5diff PROPERTIES FOLDER tools)
+ if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (ph5diff STATIC)
+ target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+ else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (ph5diff ${LIB_TYPE})
+ target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+ endif (ONLY_STATIC_TOOLS)
endif (H5_HAVE_PARALLEL)
if (BUILD_TESTING)
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index 584222e..4f30ce6 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -14,10 +14,15 @@ add_executable (h5dump
${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_ddl.c
${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump_xml.c
)
-TARGET_NAMING (h5dump ${LIB_TYPE})
TARGET_C_PROPERTIES (h5dump " " " ")
-target_link_libraries (h5dump ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5dump PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5dump STATIC)
+ target_link_libraries (h5dump ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5dump ${LIB_TYPE})
+ target_link_libraries (h5dump ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5dump)
diff --git a/tools/h5import/CMakeLists.txt b/tools/h5import/CMakeLists.txt
index a18133f..7ba91fc 100644
--- a/tools/h5import/CMakeLists.txt
+++ b/tools/h5import/CMakeLists.txt
@@ -10,11 +10,16 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# Add the h5import executables
# --------------------------------------------------------------------
add_executable (h5import ${HDF5_TOOLS_H5IMPORT_SOURCE_DIR}/h5import.c)
-TARGET_NAMING (h5import ${LIB_TYPE})
TARGET_C_PROPERTIES (h5import " " " ")
-target_link_libraries (h5import ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
#set_target_properties (h5import PROPERTIES COMPILE_DEFINITIONS H5DEBUGIMPORT)
set_target_properties (h5import PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5import STATIC)
+ target_link_libraries (h5import ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5import ${LIB_TYPE})
+ target_link_libraries (h5import ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5import)
diff --git a/tools/h5jam/CMakeLists.txt b/tools/h5jam/CMakeLists.txt
index a8e3a7c..bf6a0ef 100644
--- a/tools/h5jam/CMakeLists.txt
+++ b/tools/h5jam/CMakeLists.txt
@@ -10,28 +10,48 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# Add the h5jam executables
# --------------------------------------------------------------------
add_executable (h5jam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5jam.c)
-TARGET_NAMING (h5jam ${LIB_TYPE})
TARGET_C_PROPERTIES (h5jam " " " ")
-target_link_libraries (h5jam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5jam PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5jam STATIC)
+ target_link_libraries (h5jam ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5jam ${LIB_TYPE})
+ target_link_libraries (h5jam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
add_executable (getub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/getub.c)
-TARGET_NAMING (getub ${LIB_TYPE})
TARGET_C_PROPERTIES (getub " " " ")
-target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (getub PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (getub STATIC)
+ target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (getub ${LIB_TYPE})
+ target_link_libraries (getub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
add_executable (tellub ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/tellub.c)
-TARGET_NAMING (tellub ${LIB_TYPE})
TARGET_C_PROPERTIES (tellub " " " ")
-target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (tellub PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (tellub STATIC)
+ target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (tellub ${LIB_TYPE})
+ target_link_libraries (tellub ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
add_executable (h5unjam ${HDF5_TOOLS_H5JAM_SOURCE_DIR}/h5unjam.c)
-TARGET_NAMING (h5unjam ${LIB_TYPE})
TARGET_C_PROPERTIES (h5unjam " " " ")
-target_link_libraries (h5unjam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5unjam PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5unjam STATIC)
+ target_link_libraries (h5unjam ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5unjam ${LIB_TYPE})
+ target_link_libraries (h5unjam ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES
h5jam
diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt
index f3749e3..7dbdbf4 100644
--- a/tools/h5ls/CMakeLists.txt
+++ b/tools/h5ls/CMakeLists.txt
@@ -10,10 +10,15 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# Add the h5ls executable
#-----------------------------------------------------------------------------
add_executable (h5ls ${HDF5_TOOLS_H5LS_SOURCE_DIR}/h5ls.c)
-TARGET_NAMING (h5ls ${LIB_TYPE})
TARGET_C_PROPERTIES (h5ls " " " ")
-target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5ls PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5ls STATIC)
+ target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5ls ${LIB_TYPE})
+ target_link_libraries (h5ls ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES
h5ls
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
index cb8720e..a45e3a5 100644
--- a/tools/h5repack/CMakeLists.txt
+++ b/tools/h5repack/CMakeLists.txt
@@ -21,10 +21,15 @@ set (REPACK_COMMON_SRCS
)
add_executable (h5repack ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c)
-TARGET_NAMING (h5repack ${LIB_TYPE})
TARGET_C_PROPERTIES (h5repack " " " ")
-target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5repack PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5repack STATIC)
+ target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5repack ${LIB_TYPE})
+ target_link_libraries (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5repack)
diff --git a/tools/h5stat/CMakeLists.txt b/tools/h5stat/CMakeLists.txt
index 0658216..045f632 100644
--- a/tools/h5stat/CMakeLists.txt
+++ b/tools/h5stat/CMakeLists.txt
@@ -10,10 +10,15 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# Add the h5stat executables
# --------------------------------------------------------------------
add_executable (h5stat ${HDF5_TOOLS_H5STAT_SOURCE_DIR}/h5stat.c)
-TARGET_NAMING (h5stat ${LIB_TYPE})
TARGET_C_PROPERTIES (h5stat " " " ")
-target_link_libraries (h5stat ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5stat PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5stat STATIC)
+ target_link_libraries (h5stat ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5stat ${LIB_TYPE})
+ target_link_libraries (h5stat ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES h5stat)
diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
index e65673a..8c1cdb6 100644
--- a/tools/lib/CMakeLists.txt
+++ b/tools/lib/CMakeLists.txt
@@ -1,6 +1,7 @@
cmake_minimum_required (VERSION 2.8.11)
PROJECT (HDF5_TOOLS_LIB)
+option (ONLY_STATIC_TOOLS "Build Only Static Tools" OFF)
#-----------------------------------------------------------------------------
# Apply Definitions to compiler in this directory and below
#-----------------------------------------------------------------------------
@@ -36,7 +37,8 @@ set (H5_TOOLS_LIB_HDRS
${HDF5_TOOLS_LIB_SOURCE_DIR}/h5diff.h
)
-add_library (${HDF5_TOOLS_LIB_TARGET} ${LIB_TYPE} ${H5_TOOLS_LIB_SRCS} ${H5_TOOLS_LIB_HDRS})
+add_library (${HDF5_TOOLS_LIB_TARGET}_obj OBJECT ${H5_TOOLS_LIB_SRCS} ${H5_TOOLS_LIB_HDRS})
+add_library (${HDF5_TOOLS_LIB_TARGET} ${LIB_TYPE} $<TARGET_OBJECTS:${HDF5_TOOLS_LIB_TARGET}_obj>)
TARGET_C_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} " " " ")
target_link_libraries (${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIB_TARGET}")
@@ -51,6 +53,15 @@ set_target_properties (${HDF5_TOOLS_LIB_TARGET} PROPERTIES
FOLDER libraries/tools
INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
)
+if (ONLY_STATIC_TOOLS)
+ add_library (${HDF5_TOOLS_LIB_TARGET}_static STATIC $<TARGET_OBJECTS:${HDF5_TOOLS_LIB_TARGET}_obj>)
+ TARGET_C_PROPERTIES (${HDF5_TOOLS_LIB_TARGET}_static " " " ")
+ target_link_libraries (${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+ H5_SET_LIB_OPTIONS (${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_TOOLS_LIB_NAME} STATIC)
+ set_target_properties (${HDF5_TOOLS_LIB_TARGET}_static PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>"
+ )
+endif (ONLY_STATIC_TOOLS)
##############################################################################
##############################################################################
diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt
index 8af05b4..3b08e1b 100644
--- a/tools/misc/CMakeLists.txt
+++ b/tools/misc/CMakeLists.txt
@@ -11,22 +11,37 @@ INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
# --------------------------------------------------------------------
#-- Misc Executables
add_executable (h5debug ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5debug.c)
-TARGET_NAMING (h5debug ${LIB_TYPE})
TARGET_C_PROPERTIES (h5debug " " " ")
-target_link_libraries (h5debug ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
set_target_properties (h5debug PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5debug STATIC)
+ target_link_libraries (h5debug ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5debug ${LIB_TYPE})
+ target_link_libraries (h5debug ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
add_executable (h5repart ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5repart.c)
-TARGET_NAMING (h5repart ${LIB_TYPE})
TARGET_C_PROPERTIES (h5repart " " " ")
-target_link_libraries (h5repart ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
set_target_properties (h5repart PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5repart STATIC)
+ target_link_libraries (h5repart ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5repart ${LIB_TYPE})
+ target_link_libraries (h5repart ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
add_executable (h5mkgrp ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5mkgrp.c)
-TARGET_NAMING (h5mkgrp ${LIB_TYPE})
TARGET_C_PROPERTIES (h5mkgrp " " " ")
-target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5mkgrp PROPERTIES FOLDER tools)
+if (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5mkgrp STATIC)
+ target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET}_static ${HDF5_LIB_TARGET}_static)
+else (ONLY_STATIC_TOOLS)
+ TARGET_NAMING (h5mkgrp ${LIB_TYPE})
+ target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+endif (ONLY_STATIC_TOOLS)
set (H5_DEP_EXECUTABLES
h5debug