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.
This commit is contained in:
Samuel Thibault 2023-08-06 20:32:46 +00:00
parent 41d8c3bc33
commit 53850f044f
3 changed files with 19 additions and 41 deletions

View file

@ -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 ;

View file

@ -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

View file

@ -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. */";