aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-06 20:32:46 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-06 22:35:01 +0200
commit53850f044f65dd11efdf67a2ab214d312295d85c (patch)
tree1ceaf2a2c4e7153079a8d07046865fc07cb60d49 /sysdeps/mach/hurd
parent41d8c3bc33bcae1ebb8077b0442caef4917f763a (diff)
downloadglibc-53850f044f65dd11efdf67a2ab214d312295d85c.tar
glibc-53850f044f65dd11efdf67a2ab214d312295d85c.tar.gz
glibc-53850f044f65dd11efdf67a2ab214d312295d85c.tar.bz2
glibc-53850f044f65dd11efdf67a2ab214d312295d85c.zip
hurd: Rework generating errno.h
We only need to give to gawk the headers that actually define error numbers, so let's rather filter out the other included headers early.
Diffstat (limited to 'sysdeps/mach/hurd')
-rw-r--r--sysdeps/mach/hurd/Makefile30
-rw-r--r--sysdeps/mach/hurd/bits/errno.h24
-rw-r--r--sysdeps/mach/hurd/errnos.awk6
3 files changed, 19 insertions, 41 deletions
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 5bc682a397..029dac4bc7 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -66,26 +66,32 @@ errno.texinfo = $(..)manual/errno.texi
hurd = $(..)sysdeps/mach/hurd
-define mach-errno-h
-($(foreach h,mach/message.h \
+mach-errno-h = \
+ mach/message.h \
mach/kern_return.h \
mach/mig_errors.h \
- device/device_types.h,\
- echo '#include <$h>';\
- ))
-endef
+ device/device_types.h
# We use the compiler to generate a list of absolute file names for
# the headers we want to search for Mach error codes, listed above (and
# incidentally, all other headers those include).
-include $(common-objpfx)errnos.d
$(common-objpfx)errnos.d: $(mach-errnos-deps)
- $(mach-errno-h) | \
- $(CC) $(CFLAGS) \
- $(subst -include $(common-objpfx)libc-modules.h,,$(CPPFLAGS)) \
- -M -x c - | \
- sed $(sed-remove-objpfx) -e 's,- *:,mach-errnos-deps :=,' \
- -e 's, \.\./, $(..),g' > $@t
+ echo -n "mach-errnos-deps := " > $@t
+ for h in $(mach-errno-h) ; do \
+ echo "#include <$$h>" \
+ | $(CC) $(CFLAGS) \
+ $(subst -include $(common-objpfx)libc-modules.h,,$(CPPFLAGS)) \
+ -M -x c - \
+ | sed $(sed-remove-objpfx) \
+ -e 's, \.\./, $(..),g' \
+ -e 's,\\$$,,g' \
+ -e 's, ,\n,g' \
+ | grep "$$h$$" \
+ | tr '\n' ' ' \
+ >> $@t ; \
+ done
+ echo >> $@t
mv -f $@t $@
$(hurd)/bits/errno.h: $(common-objpfx)stamp-errnos ;
diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index a0794f96aa..3b54f5855e 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -1,33 +1,9 @@
/* This file generated by errnos.awk from
errno.texi
- stdc-predef.h
- libc-symbols.h
mach/message.h
mach/kern_return.h
- mach/port.h
- mach/boolean.h
- stdint.h
- ../stdlib/stdint.h
- ../bits/libc-header-start.h
- features.h
- features-time64.h
- ../sysdeps/generic/features-time64.h
- sys/cdefs.h
- ../misc/sys/cdefs.h
- ../sysdeps/x86/bits/wordsize.h
- ../sysdeps/ieee754/ldbl-96/bits/long-double.h
- gnu/stubs.h
- bits/types.h
- ../posix/bits/types.h
- ../sysdeps/mach/hurd/bits/timesize.h
- ../sysdeps/mach/hurd/bits/typesizes.h
- ../bits/time64.h
- ../bits/wchar.h
- ../bits/stdint-intn.h
- ../bits/stdint-uintn.h
mach/mig_errors.h
device/device_types.h
- mach/std_types.h
Do not edit this file; edit errnos.awk and regenerate it. */
#ifndef _BITS_ERRNO_H
diff --git a/sysdeps/mach/hurd/errnos.awk b/sysdeps/mach/hurd/errnos.awk
index b9f717c1af..507e9d26ff 100644
--- a/sysdeps/mach/hurd/errnos.awk
+++ b/sysdeps/mach/hurd/errnos.awk
@@ -23,12 +23,8 @@ BEGIN {
for (i = 1; i < ARGC; i++)
{
arg = ARGV[i];
- sub(/.*(manual|include)\//, "", arg);
+ sub(/.*(manual|include|-gnu)\//, "", arg);
if (arg ~ /.*errnos.d/) continue;
- # Those not not actually define anything for errno.h
- if (arg ~ /mach\/.*\/kern_return.h/) continue;
- if (arg ~ /mach\/.*\/boolean.h/) continue;
- if (arg ~ /mach\/.*\/vm_types.h/) continue;
print " " arg;
}
print " Do not edit this file; edit errnos.awk and regenerate it. */";