]>
Commit | Line | Data |
---|---|---|
1 | # | |
2 | # Makefile Makefile for the systemV init suite. | |
3 | # Targets: all compiles everything | |
4 | # install installs the binaries (not the scripts) | |
5 | # clean cleans up object files | |
6 | # clobber really cleans up | |
7 | # | |
8 | # Version: @(#)Makefile 2.85-13 23-Mar-2004 miquels@cistron.nl | |
9 | # | |
10 | ||
11 | CPPFLAGS = | |
12 | CFLAGS ?= -ansi -O2 -fomit-frame-pointer | |
13 | override CFLAGS += -W -Wall -D_GNU_SOURCE | |
14 | STATIC = | |
15 | ||
16 | # For some known distributions we do not build all programs, otherwise we do. | |
17 | BIN = | |
18 | SBIN = init halt shutdown runlevel killall5 fstab-decode | |
19 | USRBIN = last mesg | |
20 | ||
21 | MAN1 = last.1 lastb.1 mesg.1 | |
22 | MAN5 = initscript.5 inittab.5 | |
23 | MAN8 = halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8 | |
24 | MAN8 += shutdown.8 telinit.8 fstab-decode.8 | |
25 | ||
26 | ifeq ($(DISTRO),) | |
27 | BIN += mountpoint | |
28 | SBIN += sulogin bootlogd | |
29 | USRBIN += utmpdump wall | |
30 | MAN1 += utmpdump.1 mountpoint.1 wall.1 | |
31 | MAN8 += sulogin.8 bootlogd.8 | |
32 | endif | |
33 | ||
34 | ifeq ($(DISTRO),Debian) | |
35 | CPPFLAGS+= -DACCTON_OFF | |
36 | BIN += mountpoint | |
37 | SBIN += sulogin bootlogd | |
38 | MAN1 += mountpoint.1 | |
39 | MAN8 += sulogin.8 bootlogd.8 | |
40 | endif | |
41 | ||
42 | ifeq ($(DISTRO),Owl) | |
43 | USRBIN += wall | |
44 | MAN1 += wall.1 | |
45 | endif | |
46 | ||
47 | ifeq ($(DISTRO),SuSE) | |
48 | CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE | |
49 | BIN += mountpoint | |
50 | SBIN += sulogin | |
51 | USRBIN += utmpdump | |
52 | MAN1 += utmpdump.1 mountpoint.1 | |
53 | MAN8 += sulogin.8 | |
54 | endif | |
55 | ||
56 | ID = $(shell id -u) | |
57 | BIN_OWNER = root | |
58 | BIN_GROUP = root | |
59 | BIN_COMBO = $(BIN_OWNER):$(BIN_GROUP) | |
60 | ifeq ($(ID),0) | |
61 | INSTALL_EXEC = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 755 | |
62 | INSTALL_DATA = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 644 | |
63 | else | |
64 | INSTALL_EXEC = install -m 755 | |
65 | INSTALL_DATA = install -m 644 | |
66 | endif | |
67 | INSTALL_DIR = install -m 755 -d | |
68 | MANDIR = /usr/share/man | |
69 | ||
70 | ifeq ($(WITH_SELINUX),yes) | |
71 | SELINUX_DEF = -DWITH_SELINUX | |
72 | INITLIBS += -lsepol -lselinux | |
73 | SULOGINLIBS = -lselinux | |
74 | else | |
75 | SELINUX_DEF = | |
76 | INITLIBS = | |
77 | SULOGINLIBS = | |
78 | endif | |
79 | ||
80 | # Additional libs for GNU libc. | |
81 | ifneq ($(wildcard /usr/lib*/libcrypt.a),) | |
82 | SULOGINLIBS += -lcrypt | |
83 | endif | |
84 | ||
85 | all: $(BIN) $(SBIN) $(USRBIN) | |
86 | ||
87 | #%: %.o | |
88 | # $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) | |
89 | #%.o: %.c | |
90 | # $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@ | |
91 | ||
92 | init: LDLIBS += $(INITLIBS) $(STATIC) | |
93 | init: init.o init_utmp.o | |
94 | ||
95 | halt: halt.o ifdown.o hddown.o utmp.o reboot.h | |
96 | ||
97 | last: last.o oldutmp.h | |
98 | ||
99 | mesg: mesg.o | |
100 | ||
101 | mountpoint: mountpoint.o | |
102 | ||
103 | utmpdump: utmpdump.o | |
104 | ||
105 | runlevel: runlevel.o | |
106 | ||
107 | sulogin: LDLIBS += $(SULOGINLIBS) $(STATIC) | |
108 | sulogin: sulogin.o | |
109 | ||
110 | wall: dowall.o wall.o | |
111 | ||
112 | shutdown: dowall.o shutdown.o utmp.o reboot.h | |
113 | ||
114 | bootlogd: LDLIBS += -lutil | |
115 | bootlogd: bootlogd.o | |
116 | ||
117 | sulogin.o: CPPFLAGS += $(SELINUX_DEF) | |
118 | sulogin.o: sulogin.c | |
119 | ||
120 | init.o: CPPFLAGS += $(SELINUX_DEF) | |
121 | init.o: init.c init.h set.h reboot.h initreq.h | |
122 | ||
123 | utmp.o: utmp.c init.h | |
124 | ||
125 | init_utmp.o: CPPFLAGS += -DINIT_MAIN | |
126 | init_utmp.o: utmp.c init.h | |
127 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< | |
128 | ||
129 | cleanobjs: | |
130 | rm -f *.o *.bak | |
131 | ||
132 | clean: cleanobjs | |
133 | @echo Type \"make clobber\" to really clean up. | |
134 | ||
135 | clobber: cleanobjs | |
136 | rm -f $(BIN) $(SBIN) $(USRBIN) | |
137 | ||
138 | distclean: clobber | |
139 | ||
140 | install: | |
141 | $(INSTALL_DIR) $(ROOT)/bin/ $(ROOT)/sbin/ | |
142 | $(INSTALL_DIR) $(ROOT)/usr/bin/ | |
143 | for i in $(BIN); do \ | |
144 | $(INSTALL_EXEC) $$i $(ROOT)/bin/ ; \ | |
145 | done | |
146 | for i in $(SBIN); do \ | |
147 | $(INSTALL_EXEC) $$i $(ROOT)/sbin/ ; \ | |
148 | done | |
149 | for i in $(USRBIN); do \ | |
150 | $(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \ | |
151 | done | |
152 | # $(INSTALL_DIR) $(ROOT)/etc/ | |
153 | # $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/ | |
154 | ln -sf halt $(ROOT)/sbin/reboot | |
155 | ln -sf halt $(ROOT)/sbin/poweroff | |
156 | ln -sf init $(ROOT)/sbin/telinit | |
157 | ln -sf /sbin/killall5 $(ROOT)/bin/pidof | |
158 | if [ ! -f $(ROOT)/usr/bin/lastb ]; then \ | |
159 | ln -sf last $(ROOT)/usr/bin/lastb; \ | |
160 | fi | |
161 | $(INSTALL_DIR) $(ROOT)/usr/include/ | |
162 | $(INSTALL_DATA) initreq.h $(ROOT)/usr/include/ | |
163 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man1/ | |
164 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man5/ | |
165 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man8/ | |
166 | for i in $(MAN1); do \ | |
167 | $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man1/; \ | |
168 | done | |
169 | for i in $(MAN5); do \ | |
170 | $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \ | |
171 | done | |
172 | for i in $(MAN8); do \ | |
173 | $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \ | |
174 | done | |
175 | ifeq ($(ROOT),) | |
176 | # | |
177 | # This part is skipped on Debian systems, the | |
178 | # debian.preinst script takes care of it. | |
179 | @if [ ! -p /dev/initctl ]; then \ | |
180 | echo "Creating /dev/initctl"; \ | |
181 | rm -f /dev/initctl; \ | |
182 | mknod -m 600 /dev/initctl p; fi | |
183 | endif |