summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/CMakeLists.txt9
-rw-r--r--utils/Makefile.am14
-rw-r--r--utils/test/CMakeLists.txt35
-rw-r--r--utils/test/Makefile.am34
-rw-r--r--utils/test/swmr_check_compat_vfd.c53
5 files changed, 143 insertions, 2 deletions
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 2d5626e..7c263d1 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -1,4 +1,11 @@
cmake_minimum_required (VERSION 3.10)
project (HDF5_UTILS C)
-add_subdirectory (mirror_vfd)
+if (BUILD_TESTING)
+ add_subdirectory (test)
+endif ()
+
+option (HDF5_BUILD_UTILS "Build HDF5 Utils" ON)
+if (HDF5_BUILD_UTILS)
+ add_subdirectory (mirror_vfd)
+endif ()
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 288da37..876dfb1 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -20,7 +20,19 @@ include $(top_srcdir)/config/commence.am
CONFIG=ordered
+if BUILD_TESTS_CONDITIONAL
+ TESTUTIL_DIR =test
+else
+ TESTUTIL_DIR=
+endif
+
+if MIRROR_VFD_CONDITIONAL
+ MIRROR_VFD_DIR = mirror_vfd
+else
+ MIRROR_VFD_DIR=
+endif
+
# All subdirectories
-SUBDIRS=mirror_vfd
+SUBDIRS=$(MIRROR_VFD_DIR) $(TESTUTIL_DIR)
include $(top_srcdir)/config/conclude.am
diff --git a/utils/test/CMakeLists.txt b/utils/test/CMakeLists.txt
new file mode 100644
index 0000000..921fbd0
--- /dev/null
+++ b/utils/test/CMakeLists.txt
@@ -0,0 +1,35 @@
+cmake_minimum_required (VERSION 3.12)
+project (HDF5_TEST C)
+
+#################################################################################
+# Test program sources
+#################################################################################
+
+macro (ADD_H5_EXE file)
+ add_executable (${file} ${HDF5_TEST_SOURCE_DIR}/${file}.c)
+ target_include_directories (${file} PRIVATE "${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR};${HDF5_TEST_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
+ target_compile_options(${file} PRIVATE "${HDF5_CMAKE_C_FLAGS}")
+ if (NOT BUILD_SHARED_LIBS)
+ TARGET_C_PROPERTIES (${file} STATIC)
+ target_link_libraries (${file} PRIVATE ${HDF5_TEST_LIB_TARGET})
+ else ()
+ TARGET_C_PROPERTIES (${file} SHARED)
+ target_link_libraries (${file} PRIVATE ${HDF5_TEST_LIBSH_TARGET})
+ endif ()
+ set_target_properties (${file} PROPERTIES FOLDER test)
+endmacro ()
+
+##############################################################################
+### S W I M M E R T E S T U T I L S ###
+##############################################################################
+set (H5_UTIL_TESTS)
+
+if (HDF5_TEST_SWMR)
+ set (H5_UTIL_TESTS ${H5_UTIL_TESTS} swmr_check_compat_vfd)
+endif ()
+
+if (H5_UTIL_TESTS)
+ foreach (h5_test ${H5_UTIL_TESTS})
+ ADD_H5_EXE(${h5_test})
+ endforeach ()
+endif ()
diff --git a/utils/test/Makefile.am b/utils/test/Makefile.am
new file mode 100644
index 0000000..164562f
--- /dev/null
+++ b/utils/test/Makefile.am
@@ -0,0 +1,34 @@
+#
+# Copyright by The HDF Group.
+# Copyright by the Board of Trustees of the University of Illinois.
+# All rights reserved.
+#
+# This file is part of HDF5. The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the COPYING file, which can be found at the root of the source code
+# distribution tree, or in https://www.hdfgroup.org/licenses.
+# If you do not have access to either file, you may request a copy from
+# help@hdfgroup.org.
+##
+## Makefile.am
+## Run automake to generate a Makefile.in from this file.
+#
+# HDF5 Library Makefile(.in)
+#
+
+include $(top_srcdir)/config/commence.am
+
+# Include src and tools/lib directories
+AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib -I$(top_srcdir)/utils/test
+
+# These are our main targets, the tools
+
+noinst_PROGRAMS=swmr_check_compat_vfd
+
+# Programs all depend on the hdf5 library, the tools library, and the HL
+# library.
+LDADD=$(LIBH5TEST) $(LIBHDF5)
+
+CHECK_CLEANFILES+=*.h5
+
+include $(top_srcdir)/config/conclude.am
diff --git a/utils/test/swmr_check_compat_vfd.c b/utils/test/swmr_check_compat_vfd.c
new file mode 100644
index 0000000..4133696
--- /dev/null
+++ b/utils/test/swmr_check_compat_vfd.c
@@ -0,0 +1,53 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* Purpose: This is a small program that checks if the HDF5_DRIVER
+ * environment variable is set to a value that supports SWMR.
+ *
+ * It is intended for use in shell scripts.
+ */
+
+#include "h5test.h"
+
+/* This file needs to access the file driver testing code */
+#define H5FD_FRIEND /*suppress error about including H5FDpkg */
+#define H5FD_TESTING
+#include "H5FDpkg.h" /* File drivers */
+
+/*-------------------------------------------------------------------------
+ * Function: main
+ *
+ * Purpose: Inspects the HDF5_DRIVER environment variable, which
+ * determines the VFD that the test harness will use with
+ * the majority of the tests.
+ *
+ * Return: VFD supports SWMR: EXIT_SUCCESS
+ *
+ * VFD does not support SWMR
+ * or failure: EXIT_FAILURE
+ *
+ *-------------------------------------------------------------------------
+ */
+int
+main(void)
+{
+ char *driver = NULL;
+
+ driver = HDgetenv("HDF5_DRIVER");
+
+ if (H5FD__supports_swmr_test(driver))
+ return EXIT_SUCCESS;
+ else
+ return EXIT_FAILURE;
+
+} /* end main() */