summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-05-12 16:38:08 +0000
committerRoland McGrath <roland@gnu.org>1996-05-12 16:38:08 +0000
commitaa1075ea2f140dc7b2eec04199935b47111229db (patch)
tree30f0fe1cd77a1e4bcd999dff97eb61e4fc11166b /sysdeps
parentd617ac4ee5563f36c6046729b324f78562b0f1e7 (diff)
Sun May 12 11:16:58 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* mach/Machrules (%.udeps rule): Write deps for %_server.[ch] too. (%_server.[ch] rule): Don't depend on %.defs; use #include to get installed .defs file. * stdio-common/vfprintf.c (flockfile, funlockfile): Define to nothing for stdio. Fix fUNlockfile -> funlockfile for libio. * stdio-common/vfscanf.c: Likewise. Sat May 11 13:43:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * hurd/hurdfault.c: Include faultexc_server.h instead of faultexc.h. * mach/Machrules (%.ir rule): Don't produce deps for imports. * elf/dl-fini.c (_dl_fini): Clear L->l_init_called after calling fn. * Makerules (install): Depend on $(slibdir)/libc.so$(libc.so-version). [!subdir] ($(libdir)/libc.so, $(common-objpfx)/libc-syms.so): Protect these targets and install dep on $(libdir)/libc.so with this. * hurd/Makefile: Removed all rules and defns for using code from Hurd sources and installing headers from there. * sysdeps/mach/hurd/errnos.awk: Set in_mach_errors to FILENAME when we set it. In Mach error matching clause, only match if FILENAME is still the same value. * sysdeps/mach/hurd/Makefile: Don't include sysdeps/mach/Makefile; $(mach-srcdir) no longer exists. (hurd-srcdir): Variable removed. (includes): Don't append -I$(hurd-srcdir). (last-includes): Variable removed. Remove vpath specs using $(hurd-srcdir). (mach-errno-h): New canned sequence. ($(common-objpfx)errnos.d): New target, generated included makefile to determine absolute file names of Mach headers to search for error codes and set variable mach-errnos-deps. ($(common-objpfx)stamp-errnos): Depend on $(mach-errnos-deps) instead of prior explicit list. (generated): Add errnos.d, stamp-errnos. * mach/Machrules (some-if-rtn): New variable and target; compute deps of some if routine and make all if routines depend on that .d file instead of static list of .h files. * mach/Makefile (mach/mach_interface.defs, mach/memory_object_user.defs): Targets removed. ($(objpfx)mach-syscalls.mk): Tweak this kludge so it doesn't depend directly on Mach sources. * sysdeps/mach/Makefile (mach-srcdir): Variable removed. (includes): Don't append -I$(mach-srcdir). Remove vpath specs using $(mach-srcdir). * hurd/Makefile (server-interfaces): Add faultexc. (sig): Remove it from here. (fault%.[ch]): Rule removed. (MIGFLAGS-faultexc): New variable. * hurd/faultexc.defs: New file. * mach/Machrules (%.ustamp rule): Pass $(MIGFLAGS-$*) to mig. (%_server.[ch] rule): Likewise. * mach/Makefile: Removed all rules and defns for using code from Mach sources and installing headers from there. * Makeconfig [$(build-shared)=yes] (link-libc): Append $(libc.so-version) to libc.so. * mach/Machrules (%.ustamp rule): Don't depend on %.defs. (%.udeps): New rule parallel to that one, generating included makefiles with -M output from `#include <%.defs>'. * Makerules (sed-remove-objpfx): Remove space before \ at eol.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/mach/Makefile29
-rw-r--r--sysdeps/mach/hurd/Makefile71
-rw-r--r--sysdeps/mach/hurd/errnos.awk12
3 files changed, 32 insertions, 80 deletions
diff --git a/sysdeps/mach/Makefile b/sysdeps/mach/Makefile
index fab174c0d6..a179b1f83e 100644
--- a/sysdeps/mach/Makefile
+++ b/sysdeps/mach/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+# Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@@ -16,38 +16,11 @@
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
-ifndef mach-srcdir-computed
-mach-srcdir-computed := yes
-
-# If we were configured with `--with-mach=DIR', then config.make sets
-# mach-srcdir to DIR. Otherwise guess we are in a big source tree.
-ifndef mach-srcdir
-mach-srcdir = ../mach
-endif
-
-# mach-srcdir is now set to the logical directory name. This name might be
-# relative to $(objdir), might be relative to the source directory $(..), or
-# might be absolute. We choose among these possibilities by looking for a
-# canonical file in each of those places (in that order).
-f := mach/mach.defs # Random file that identifies the Mach source dir.
-f := $(strip $f)
-mach-srcdir := $(firstword $(patsubst %/$f,%,$(wildcard $(addsuffix /$f,\
- $(objpfx)$(mach-srcdir) $(..)$(mach-srcdir)))) $(mach-srcdir))
-
-endif # ! mach-srcdir-computed
-
ifdef in-Makerules
# Look for header files in mach/ under the top-level library source directory.
includes += -I$(..)mach
-# When compiling, use the Mach header files directly from the kernel sources.
-includes += -I$(mach-srcdir)
-
-# Find Mach header files in the kernel source.
-vpath mach/%.h $(mach-srcdir)
-vpath device/%.h $(mach-srcdir)
-
ifneq (mach,$(subdir))
# Subdirectories other than mach/ might use the generated Mach headers.
# So make sure we get a chance to run in mach/ to make them before all else.
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 462eb23b0e..14dc1ebc83 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -16,33 +16,6 @@
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
-# Get mach-srcdir defined.
-old-in-Makerules := $(in-Makerules)
-in-Makerules :=
-include $(..)sysdeps/mach/Makefile
-in-Makerules := $(old-in-Makerules)
-
-
-ifndef hurd-srcdir-computed
-hurd-srcdir-computed := yes
-
-# If we were configured with `--with-hurd=DIR', then config.make sets
-# hurd-srcdir to DIR. Otherwise guess we are in a big source tree.
-ifndef hurd-srcdir
-hurd-srcdir = ../hurd
-endif
-
-# hurd-srcdir is now set to the logical directory name. This name might be
-# relative to $(objdir), might be relative to the source directory $(..), or
-# might be absolute. We choose among these possibilities by looking for a
-# canonical file in each of those places (in that order).
-f := hurd/hurd_types.defs # Random file that identifies the Hurd source dir.
-f := $(strip $f)
-hurd-srcdir := $(firstword $(patsubst %/$f,%,$(wildcard $(addsuffix /$f,\
- $(objpfx)$(hurd-srcdir) $(..)$(hurd-srcdir)))) $(hurd-srcdir))
-
-endif # ! hurd-srcdir-computed
-
ifdef in-Makerules
subdirs := $(filter-out sunrpc,$(subdirs)) # XXX skip broken dirs
@@ -50,17 +23,6 @@ subdirs := $(filter-out sunrpc,$(subdirs)) # XXX skip broken dirs
# Look for header files in hurd/ under the top-level library source directory.
includes += -I$(..)hurd
-# When compiling, use the Hurd header files directly from the sources.
-includes += -I$(hurd-srcdir)
-
-# When compiling, find cthreads.h in the Hurd cthreads source.
-# This directory has some other (private) header file with
-# conflicting names, so we put it last.
-last-includes += -I$(hurd-srcdir)/libthreads
-
-# Find the Hurd header files in the Hurd source.
-vpath hurd/%.h $(hurd-srcdir)
-
# Do not use any assembly code from sysdeps/unix (and subdirectories).
# This bypasses all the system call stubs and uses any existing posix or
# generic C files instead.
@@ -98,19 +60,36 @@ errno.texinfo = $(..)manual/errno.texi
hurd = $(..)sysdeps/mach/hurd
-$(hurd)/errnos.h: $(objpfx)stamp-errnos ;
-$(objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \
- $(mach-srcdir)/mach/message.h \
- $(mach-srcdir)/mach/kern_return.h \
- $(mach-srcdir)/mach/mig_errors.h \
- $(mach-srcdir)/device/device_types.h
+define mach-errno-h
+($(foreach h,mach/message.h \
+ mach/kern_return.h \
+ mach/mig_errors.h \
+ device/device_types.h,\
+ echo '#include <$h>';\
+ ))
+endef
+
+# 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) $(CPPFLAGS) -M -x c - | \
+ sed -e 's,- *:,mach-errnos-deps :=,' > $@t
+ mv -f $@t $@
+
+$(hurd)/errnos.h: $(common-objpfx)stamp-errnos ;
+$(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \
+ $(mach-errnos-deps)
gawk -f $^ > $(hurd)/errnos.h-tmp
# Make it unwritable so noone will edit it by mistake.
-chmod a-w $(hurd)/errnos.h-tmp
./$(..)move-if-change $(hurd)/errnos.h-tmp $(hurd)/errnos.h
- test ! -d CVS || \
- (cd $(hurd); cvs commit -m'Regenerated from $^' errnos.h)
+# test ! -d CVS || \
+# (cd $(hurd); cvs commit -m'Regenerated from $^' errnos.h)
touch $@
+generated += errnos.d stamp-errnos
$(hurd)/errlist.c: $(hurd)/errlist.awk $(errno.texinfo)
gawk -f $^ > $@-tmp
diff --git a/sysdeps/mach/hurd/errnos.awk b/sysdeps/mach/hurd/errnos.awk
index e3ff7a843b..24a01ba935 100644
--- a/sysdeps/mach/hurd/errnos.awk
+++ b/sysdeps/mach/hurd/errnos.awk
@@ -34,7 +34,7 @@ BEGIN {
print "enum __error_t_codes\n{";
errnoh = 0;
maxerrno = 0;
- in_mach_errors = 0;
+ in_mach_errors = "";
in_math = 0;
edom = erange = "";
print "#undef EDOM\n#undef ERANGE";
@@ -76,22 +76,22 @@ errnoh == 3 && $1 == "@comment" && $2 == "errno" {
NF == 3 && $1 == "#define" && $2 == "MACH_SEND_IN_PROGRESS" \
{
- in_mach_errors = 1;
+ in_mach_errors = FILENAME;
print "\n\t/* Errors from <mach/message.h>. */";
}
NF == 3 && $1 == "#define" && $2 == "KERN_SUCCESS" \
{
- in_mach_errors = 1;
+ in_mach_errors = FILENAME;
print "\n\t/* Errors from <mach/kern_return.h>. */";
next;
}
-in_mach_errors && $2 == "MACH_IPC_COMPAT" \
+in_mach_errors != "" && $2 == "MACH_IPC_COMPAT" \
{
- in_mach_errors = 0;
+ in_mach_errors = "";
}
-in_mach_errors == 1 && NF == 3 && $1 == "#define" \
+in_mach_errors == FILENAME && NF == 3 && $1 == "#define" \
{
printf "\t%-32s= %s,\n", "E" $2, $3;
}