]>
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 -fstack-protector | |
13 | override CFLAGS += -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE | |
14 | STATIC = | |
15 | MANDB := s@^\('\\\\\"\)[^\*-]*-\*- coding: [^[:blank:]]\+ -\*-@\1@ | |
16 | ||
17 | # | |
18 | # Leave empty if the mountpoint(1) command from util-linux 2.20 | |
19 | # and above should be used, otherwise set it to yes. | |
20 | # | |
21 | MNTPOINT= | |
22 | ||
23 | # For some known distributions we do not build all programs, otherwise we do. | |
24 | BIN = | |
25 | SBIN = init halt shutdown runlevel killall5 fstab-decode | |
26 | USRBIN = last mesg | |
27 | ||
28 | MAN1 = last.1 lastb.1 mesg.1 | |
29 | MAN5 = initscript.5 inittab.5 | |
30 | MAN8 = halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8 | |
31 | MAN8 += shutdown.8 telinit.8 fstab-decode.8 | |
32 | ||
33 | ifeq ($(DISTRO),) | |
34 | SBIN += sulogin bootlogd | |
35 | USRBIN += utmpdump wall | |
36 | MAN1 += utmpdump.1 wall.1 | |
37 | MAN8 += sulogin.8 bootlogd.8 | |
38 | endif | |
39 | ||
40 | ifeq ($(DISTRO),Debian) | |
41 | CPPFLAGS+= -DACCTON_OFF | |
42 | SBIN += sulogin bootlogd | |
43 | MAN8 += sulogin.8 bootlogd.8 | |
44 | MANDB := | |
45 | endif | |
46 | ||
47 | ifeq ($(DISTRO),Owl) | |
48 | USRBIN += wall | |
49 | MAN1 += wall.1 | |
50 | MANDB := | |
51 | endif | |
52 | ||
53 | ifeq ($(DISTRO),SuSE) | |
54 | CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE | |
55 | SBIN += sulogin | |
56 | USRBIN += utmpdump | |
57 | MAN1 += utmpdump.1 | |
58 | MAN8 += sulogin.8 | |
59 | MANDB := | |
60 | endif | |
61 | ||
62 | ifeq ($(MNTPOINT),yes) | |
63 | BIN += mountpoint | |
64 | MAN1 += mountpoint.1 | |
65 | endif | |
66 | ||
67 | ID = $(shell id -u) | |
68 | BIN_OWNER = root | |
69 | BIN_GROUP = root | |
70 | BIN_COMBO = $(BIN_OWNER):$(BIN_GROUP) | |
71 | ifeq ($(ID),0) | |
72 | INSTALL_EXEC = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 755 | |
73 | INSTALL_DATA = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 644 | |
74 | else | |
75 | INSTALL_EXEC = install -m 755 | |
76 | INSTALL_DATA = install -m 644 | |
77 | endif | |
78 | INSTALL_DIR = install -m 755 -d | |
79 | MANDIR = /usr/share/man | |
80 | ||
81 | ifeq ($(WITH_SELINUX),yes) | |
82 | SELINUX_DEF = -DWITH_SELINUX | |
83 | INITLIBS += -lsepol -lselinux | |
84 | SULOGINLIBS = -lselinux | |
85 | else | |
86 | SELINUX_DEF = | |
87 | INITLIBS = | |
88 | SULOGINLIBS = | |
89 | endif | |
90 | ||
91 | # Additional libs for GNU libc. | |
92 | ifneq ($(wildcard /usr/lib*/libcrypt.*),) | |
93 | SULOGINLIBS += -lcrypt | |
94 | endif | |
95 | ||
96 | # Additional libs for GNU libc / multiarch on Debian based systems. | |
97 | ifneq ($(wildcard /usr/lib/*/libcrypt.*),) | |
98 | SULOGINLIBS += -lcrypt | |
99 | endif | |
100 | ||
101 | all: $(BIN) $(SBIN) $(USRBIN) | |
102 | ||
103 | #%: %.o | |
104 | # $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) | |
105 | #%.o: %.c | |
106 | # $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@ | |
107 | ||
108 | init: LDLIBS += $(INITLIBS) $(STATIC) | |
109 | init: init.o init_utmp.o | |
110 | ||
111 | halt: LDLIBS += $(STATIC) | |
112 | halt: halt.o ifdown.o hddown.o utmp.o | |
113 | ||
114 | last: LDLIBS += $(STATIC) | |
115 | last: last.o | |
116 | ||
117 | mesg: LDLIBS += $(STATIC) | |
118 | mesg: mesg.o | |
119 | ||
120 | mountpoint: LDLIBS += $(STATIC) | |
121 | mountpoint: mountpoint.o | |
122 | ||
123 | utmpdump: LDLIBS += $(STATIC) | |
124 | utmpdump: utmpdump.o | |
125 | ||
126 | runlevel: LDLIBS += $(STATIC) | |
127 | runlevel: runlevel.o | |
128 | ||
129 | sulogin: LDLIBS += $(SULOGINLIBS) $(STATIC) | |
130 | sulogin: sulogin.o consoles.o | |
131 | ||
132 | wall: LDLIBS += $(STATIC) | |
133 | wall: dowall.o wall.o | |
134 | ||
135 | shutdown: LDLIBS += $(STATIC) | |
136 | shutdown: dowall.o shutdown.o utmp.o | |
137 | ||
138 | bootlogd: LDLIBS += -lutil $(STATIC) | |
139 | bootlogd: bootlogd.o | |
140 | ||
141 | fstab-decode: LDLIBS += $(STATIC) | |
142 | fstab-decode: fstab-decode.o | |
143 | ||
144 | sulogin.o: CPPFLAGS += $(SELINUX_DEF) | |
145 | sulogin.o: sulogin.c | |
146 | ||
147 | init.o: CPPFLAGS += $(SELINUX_DEF) | |
148 | init.o: init.c init.h initreq.h paths.h reboot.h set.h | |
149 | ||
150 | utmp.o: | |
151 | ||
152 | init_utmp.o: CPPFLAGS += -DINIT_MAIN | |
153 | init_utmp.o: utmp.c init.h initreq.h paths.h | |
154 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< | |
155 | ||
156 | utmpdump.o: utmpdump.c oldutmp.h | |
157 | ||
158 | shutdown.o: shutdown.c paths.h reboot.h initreq.h init.h | |
159 | ||
160 | halt.o: halt.c reboot.h | |
161 | ||
162 | last.o: last.c oldutmp.h | |
163 | ||
164 | consoles.o: consoles.c consoles.h | |
165 | ||
166 | cleanobjs: | |
167 | rm -f *.o *.bak | |
168 | ||
169 | clean: cleanobjs | |
170 | @echo Type \"make clobber\" to really clean up. | |
171 | ||
172 | clobber: cleanobjs | |
173 | rm -f $(BIN) $(SBIN) $(USRBIN) | |
174 | ||
175 | distclean: clobber | |
176 | ||
177 | install: | |
178 | $(INSTALL_DIR) $(ROOT)/bin/ $(ROOT)/sbin/ | |
179 | $(INSTALL_DIR) $(ROOT)/usr/bin/ | |
180 | for i in $(BIN); do \ | |
181 | $(INSTALL_EXEC) $$i $(ROOT)/bin/ ; \ | |
182 | done | |
183 | for i in $(SBIN); do \ | |
184 | $(INSTALL_EXEC) $$i $(ROOT)/sbin/ ; \ | |
185 | done | |
186 | for i in $(USRBIN); do \ | |
187 | $(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \ | |
188 | done | |
189 | # $(INSTALL_DIR) $(ROOT)/etc/ | |
190 | # $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/ | |
191 | ln -sf halt $(ROOT)/sbin/reboot | |
192 | ln -sf halt $(ROOT)/sbin/poweroff | |
193 | ln -sf init $(ROOT)/sbin/telinit | |
194 | ln -sf /sbin/killall5 $(ROOT)/bin/pidof | |
195 | if [ ! -f $(ROOT)/usr/bin/lastb ]; then \ | |
196 | ln -sf last $(ROOT)/usr/bin/lastb; \ | |
197 | fi | |
198 | $(INSTALL_DIR) $(ROOT)/usr/include/ | |
199 | $(INSTALL_DATA) initreq.h $(ROOT)/usr/include/ | |
200 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man1/ | |
201 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man5/ | |
202 | $(INSTALL_DIR) $(ROOT)$(MANDIR)/man8/ | |
203 | for man in $(MAN1); do \ | |
204 | $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man1/; \ | |
205 | sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man1/$$man ; \ | |
206 | done | |
207 | for man in $(MAN5); do \ | |
208 | $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man5/; \ | |
209 | sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man5/$$man ; \ | |
210 | done | |
211 | for man in $(MAN8); do \ | |
212 | $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man8/; \ | |
213 | sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man8/$$man ; \ | |
214 | done | |
215 | ifeq ($(ROOT),) | |
216 | # | |
217 | # This part is skipped on Debian systems, the | |
218 | # debian.preinst script takes care of it. | |
219 | @if [ ! -p /dev/initctl ]; then \ | |
220 | echo "Creating /dev/initctl"; \ | |
221 | rm -f /dev/initctl; \ | |
222 | mknod -m 600 /dev/initctl p; fi | |
223 | endif |