summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5repack/CMakeLists.txt')
-rw-r--r--tools/h5repack/CMakeLists.txt531
1 files changed, 531 insertions, 0 deletions
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
new file mode 100644
index 0000000..07688ae
--- /dev/null
+++ b/tools/h5repack/CMakeLists.txt
@@ -0,0 +1,531 @@
+cmake_minimum_required (VERSION 2.8)
+PROJECT (HDF5_TOOLS_H5REPACK)
+
+#-----------------------------------------------------------------------------
+# Setup include Directories
+#-----------------------------------------------------------------------------
+INCLUDE_DIRECTORIES (${HDF5_TOOLS_SOURCE_DIR}/lib)
+INCLUDE_DIRECTORIES (${HDF5_PROJECT_DIR}/test)
+
+# --------------------------------------------------------------------
+# Add h5Repack executables and tests
+# --------------------------------------------------------------------
+SET (REPACK_COMMON_SRCS
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_copy.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_filters.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_opttable.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_parse.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_refs.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_verify.c
+ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack.c
+)
+INCLUDE_DIRECTORIES (${HDF5_TEST_SOURCE_DIR})
+ADD_EXECUTABLE (h5repack ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repack_main.c)
+H5_NAMING (h5repack)
+TARGET_LINK_LIBRARIES (h5repack ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+
+SET (H5_DEP_EXECUTABLES h5repack)
+
+IF (BUILD_TESTING)
+ ADD_EXECUTABLE (testh5repack_detect_szip ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c)
+ H5_NAMING (testh5repack_detect_szip)
+ TARGET_LINK_LIBRARIES (testh5repack_detect_szip ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+
+ ADD_TEST (NAME testh5repack_detect_szip COMMAND $<TARGET_FILE:testh5repack_detect_szip>)
+ IF (HDF5_ENABLE_SZIP_SUPPORT)
+ SET (passRegex "yes")
+ SET_TESTS_PROPERTIES (testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes")
+ ELSE (HDF5_ENABLE_SZIP_SUPPORT)
+ SET (passRegex "no")
+ SET_TESTS_PROPERTIES (testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no")
+ ENDIF (HDF5_ENABLE_SZIP_SUPPORT)
+
+ ADD_EXECUTABLE (h5repacktest ${REPACK_COMMON_SRCS} ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/h5repacktst.c)
+ H5_NAMING (h5repacktest)
+ TARGET_LINK_LIBRARIES (h5repacktest ${HDF5_TOOLS_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+
+ ADD_TEST (NAME h5repacktest COMMAND $<TARGET_FILE:h5repacktest>)
+
+ SET (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES}
+ h5repacktest
+ testh5repack_detect_szip
+ )
+
+
+ SET (INFO_FILE testfiles/h5repack.info)
+
+ SET (FILE0 h5repack_fill.h5)
+ SET (FILE1 h5repack_objs.h5)
+ SET (FILE2 h5repack_attr.h5)
+ SET (FILE3 h5repack_hlink.h5)
+ SET (FILE4 h5repack_layout.h5)
+ SET (FILE5 h5repack_early.h5)
+ SET (FILE7 h5repack_szip.h5)
+ SET (FILE8 h5repack_deflate.h5)
+ SET (FILE9 h5repack_shuffle.h5)
+ SET (FILE10 h5repack_fletcher.h5)
+ SET (FILE11 h5repack_filters.h5)
+ SET (FILE12 h5repack_nbit.h5)
+ SET (FILE13 h5repack_soffset.h5)
+ SET (FILE14 h5repack_layouto.h5 ) # A file with an older version of the layout message (copy of test/tlayouto.h5)
+ SET (FILE15 h5repack_named_dtypes.h5)
+ SET (FILE16 tfamily%05d.h5) # located in common testfiles folder
+ SET (FILE_REF h5repack_refs.h5)
+
+ #-- Copy all the HDF5 files from the test directory into the source directory
+ SET (HDF5_REFERENCE_TEST_FILES
+ h5repack_ext.bin
+ ublock.bin
+ h5repack.info
+ h5repack_attr.h5
+ h5repack_deflate.h5
+ h5repack_early.h5
+ h5repack_ext.h5
+ h5repack_fill.h5
+ h5repack_filters.h5
+ h5repack_fletcher.h5
+ h5repack_hlink.h5
+ h5repack_layout.h5
+ h5repack_layouto.h5
+ h5repack_named_dtypes.h5
+ h5repack_nbit.h5
+ h5repack_objs.h5
+ h5repack_refs.h5
+ h5repack_shuffle.h5
+ h5repack_soffset.h5
+ h5repack_szip.h5
+ )
+ SET (HDF5_COMMON_TEST_FILES
+ tfamily00000.h5
+ tfamily00001.h5
+ tfamily00002.h5
+ tfamily00003.h5
+ tfamily00004.h5
+ tfamily00005.h5
+ tfamily00006.h5
+ tfamily00007.h5
+ tfamily00008.h5
+ tfamily00009.h5
+ tfamily00010.h5
+ )
+
+ FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+ SET (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
+ #MESSAGE (STATUS " Copying ${h5_file}")
+ ADD_CUSTOM_COMMAND (
+ TARGET h5repack
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E copy_if_different ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/${h5_file} ${dest}
+ )
+ ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
+
+ FOREACH (h5c_file ${HDF5_COMMON_TEST_FILES})
+ SET (dest "${PROJECT_BINARY_DIR}/testfiles/${h5c_file}")
+ #MESSAGE (STATUS " Copying ${h5_file}")
+ ADD_CUSTOM_COMMAND (
+ TARGET h5repack
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E copy_if_different ${HDF5_TOOLS_SOURCE_DIR}/testfiles/${h5c_file} ${dest}
+ )
+ ENDFOREACH (h5c_file ${HDF5_COMMON_TEST_FILES})
+
+
+ MACRO (ADD_H5_TEST testname testtype testfile)
+ IF (${testtype} STREQUAL "SKIP")
+ MESSAGE (STATUS "SKIP ${testfile} ${ARGN}")
+ ELSE (${testtype} STREQUAL "SKIP")
+ ADD_TEST (
+ NAME H5REPACK-${testname}
+ COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out.${testfile}
+ )
+ ADD_TEST (
+ NAME H5REPACK-DIFF_${testname}
+ COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out.${testfile}
+ )
+ ENDIF (${testtype} STREQUAL "SKIP")
+ ENDMACRO (ADD_H5_TEST testname testfile testtype)
+
+#
+# The tests
+# We use the files generated by h5repacktst
+# Each run generates "<file>.out.h5" and the tool h5diff is used to
+# compare the input and output files
+#
+# the tests are the same as the program h5repacktst, but run from the CLI
+#
+
+# See which filters are usable (and skip tests for filters we
+# don't have). Do this by searching H5pubconf.h to see which
+# filters are defined.
+
+# detect whether the encoder is present.
+SET (USE_FILTER_SZIP_ENCODER "no")
+IF (HDF5_ENABLE_SZIP_ENCODING)
+ SET (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip})
+ENDIF (HDF5_ENABLE_SZIP_ENCODING)
+
+IF (H5_HAVE_FILTER_DEFLATE)
+ SET (USE_FILTER_DEFLATE "true")
+ENDIF (H5_HAVE_FILTER_DEFLATE)
+
+IF (H5_HAVE_FILTER_SZIP)
+ SET (USE_FILTER_SZIP "true")
+ENDIF (H5_HAVE_FILTER_SZIP)
+
+IF (H5_HAVE_FILTER_SHUFFLE)
+ SET (USE_FILTER_SHUFFLE "true")
+ENDIF (H5_HAVE_FILTER_SHUFFLE)
+
+IF (H5_HAVE_FILTER_FLETCHER32)
+ SET (USE_FILTER_FLETCHER32 "true")
+ENDIF (H5_HAVE_FILTER_FLETCHER32)
+
+IF (H5_HAVE_FILTER_NBIT)
+ SET (USE_FILTER_NBIT "true")
+ENDIF (H5_HAVE_FILTER_NBIT)
+
+IF (H5_HAVE_FILTER_SCALEOFFSET)
+ SET (USE_FILTER_SCALEOFFSET "true")
+ENDIF (H5_HAVE_FILTER_SCALEOFFSET)
+
+# copy files (these files have no filters)
+ADD_H5_TEST (fill "TEST" ${FILE0})
+ADD_H5_TEST (objs "TEST" ${FILE1})
+ADD_H5_TEST (attr "TEST" ${FILE2})
+ADD_H5_TEST (hlink "TEST" ${FILE3})
+ADD_H5_TEST (layout "TEST" ${FILE4})
+ADD_H5_TEST (early "TEST" ${FILE5})
+
+# use $FILE4 to write some filters (this file has no filters)
+
+# gzip with individual object
+SET (arg ${FILE4} -f dset1:GZIP=1 -l dset1:CHUNK=20x10)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg})
+
+# gzip for all
+SET (arg ${FILE4} -f GZIP=1)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg})
+
+# szip with individual object
+SET (arg ${FILE4} -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg})
+
+# szip for all
+SET (arg ${FILE4} -f SZIP=8,NN)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ADD_H5_TEST (szip_all ${TESTTYPE} ${arg})
+
+# shuffle with individual object
+SET (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SHUFFLE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SHUFFLE)
+ADD_H5_TEST (shuffle_individual ${TESTTYPE} ${arg})
+
+# shuffle for all
+SET (arg ${FILE4} -f SHUF)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SHUFFLE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SHUFFLE)
+ADD_H5_TEST (shuffle_all ${TESTTYPE} ${arg})
+
+# fletcher32 with individual object
+SET (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_FLETCHER32)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_FLETCHER32)
+ADD_H5_TEST (fletcher_individual ${TESTTYPE} ${arg})
+
+# fletcher32 for all
+SET (arg ${FILE4} -f FLET)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_FLETCHER32)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_FLETCHER32)
+ADD_H5_TEST (fletcher_all ${TESTTYPE} ${arg})
+
+# all filters
+SET (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (all_filters ${TESTTYPE} ${arg})
+
+###########################################################
+# the following tests assume the input files have filters
+###########################################################
+
+# szip copy
+SET (arg ${FILE7})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg})
+
+# szip remove
+SET (arg ${FILE7} --filter=dset_szip:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP)
+ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg})
+
+# deflate copy
+SET (arg ${FILE8})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg})
+
+# deflate remove
+SET (arg ${FILE8} -f dset_deflate:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg})
+
+# shuffle copy
+SET (arg ${FILE9})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SHUFFLE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SHUFFLE)
+ADD_H5_TEST (shuffle_copy ${TESTTYPE} ${arg})
+
+# shuffle remove
+SET (arg ${FILE9} -f dset_shuffle:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SHUFFLE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SHUFFLE)
+ADD_H5_TEST (shuffle_remove ${TESTTYPE} ${arg})
+
+# fletcher32 copy
+SET (arg ${FILE10})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_FLETCHER32)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_FLETCHER32)
+ADD_H5_TEST (fletcher_copy ${TESTTYPE} ${arg})
+
+# fletcher32 remove
+SET (arg ${FILE10} -f dset_fletcher32:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_FLETCHER32)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_FLETCHER32)
+ADD_H5_TEST (fletcher_remove ${TESTTYPE} ${arg})
+
+# nbit copy
+SET (arg ${FILE12})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_NBIT)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_NBIT)
+ADD_H5_TEST (nbit_copy ${TESTTYPE} ${arg})
+
+# nbit remove
+SET (arg ${FILE12} -f dset_nbit:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_NBIT)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_NBIT)
+ADD_H5_TEST (nbit_remove ${TESTTYPE} ${arg})
+
+# nbit add
+SET (arg ${FILE12} -f dset_int31:NBIT)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_NBIT)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_NBIT)
+ADD_H5_TEST (nbit_add ${TESTTYPE} ${arg})
+
+# scaleoffset copy
+SET (arg ${FILE13})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SCALEOFFSET)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SCALEOFFSET)
+ADD_H5_TEST (scale_copy ${TESTTYPE} ${arg})
+
+# scaleoffset add
+SET (arg ${FILE13} -f dset_none:SOFF=31,IN)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SCALEOFFSET)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SCALEOFFSET)
+ADD_H5_TEST (scale_add ${TESTTYPE} ${arg})
+
+# scaleoffset remove
+SET (arg ${FILE13} -f dset_scaleoffset:NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SCALEOFFSET)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SCALEOFFSET)
+ADD_H5_TEST (scale_remove ${TESTTYPE} ${arg})
+
+# remove all filters
+SET (arg ${FILE11} -f NONE)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
+ADD_H5_TEST (remove_all ${TESTTYPE} ${arg})
+
+#filter conversions
+
+SET (arg ${FILE8} -f dset_deflate:SZIP=8,NN)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg})
+
+SET (arg ${FILE7} -f dset_szip:GZIP=1)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg})
+
+#limit
+SET (arg ${FILE4} -f GZIP=1 -m 1024)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (deflate_limit ${TESTTYPE} ${arg})
+
+#file
+SET (arg ${FILE4} -e ${INFO_FILE})
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg})
+
+#########################################################
+# layout options (these files have no filters)
+#########################################################
+
+ADD_H5_TEST (dset2_chunk_20x10 "TEST" ${FILE4} --layout=dset2:CHUNK=20x10)
+ADD_H5_TEST (chunk_20x10 "TEST" ${FILE4} -l CHUNK=20x10)
+ADD_H5_TEST (dset2_conti "TEST" ${FILE4} -l dset2:CONTI)
+ADD_H5_TEST (conti "TEST" ${FILE4} -l CONTI)
+ADD_H5_TEST (dset2_compa "TEST" ${FILE4} -l dset2:COMPA)
+ADD_H5_TEST (compa "TEST" ${FILE4} -l COMPA)
+
+
+################################################################
+# layout conversions (file has no filters)
+###############################################################
+
+ADD_H5_TEST (dset_compa_conti "TEST" ${FILE4} -l dset_compact:CONTI)
+ADD_H5_TEST (dset_compa_chunk "TEST" ${FILE4} -l dset_compact:CHUNK=2x5)
+ADD_H5_TEST (dset_compa_compa "TEST" ${FILE4} -l dset_compact:COMPA)
+ADD_H5_TEST (dset_conti_compa "TEST" ${FILE4} -l dset_contiguous:COMPA)
+ADD_H5_TEST (dset_conti_chunk "TEST" ${FILE4} -l dset_contiguous:CHUNK=3x6)
+ADD_H5_TEST (dset_conti_conti "TEST" ${FILE4} -l dset_contiguous:CONTI)
+ADD_H5_TEST (chunk_compa "TEST" ${FILE4} -l dset_chunk:COMPA)
+ADD_H5_TEST (chunk_conti "TEST" ${FILE4} -l dset_chunk:CONTI)
+ADD_H5_TEST (chunk_18x13 "TEST" ${FILE4} -l dset_chunk:CHUNK=18x13)
+
+# Native option
+# Do not use FILE1, as the named dtype will be converted to native, and h5diff will
+# report a difference.
+ADD_H5_TEST (native_fill "TEST" ${FILE0} -n)
+ADD_H5_TEST (native_attr "TEST" ${FILE2} -n)
+
+
+# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters)
+SET (arg ${FILE4} --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype])
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (layout_long_switches ${TESTTYPE} ${arg})
+
+# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
+SET (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_TEST (layout_short_switches ${TESTTYPE} ${arg})
+
+# several global filters
+SET (arg ${FILE4} --filter GZIP=1 --filter SHUF)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_SHUFFLE)
+ADD_H5_TEST (global_filters ${TESTTYPE} ${arg})
+
+# syntax of -i infile -o outfile
+# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters)
+SET (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype])
+SET (TESTTYPE "LEGACY")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+#ADD_H5_TEST (old_style_layout_short_switches ${TESTTYPE} ${arg})
+
+# add a userblock to file
+SET (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048)
+ADD_H5_TEST (add_userblock "TEST" ${arg})
+
+# add alignment
+SET (arg ${FILE1} -t 1 -a 1)
+ADD_H5_TEST (add_alignment "TEST" ${arg})
+
+# Check repacking file with old version of layout message (should get upgraded
+# to new version and be readable, etc.)
+ADD_H5_TEST (upgrade_layout "TEST" ${FILE14})
+
+# test for datum size > H5TOOLS_MALLOCSIZE
+ADD_H5_TEST (gt_mallocsize "TEST" ${FILE1} -f GZIP=1)
+
+# Check repacking file with committed datatypes in odd configurations
+ADD_H5_TEST (committed_dt "TEST" ${FILE15})
+
+# tests family driver (file is located in common testfiles folder, uses TOOLTEST1
+#ADD_H5_TEST ( family "FAMILY" ${FILE16})
+
+# test various references (bug 1814)
+ADD_H5_TEST (bug1814 "TEST" ${FILE_REF})
+
+ENDIF (BUILD_TESTING)
+
+#-----------------------------------------------------------------------------
+# Rules for Installation of tools using make Install target
+#-----------------------------------------------------------------------------
+INSTALL (
+ TARGETS
+ h5repack
+ RUNTIME DESTINATION
+ bin/tools
+)