summaryrefslogtreecommitdiffstats
path: root/config/cmake/HDFTests.c
diff options
context:
space:
mode:
Diffstat (limited to 'config/cmake/HDFTests.c')
-rw-r--r--config/cmake/HDFTests.c217
1 files changed, 217 insertions, 0 deletions
diff --git a/config/cmake/HDFTests.c b/config/cmake/HDFTests.c
new file mode 100644
index 0000000..96460d7
--- /dev/null
+++ b/config/cmake/HDFTests.c
@@ -0,0 +1,217 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * 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. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/* A simple test program to see if a function "works" */
+#define SIMPLE_TEST(x) int main(){ x; return 0; }
+
+
+#ifdef HAVE_ATTRIBUTE
+
+int
+main ()
+{
+ int __attribute__((unused)) x;
+
+ return 0;
+}
+
+#endif /* HAVE_ATTRIBUTE */
+
+#ifdef HAVE_TIMEZONE
+
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#include <time.h>
+SIMPLE_TEST(timezone = 0);
+
+#endif /* HAVE_TIMEZONE */
+
+#ifdef SYSTEM_SCOPE_THREADS
+#include <stdlib.h>
+#include <pthread.h>
+
+int main(void)
+{
+ pthread_attr_t attribute;
+ int ret;
+
+ pthread_attr_init(&attribute);
+ ret = pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
+ if (ret == 0)
+ return 0;
+ return 1;
+}
+
+#endif /* SYSTEM_SCOPE_THREADS */
+
+#ifdef HAVE_SOCKLEN_T
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+
+SIMPLE_TEST(socklen_t foo);
+
+#endif /* HAVE_SOCKLEN_T */
+
+#ifdef DEV_T_IS_SCALAR
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+int main ()
+{
+ dev_t d1, d2;
+ if (d1 == d2)
+ return 0;
+ return 1;
+}
+
+#endif /* DEV_T_IS_SCALAR */
+
+#ifdef HAVE_OFF64_T
+
+#include <sys/types.h>
+
+int main()
+{
+ off64_t n = 0;
+ return (int)n;
+}
+#endif
+
+#ifdef TEST_DIRECT_VFD_WORKS
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int main(void)
+{
+ int fid;
+
+ if ((fid = open("tst_file", O_CREAT | O_TRUNC | O_DIRECT, 0755)) < 0)
+ return 1;
+ close(fid);
+ remove("tst_file");
+
+ return 0;
+}
+#endif
+
+#ifdef HAVE_DIRECT
+ SIMPLE_TEST(posix_memalign());
+#endif
+
+#ifdef HAVE_DEFAULT_SOURCE
+/* Check default source */
+#include <features.h>
+
+int
+main(void)
+{
+#ifdef __GLIBC_PREREQ
+ return __GLIBC_PREREQ(2,19);
+#else
+ return 0;
+#endif
+}
+#endif
+
+#ifdef TEST_LFS_WORKS
+
+/* Return 0 when LFS is available and 1 otherwise. */
+
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _LARGE_FILES
+#define _FILE_OFFSET_BITS 64
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <assert.h>
+#include <stdio.h>
+
+#define OFF_T_64 (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+
+int main(int argc, char **argv)
+{
+
+ /* Check that off_t can hold 2^63 - 1 and perform basic operations... */
+ if (OFF_T_64 % 2147483647 != 1)
+ return 1;
+
+ /* stat breaks on SCO OpenServer */
+ struct stat buf;
+ stat(argv[0], &buf);
+ if (!S_ISREG(buf.st_mode))
+ return 2;
+
+ FILE *file = fopen(argv[0], "r");
+ off_t offset = ftello(file);
+ fseek(file, offset, SEEK_CUR);
+ fclose(file);
+ return 0;
+}
+#endif
+
+#ifdef GETTIMEOFDAY_GIVES_TZ
+#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+int main(void)
+{
+ struct timeval tv;
+ struct timezone tz;
+
+ tz.tz_minuteswest = 7777; /* Initialize to an unreasonable number */
+ tz.tz_dsttime = 7;
+
+ gettimeofday(&tv, &tz);
+
+ /* Check whether the function returned any value at all */
+ if (tz.tz_minuteswest == 7777 && tz.tz_dsttime == 7)
+ return 1;
+ else
+ return 0;
+}
+#endif
+
+#ifdef HAVE_IOEO
+
+#include <windows.h>
+typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
+int main ()
+{
+ PGNSI pGNSI;
+
+ pGNSI = (PGNSI) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "InitOnceExecuteOnce");
+
+ if (NULL == pGNSI)
+ return 1;
+ else
+ return 0;
+}
+
+#endif /* HAVE_IOEO */