Formerly ../hurd/hurdkill.c.~5~
[kopensolaris-gnu/glibc.git] / hurd / Makefile
1 # Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
3
4 # The GNU C Library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Library General Public License
6 # as published by the Free Software Foundation; either version 2 of
7 # the License, or (at your option) any later version.
8
9 # The GNU C Library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Library General Public License for more details.
13
14 # You should have received a copy of the GNU Library General Public
15 # License along with the GNU C Library; see the file COPYING.LIB.  If
16 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 # Cambridge, MA 02139, USA.
18
19 subdir := hurd
20
21 all:
22
23 # Some things below (but before including Rules) use configuration variables.
24 include ../Makeconfig
25
26
27 headers = hurd.h $(interface-headers) \
28           $(addprefix hurd/,fd.h id.h port.h signal.h userlink.h \
29                             resource.h threadvar.h)
30
31 distribute := intr_rpc.awk hurdintr.awk
32
33 # The RPC interfaces go in a separate library.
34 interface-library := libhurduser.a
35 user-interfaces         := $(addprefix hurd/,\
36                                        auth process startup \
37                                        msg msg_reply msg_request \
38                                        exec core interrupt \
39                                        fs fsys io term socket )
40 server-interfaces       := hurd/msg
41
42 routines = hurdinit hurdid hurdpath hurdpid hurdrlimit hurdexec \
43            __setauth setauth \
44            __pid2task __task2pid pid2task task2pid \
45            getuids setuids getumask fchroot \
46            hurdsock hurdauth \
47            privports \
48            msgportdemux \
49            fopenport __fopenport \
50            vpprintf \
51            ports-get ports-set hurdports hurdmsg \
52            $(sig) $(dtable) hurdinline
53 sig     = hurdsig siginfo init-fault msging-p hurd-raise preempt-sig \
54           trampoline longjmp-ctx longjmp-ts catch-exc exc2signal hurdkill
55 dtable  = dtable port2fd new-fd alloc-fd intern-fd \
56           __getdport getdport openport \
57           fd-close fd-read fd-write hurdioctl
58 aux := hurdsyms
59
60 # XXX this is a temporary hack; see hurdmalloc.h
61 routines += hurdmalloc
62 distribute += hurdmalloc.h
63 \f
64 # Get the proper definition of `hurd-srcdir'.
65 include ../sysdeps/mach/hurd/Makefile
66
67 # Use and install the Hurd header files directly out of the Hurd source.
68
69 # Find the MiG defs files in the Hurd source.
70 vpath %.defs $(hurd-srcdir)
71
72 # Install all .h and .defs files we find in the Hurd's hurd/ directory.
73 hurd-headers := $(patsubst $(hurd-srcdir)/%,%,\
74                            $(wildcard $(addprefix $(hurd-srcdir)/hurd/,\
75                                                   *.defs *.h)))
76
77
78 # Don't distribute the Hurd headers; they are in the Hurd distribution.
79 dont_distribute = $(hurd-headers)
80
81 # DO NOT try to remake these in any way!!!
82 $(addprefix $(hurd-srcdir)/,$(hurd-headers)) : ;
83 install-others += $(addprefix $(includedir)/,$(hurd-headers))
84 $(includedir)/hurd/%: $(hurd-srcdir)/hurd/%; $(do-install)
85 \f
86 # Insert comment here.
87
88 ifdef intrhack # XXX
89
90 # RPC_%_rpc.c is made with mig by Machrules.  RPC_%.c is the stub function
91 # we will actually compile: it is just the same, but passes option bits to
92 # mach_msg to notice interrupts.
93 $(intr-calls:%=$(objpfx)RPC_%.c): %.c: %_rpc.c
94         sed s/MACH_MSG_OPTION_NONE/MACH_SEND_INTERRUPT|MACH_RCV_INTERRUPT/ \
95             $< > $@-new
96         mv -f $@-new $@
97 generated += $(intr-calls:%=RPC_%.c)
98
99 # __%.c defines the user-callable function for the stub: this is a wrapper
100 # which calls __%_rpc inside HURD_EINTR_RPC.
101 $(intr-calls:%=$(objpfx)__%.c): $(objpfx)__%.c: intr_rpc.awk \
102                                                 $(objpfx)RPC_%_rpc.c
103         gawk -v call=__$* -v rpc=__$*_rpc -f $^ > $@-new
104         mv -f $@-new $@
105 generated += $(intr-calls:%=__%.c)
106
107 # %.c defines an alias % for __%.
108 $(intr-calls:$(objpfx)%.c): $(objpfx)%.c:
109         (echo '#include <gnu-stabs.h>';\
110          echo 'symbol_alias (__$*, $*);') > $@-new
111         mv -f $@-new $@
112 generated += $(intr-calls:%=%.c)
113
114 ifdef user-interfaces
115 include $(objpfx)hurdintr
116 endif
117 $(objpfx)hurdintr: hurdintr.awk $(user-interfaces:%=%.defs)
118         awk -f $^ varname=intr-calls > $@-new
119         mv $@-new $@
120 generated += hurdintr
121
122 # Make the INTR user stubs be defined as CALL_rpc.
123 migdefines += $(foreach call,$(intr-calls),-D$(call)=$(call)_rpc)
124
125 # Machrules has put in routines for RPC_%_rpc and %_rpc.
126 # We need RPC_%, __%, and %.
127 interface-routines := $(filter-out $(intr-calls:%=RPC_%_rpc)\
128                                    $(intr-calls:%=%_rpc),\
129                                    $(interface-routines)) \
130                       $(foreach c,$(intr-calls),RPC_$c __$c $c)
131
132 endif
133 \f
134 include ../mach/Machrules
135 include ../Rules