Post by John E. MalmbergThe configure script is now detecting that struct sched_param is present.
...
Attached is a patch to lib/sched.in.patch
Thanks. Applied with tiny changes: I write "OpenVMS", not "VMS", as
discussed in the other thread. Also, no need to use conditionals based
on __CRTL_VER or HAVE_PTHREAD_H, since you said that only OpenVMS >= 7.3
is interesting and this <pthread.h> exists on VMS since 7.2:
http://h41379.www4.hpe.com/doc/72final/6493/6101pro_029.html
http://h30266.www3.hpe.com/odl/axpos/opsys/vmsos84/6493/6101pro_031.html
2017-06-19 Bruno Haible <***@clisp.org>
John E. Malmberg <***@gmail.com> (tiny change)
sched: Fix compilation failure on OpenVMS.
* m4/sched_h.m4 (gl_SCHED_H): Require AC_CANONICAL_HOST. On OpenVMS,
test whether <pthread.h> exists and defines struct sched_param.
* lib/sched.in.h: On OpenVMS, include <pthread.h>.
diff --git a/lib/sched.in.h b/lib/sched.in.h
index aa96aed..6b4bde8 100644
--- a/lib/sched.in.h
+++ b/lib/sched.in.h
@@ -39,10 +39,13 @@
#include <sys/types.h>
#ifdef __KLIBC__
-
-/* On OS/2 kLIBC, struct sched_param is in spawn.h */
+/* On OS/2 kLIBC, struct sched_param is in spawn.h. */
# include <spawn.h>
+#endif
+#ifdef __VMS
+/* On OpenVMS, struct sched_param is in <pthread.h>. */
+# include <pthread.h>
#endif
#if !@HAVE_STRUCT_SCHED_PARAM@
diff --git a/m4/sched_h.m4 b/m4/sched_h.m4
index fd60a40..213cf68 100644
--- a/m4/sched_h.m4
+++ b/m4/sched_h.m4
@@ -1,4 +1,4 @@
-# sched_h.m4 serial 9
+# sched_h.m4 serial 10
dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,6 +8,7 @@ dnl Written by Bruno Haible.
AC_DEFUN([gl_SCHED_H],
[
+ AC_REQUIRE([AC_CANONICAL_HOST])
AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
@@ -41,10 +42,20 @@ AC_DEFUN([gl_SCHED_H],
#include <sched.h>
]])
else
- dnl On OS/2 kLIBC, struct sched_param is in spawn.h.
- AC_CHECK_TYPE([struct sched_param],
- [HAVE_STRUCT_SCHED_PARAM=1], [HAVE_STRUCT_SCHED_PARAM=0],
- [#include <spawn.h>])
+ case "$host_os" in
+ os2*)
+ dnl On OS/2 kLIBC, struct sched_param is in spawn.h.
+ AC_CHECK_TYPE([struct sched_param],
+ [HAVE_STRUCT_SCHED_PARAM=1], [HAVE_STRUCT_SCHED_PARAM=0],
+ [#include <spawn.h>])
+ ;;
+ vms)
+ dnl On OpenVMS 7.2 or newer, struct sched_param is in pthread.h.
+ AC_CHECK_TYPE([struct sched_param],
+ [HAVE_STRUCT_SCHED_PARAM=1], [HAVE_STRUCT_SCHED_PARAM=0],
+ [#include <pthread.h>])
+ ;;
+ esac
fi
AC_SUBST([HAVE_STRUCT_SCHED_PARAM])