summaryrefslogtreecommitdiff
path: root/proc/Makefile
blob: 09199465208e3f324cc50544ecabebd3782aecc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
# This file is part of the GNU Hurd.
# 
# The GNU Hurd is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# The GNU Hurd 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 General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with the GNU Hurd; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

dir := proc

include ../Makeconf

PROCMIGOPTS="-DPROCESS_INTRAN=pstruct_t reqport_find (process_t)" \
	"-DPROCESS_IMPORTS=import \"proc.h\";" \
	"-DSERVERPREFIX=S_"

OBJS = wait.o hash.o host.o info.o main.o mgt.o	notify.o pgrp.o msg.o \
	primes.o cpu-types.o stubs.o \
	processServer.o notifyServer.o process_replyUser.o msgUser.o \
	interruptServer.o proc_excUser.o proc_excServer.o proc_excreplUser.o \
	proc_excreplServer.o

SRCS = wait.c hash.c host.c info.c main.c mgt.c	notify.c pgrp.c msg.c \
       primes.c cpu-types.c stubs.c
TAGSHDRS = proc.h
TAGSLIBS = libthreads

DIST_FILES = $(SRCS) proc.h Makefile proc_exc.defs proc_excrepl.defs \
		ChangeLog

LIBS = $(libthreads)

all: proc

proc: $(OBJS) $(LIBS)
	$(CC) $(CFLAGS) -o $@ $^

install: proc $(hurdroot)
	$(INSTALL_BIN) proc $(hurdroot)/hurd/proc

$(OBJS): proc.h proc_S.h
notify.o: notify_S.h
wait.o: process_reply.h msg.h interrupt_S.h
mgt.o: proc_exc_S.h proc_exc.h proc_excrepl.h proc_excrepl_S.h

proc_S.h processServer.c: $(includedir)/hurd/process.defs $(includedir)/hurd/hurd_types.defs
	$(CPP) $(CPPFLAGS) $(PROCMIGOPTS) $(includedir)/hurd/process.defs \
	| $(MIGCOM) -sheader proc_S.h -user /dev/null -header /dev/null

process_reply.h process_replyUser.c: $(includedir)/hurd/process_reply.defs $(hurd/hurd_types.defs)
	$(CPP) $(CPPFLAGS) $(includedir)/hurd/process_reply.defs \
	| $(MIGCOM) -server /dev/null

interrupt_S.h interruptServer.c: $(includedir)/hurd/interrupt.defs
	$(CPP) $(CPPFLAGS) $(PROCMIGOPTS) $(includedir)/hurd/interrupt.defs \
	| $(MIGCOM) -sheader interrupt_S.h -user /dev/null -header /dev/null

notify_S.h notifyServer.c:
	$(CPP) $(CPPFLAGS) $(includedir)/mach/notify.defs \
	 | $(MIGCOM) -sheader notify_S.h -header /dev/null -user /dev/null

proc_exc_S.h proc_excUser.c proc_excServer.c proc_exc.h: proc_exc.defs
	$(CPP) $(CPPFLAGS) proc_exc.defs \
	| $(MIGCOM) -sheader proc_exc_S.h

proc_excrepl_S.h proc_excreplUser.c proc_excreplServer.c proc_excrepl.h: proc_excrepl.defs
	$(CPP) $(CPPFLAGS) proc_excrepl.defs \
	| $(MIGCOM) -sheader proc_excrepl_S.h


# The reason for -Dout= is to prevent errors for get_init_port,
# get_init_ports, get_init_int, get_init_ints, get_dtable, and get_fd.
# We don't use those, so we're safe in breaking them.
# 
# The first sed command inserts timeout argments for each of the RPCs.
# The second sed command fixes the prototypes in msg.h to correspond.
msg.h msgUser.c: $(includedir)/hurd/msg.defs $(includedir)/hurd/hurd_types.defs
	$(CPP) $(CPPFLAGS) -Droutine=simpleroutine -Dout= $(includedir)/hurd/msg.defs \
	| $(MIGCOM) -prefix nowait_ -server /dev/null -user msgUser.c -header msg.h


#	sed	-e 's/process,/process,int timeout,/' \
#		-e 's/MACH_MSG_OPTION_NONE/MACH_SEND_TIMEOUT/' \
#		-e 's/MACH_MSG_TIMEOUT_NONE/timeout/' \
#		< msgUser.c > msgUser.c.temp
#	mv msgUser.c.temp msgUser.c
#	sed -e 's/process,/process,int timeout,/' < msg.h > msg.h.temp
#	mv msg.h.temp msg.h

clean:
	rm -f *.o *Server.c *_S.h *User.c proc process_reply.h \
		msg.h proc_exc.h proc_excrepl.h
relink:
	rm -f proc