>From 09596027f260ff0de0e9932b88b90e0d06c71b6f Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 14 Apr 2023 12:48:46 +0200 Subject: [PATCH 3/4] sys_shm: New module. * lib/sys_shm.in.h: New file. * m4/sys_shm_h.m4: New file. * modules/sys_shm: New file. * doc/posix-headers/sys_shm.texi: Mention the new module. --- ChangeLog | 6 +++++ doc/posix-headers/sys_shm.texi | 2 +- lib/sys_shm.in.h | 30 +++++++++++++++++++++ m4/sys_shm_h.m4 | 20 ++++++++++++++ modules/sys_shm | 48 ++++++++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 lib/sys_shm.in.h create mode 100644 m4/sys_shm_h.m4 create mode 100644 modules/sys_shm diff --git a/ChangeLog b/ChangeLog index efcaeaba16..58a28aef68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2023-04-14 Bruno Haible + sys_shm: New module. + * lib/sys_shm.in.h: New file. + * m4/sys_shm_h.m4: New file. + * modules/sys_shm: New file. + * doc/posix-headers/sys_shm.texi: Mention the new module. + sys_sem: New module. * lib/sys_sem.in.h: New file. * m4/sys_sem_h.m4: New file. diff --git a/doc/posix-headers/sys_shm.texi b/doc/posix-headers/sys_shm.texi index 9807057378..8efbb0dcd3 100644 --- a/doc/posix-headers/sys_shm.texi +++ b/doc/posix-headers/sys_shm.texi @@ -3,7 +3,7 @@ POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_shm.h.html} -Gnulib module: --- +Gnulib module: sys_shm Portability problems fixed by Gnulib: @itemize diff --git a/lib/sys_shm.in.h b/lib/sys_shm.in.h new file mode 100644 index 0000000000..1c58f992fc --- /dev/null +++ b/lib/sys_shm.in.h @@ -0,0 +1,30 @@ +/* Provide a more reliable sys/shm.h. + + Copyright (C) 2023 Free Software Foundation, Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif +@PRAGMA_COLUMNS@ + +/* This file uses #include_next of a system file that defines time_t. + For the 'year2038' module to work right, needs to have been + included before. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + +#@INCLUDE_NEXT@ @NEXT_SYS_SHM_H@ diff --git a/m4/sys_shm_h.m4 b/m4/sys_shm_h.m4 new file mode 100644 index 0000000000..8804ad2ce8 --- /dev/null +++ b/m4/sys_shm_h.m4 @@ -0,0 +1,20 @@ +# sys_shm_h.m4 serial 1 +dnl Copyright (C) 2023 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Bruno Haible. + +AC_DEFUN_ONCE([gl_SYS_SHM_H], +[ + AC_CHECK_HEADERS_ONCE([sys/shm.h]) + dnl For now, we provide a wrapper only if the system already has + dnl a . + if test $ac_cv_header_sys_shm_h = yes; then + GL_GENERATE_SYS_SHM_H=true + gl_CHECK_NEXT_HEADERS([sys/shm.h]) + else + GL_GENERATE_SYS_SHM_H=false + fi +]) diff --git a/modules/sys_shm b/modules/sys_shm new file mode 100644 index 0000000000..fd2a5fb196 --- /dev/null +++ b/modules/sys_shm @@ -0,0 +1,48 @@ +Description: + with extra checks. + +Files: +lib/sys_shm.in.h +m4/sys_shm_h.m4 + +Depends-on: +gen-header +include_next + +configure.ac: +gl_SYS_SHM_H +gl_CONDITIONAL_HEADER([sys/shm.h]) +AC_PROG_MKDIR_P + +Makefile.am: +BUILT_SOURCES += $(SYS_SHM_H) + +# We need the following in order to create when desired. +if GL_GENERATE_SYS_SHM_H +sys/shm.h: sys_shm.in.h $(top_builddir)/config.status + $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys' + $(AM_V_at)$(SED_HEADER_STDOUT) \ + -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_SYS_SHM_H''@|$(NEXT_SYS_SHM_H)|g' \ + $(srcdir)/sys_shm.in.h > $@-t + $(AM_V_at)mv $@-t $@ +else +sys/shm.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += sys/shm.h sys/shm.h-t +MOSTLYCLEANDIRS += sys + +Include: +#if HAVE_SYS_SHM_H + +#endif + +License: +LGPLv2+ + +Maintainer: +all -- 2.34.1