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
8
# Version: @(#)Makefile 2.85-13 23-Mar-2004 miquels@cistron.nl
12
CFLAGS ?= -ansi -O2 -fomit-frame-pointer
13
override CFLAGS += -W -Wall -D_GNU_SOURCE
16
# For some known distributions we do not build all programs, otherwise we do.
18
SBIN = init halt shutdown runlevel killall5 fstab-decode
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
28
SBIN += sulogin bootlogd
29
USRBIN += utmpdump wall
30
MAN1 += utmpdump.1 mountpoint.1 wall.1
31
MAN8 += sulogin.8 bootlogd.8
34
ifeq ($(DISTRO),Debian)
35
CPPFLAGS+= -DACCTON_OFF
37
SBIN += sulogin bootlogd
39
MAN8 += sulogin.8 bootlogd.8
48
CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE
52
MAN1 += utmpdump.1 mountpoint.1
59
BIN_COMBO = $(BIN_OWNER):$(BIN_GROUP)
61
INSTALL_EXEC = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 755
62
INSTALL_DATA = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 644
64
INSTALL_EXEC = install -m 755
65
INSTALL_DATA = install -m 644
67
INSTALL_DIR = install -m 755 -d
68
MANDIR = /usr/share/man
70
ifeq ($(WITH_SELINUX),yes)
71
SELINUX_DEF = -DWITH_SELINUX
72
INITLIBS += -lsepol -lselinux
73
SULOGINLIBS = -lselinux
80
# Additional libs for GNU libc.
81
ifneq ($(wildcard /usr/lib*/libcrypt.a),)
82
SULOGINLIBS += -lcrypt
85
all: $(BIN) $(SBIN) $(USRBIN)
88
# $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
90
# $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@
92
init: LDLIBS += $(INITLIBS) $(STATIC)
93
init: init.o init_utmp.o
95
halt: halt.o ifdown.o hddown.o utmp.o reboot.h
97
last: last.o oldutmp.h
101
mountpoint: mountpoint.o
107
sulogin: LDLIBS += $(SULOGINLIBS) $(STATIC)
110
wall: dowall.o wall.o
112
shutdown: dowall.o shutdown.o utmp.o reboot.h
114
bootlogd: LDLIBS += -lutil
117
sulogin.o: CPPFLAGS += $(SELINUX_DEF)
120
init.o: CPPFLAGS += $(SELINUX_DEF)
121
init.o: init.c init.h set.h reboot.h initreq.h
123
utmp.o: utmp.c init.h
125
init_utmp.o: CPPFLAGS += -DINIT_MAIN
126
init_utmp.o: utmp.c init.h
127
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
133
@echo Type \"make clobber\" to really clean up.
136
rm -f $(BIN) $(SBIN) $(USRBIN)
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/ ; \
146
for i in $(SBIN); do \
147
$(INSTALL_EXEC) $$i $(ROOT)/sbin/ ; \
149
for i in $(USRBIN); do \
150
$(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \
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; \
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/; \
169
for i in $(MAN5); do \
170
$(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \
172
for i in $(MAN8); do \
173
$(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \
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