cmake_minimum_required(VERSION 3.2.2) PROJECT (H4H5_UTILS_H5TOH4 C CXX) INCLUDE_DIRECTORIES (${H4H5_SRC_DIR}) if (WIN32) add_definitions (-DDOS_FS) endif () #-- Adding utility h5toh4convert add_executable (h5toh4convert ${H4H5_UTILS_H5TOH4_SOURCE_DIR}/h5toh4.c) if (H5_USE_16_API_DEFAULT) add_definitions (-DH5_USE_16_API) endif () TARGET_NAMING (h5toh4convert STATIC) TARGET_C_PROPERTIES (h5toh4convert STATIC " " " ") target_link_libraries (h5toh4convert ${H4H5_SRC_LIB_TARGET} ${LINK_LIBS}) SET_GLOBAL_VARIABLE (H4H5_APPS_TO_EXPORT "${H4H5_APPS_TO_EXPORT};h5toh4convert") #add_test (NAME h5toh4convert COMMAND $) if (BUILD_TESTING) #-- Copy all the data files from the test directory into the source directory set (H5H4_TEST_FILES tgroup tdset tattr tslink thlink tcompound tcompound-str tall tloop tdset2 tcompound2 tmany timage tsds_attr tsds_dim tstr tstr2 ttable ) foreach (h5h4_file ${H5H4_TEST_FILES}) set (dest "${PROJECT_BINARY_DIR}/${h5h4_file}.h5") set (desth4 "${PROJECT_BINARY_DIR}/Expected/${h5h4_file}.hdf") #message (STATUS " Copying ${H4H5_UTILS_SRC_DIR}/testfiles/${h5h4_file} to ${dest} and ${desth4}") add_custom_command ( TARGET h5toh4convert POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${H4H5_UTILS_SRC_DIR}/testfiles/${h5h4_file}.h5 ${dest} ) add_custom_command ( TARGET h5toh4convert POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${H4H5_UTILS_SRC_DIR}/testfiles/Expected/${h5h4_file}.hdf ${desth4} ) add_custom_command ( TARGET h5toh4convert POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${H4H5_UTILS_SRC_DIR}/testfiles/Expected/${h5h4_file}-r.hdf ${desth4} ) endforeach () # The converter assumes all hdf5 files has the .h5 suffix as in the form # of foo.h5. It creates the corresponding hdf4 files with the .hdf suffix # as in the form of foo.hdf. One exception is that if exactly two file # names are given, it treats the first argument as an hdf5 file and creates # the corresponding hdf4 file with the name as the second argument, WITOUT # any consideration of the suffix. (For this test script, in order to # match the output hdf4 file with the expected hdf4 file, it expects the # second file of the two-files tests has the .hdf suffix too.) MACRO (ADD_H5H4_TEST testfile) add_test ( NAME H5H4convert-${testfile} COMMAND $ ${PROJECT_BINARY_DIR}/${testfile}.h5 ${PROJECT_BINARY_DIR}/${testfile}.hdf ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5H4convert-${testfile} PROPERTIES DEPENDS ${last_test}) endif () add_test ( NAME H5H4convert-DIFF_${testfile} COMMAND ${HDF4_DIFF_EXECUTABLE} ${PROJECT_BINARY_DIR}/${testfile}.hdf ${PROJECT_BINARY_DIR}/Expected/${testfile}.hdf ) set_tests_properties (H5H4convert-DIFF_${testfile} PROPERTIES DEPENDS H5H4convert-${testfile}) set (last_test "H5H4convert-DIFF_${testfile}") ENDMACRO () MACRO (ADD_H5H4_ROOT_TEST testfile) add_test ( NAME H5H4convert-r-${testfile} COMMAND $ ${PROJECT_BINARY_DIR}/${testfile}.h5 -r ${PROJECT_BINARY_DIR}/${testfile}-r.hdf ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5H4convert-r-${testfile} PROPERTIES DEPENDS ${last_test}) endif () add_test ( NAME H5H4convert-r-DIFF_${testfile} COMMAND ${HDF4_DIFF_EXECUTABLE} ${PROJECT_BINARY_DIR}/${testfile}-r.hdf ${PROJECT_BINARY_DIR}/Expected/${testfile}.hdf ) set_tests_properties (H5H4convert-r-DIFF_${testfile} PROPERTIES DEPENDS H5H4convert-r-${testfile}) set (last_test "H5H4convert-r-DIFF_${testfile}") ENDMACRO () #H4DIFF=`echo $CC | sed -e 's/h4cc/:/' | cut -d: -f1`/'hdiff' ############################################################################## ############################################################################## ### T H E T E S T S ### ############################################################################## ############################################################################## # Remove any output file left over from previous test run add_test ( NAME H5H4convert-clearall-objects COMMAND ${CMAKE_COMMAND} -E remove tgroup.hdf tdset.hdf tattr.hdf tslink.hdf thlink.hdf tcompound.hdf tcompound-str.hdf tall.hdf tloop.hdf tdset2.hdf tcompound2.hdf tmany.hdf timage.hdf tsds_attr.hdf tsds_dim.hdf tstr.hdf tstr2.hdf ttable.hdf ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5H4convert-clearall-objects PROPERTIES DEPENDS ${last_test}) endif () set (last_test "H5H4convert-clearall-objects") # Remove any output file left over from previous test run add_test ( NAME H5H4convert-root-clearall-objects COMMAND ${CMAKE_COMMAND} -E remove tgroup-r.hdf tdset-r.hdf tattr-r.hdf tslink-r.hdf thlink-r.hdf tcompound-r.hdf tcompound-str-r.hdf tall-r.hdf tloop-r.hdf tdset2-r.hdf tcompound2-r.hdf tmany-r.hdf timage-r.hdf tsds_attr-r.hdf tsds_dim-r.hdf tstr-r.hdf tstr2-r.hdf ttable-r.hdf ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (H5H4convert-root-clearall-objects PROPERTIES DEPENDS ${last_test}) endif () set (last_test "H5H4convert-root-clearall-objects") #$RM $OUTDIR/*.hdf $OUTDIR/*.tmp # tests for converting more H5 string objects. ADD_H5H4_TEST (tstr2) ADD_H5H4_TEST (timage) ADD_H5H4_TEST (ttable) ADD_H5H4_TEST (tsds_attr) ADD_H5H4_TEST (tsds_dim) # # Again, the test for conversion are the same as the first set of test. # Here, multiple conversion are done on HDF5 files at one time. # #$RM $OUTDIR/*.hdf $OUTDIR/*.tmp #CONVERT -m tgroup.h5 tdset.h5 tattr.h5 tslink.h5 thlink.h5 #CONVERT -m tcompound.h5 tall.h5 #CONVERT -m tloop.h5 #CONVERT -m tdset2.h5 tcompound2.h5 tmany.h5 #CONVERT -m tstr.h5 tstr2.h5 #$RM $OUTDIR/*.hdf $OUTDIR/*.tmp ADD_H5H4_ROOT_TEST (tgroup) ADD_H5H4_ROOT_TEST (tdset) ADD_H5H4_ROOT_TEST (tattr) ADD_H5H4_ROOT_TEST (tslink) ADD_H5H4_ROOT_TEST (thlink) ADD_H5H4_ROOT_TEST (tcompound) ADD_H5H4_ROOT_TEST (tcompound-str) ADD_H5H4_ROOT_TEST (tall) ADD_H5H4_ROOT_TEST (tloop) ADD_H5H4_ROOT_TEST (tdset2) ADD_H5H4_ROOT_TEST (tcompound2) ADD_H5H4_ROOT_TEST (tmany) ADD_H5H4_ROOT_TEST (tstr) ADD_H5H4_ROOT_TEST (tstr2) ADD_H5H4_ROOT_TEST (timage) ADD_H5H4_ROOT_TEST (ttable) ADD_H5H4_ROOT_TEST (tsds_attr) ADD_H5H4_ROOT_TEST (tsds_dim) # to do: -m and -r together endif () ############################################################################## ############################################################################## ### I N S T A L L A T I O N ### ############################################################################## ############################################################################## #----------------------------------------------------------------------------- # Rules for Installation of tools using make Install target #----------------------------------------------------------------------------- INSTALL_PROGRAM_PDB (h5toh4convert ${H4H5_INSTALL_BIN_DIR} toolsapplications) install ( TARGETS h5toh4convert EXPORT ${H4H5_EXPORTED_TARGETS} RUNTIME DESTINATION ${H4H5_INSTALL_BIN_DIR} COMPONENT toolsapplications )