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
-W
-Wall
-O2
-fomit-frame-pointer
-D_GNU_SOURCE
16 # For some known distributions we do not build all programs, otherwise we do.
18 SBIN
= init halt shutdown runlevel killall5
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
28 SBIN
+= sulogin bootlogd
29 USRBIN
+= utmpdump wall
30 MAN1
+= mountpoint
.1 wall
.1
31 MAN8
+= sulogin
.8 bootlogd
.8
34 ifeq ($(DISTRO
),Debian
)
36 SBIN
+= sulogin bootlogd
38 MAN8
+= sulogin
.8 bootlogd
.8
48 BIN_COMBO
= $(BIN_OWNER
):$(BIN_GROUP
)
49 STRIP
= strip -s
-R .comment
50 INSTALL_EXEC
= install -o
$(BIN_OWNER
) -g
$(BIN_GROUP
) -m
755
51 INSTALL_DATA
= install -o
$(BIN_OWNER
) -g
$(BIN_GROUP
) -m
644
52 MANDIR
= /usr
/share
/man
54 ifeq ($(WITH_SELINUX
),yes
)
55 SELINUX_DEF
=-DWITH_SELINUX
56 INIT_SELIBS
=-lsepol
-lselinux
57 SULOGIN_SELIBS
=-lselinux
66 # Additional libs for GNU libc.
67 ifneq ($(wildcard /usr
/lib
/libcrypt.a
),)
71 all: $(BIN
) $(SBIN
) $(USRBIN
)
73 init
: init.o init_utmp.o
74 $(CC
) $(LDFLAGS
) $(STATIC
) -o
$@ init.o init_utmp.o
$(INIT_SELIBS
)
76 halt
: halt.o ifdown.o hddown.o utmp.o reboot.h
77 $(CC
) $(LDFLAGS
) -o
$@ halt.o ifdown.o hddown.o utmp.o
79 last
: last.o oldutmp.h
80 $(CC
) $(LDFLAGS
) -o
$@ last.o
83 $(CC
) $(LDFLAGS
) -o
$@ mesg.o
85 mountpoint
: mountpoint.o
86 $(CC
) $(LDFLAGS
) -o
$@ mountpoint.o
89 $(CC
) $(LDFLAGS
) -o
$@ utmpdump.o
92 $(CC
) $(LDFLAGS
) -o
$@ runlevel.o
95 $(CC
) $(LDFLAGS
) $(STATIC
) $(SELINUX_DEF
) -o
$@
$^
$(LCRYPT
) $(SULOGIN_SELIBS
)
98 $(CC
) $(LDFLAGS
) -o
$@ dowall.o wall.o
100 shutdown
: dowall.o shutdown.o utmp.o reboot.h
101 $(CC
) $(LDFLAGS
) -o
$@ dowall.o shutdown.o utmp.o
104 $(CC
) $(LDFLAGS
) -o
$@ bootlogd.o
-lutil
107 $(CC
) -c
$(CFLAGS
) $(SELINUX_DEF
) sulogin.c
109 init.o
: init.c init.h set.h reboot.h initreq.h
110 $(CC
) -c
$(CFLAGS
) $(SELINUX_DEF
) init.c
112 utmp.o
: utmp.c init.h
113 $(CC
) -c
$(CFLAGS
) utmp.c
115 init_utmp.o
: utmp.c init.h
116 $(CC
) -c
$(CFLAGS
) -DINIT_MAIN utmp.c
-o init_utmp.o
122 @echo Type
\"make
clobber\" to really
clean up.
125 rm -f
$(BIN
) $(SBIN
) $(USRBIN
)
130 $(INSTALL_EXEC
) -d
$(ROOT
)/bin
/ $(ROOT
)/sbin
/
131 $(INSTALL_EXEC
) -d
$(ROOT
)/usr
/bin
/
132 for i in
$(BIN
); do \
134 $(INSTALL_EXEC
) $$i $(ROOT
)/bin
/ ; \
136 for i in
$(SBIN
); do \
138 $(INSTALL_EXEC
) $$i $(ROOT
)/sbin
/ ; \
140 for i in
$(USRBIN
); do \
142 $(INSTALL_EXEC
) $$i $(ROOT
)/usr
/bin
/ ; \
144 # $(INSTALL_EXEC) etc/initscript.sample $(ROOT)/etc/
145 ln
-sf halt
$(ROOT
)/sbin
/reboot
146 ln
-sf halt
$(ROOT
)/sbin
/poweroff
147 ln
-sf init
$(ROOT
)/sbin
/telinit
148 ln
-sf
/sbin
/killall5
$(ROOT
)/bin
/pidof
149 if
[ ! -f
$(ROOT
)/usr
/bin
/lastb
]; then \
150 ln
-sf last
$(ROOT
)/usr
/bin
/lastb
; \
152 $(INSTALL_EXEC
) -d
$(ROOT
)/usr
/include/
153 $(INSTALL_DATA
) initreq.h
$(ROOT
)/usr
/include/
154 $(INSTALL_EXEC
) -d
$(ROOT
)$(MANDIR
)/man1
/
155 $(INSTALL_EXEC
) -d
$(ROOT
)$(MANDIR
)/man5
/
156 $(INSTALL_EXEC
) -d
$(ROOT
)$(MANDIR
)/man8
/
157 for i in
$(MAN1
); do \
158 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man1
/; \
160 for i in
$(MAN5
); do \
161 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man5
/; \
163 for i in
$(MAN8
); do \
164 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man8
/; \
168 # This part is skipped on Debian systems, the
169 # debian.preinst script takes care of it.
170 @if
[ ! -p
/dev
/initctl
]; then \
171 echo
"Creating /dev/initctl"; \
172 rm -f
/dev
/initctl
; \
173 mknod
-m
600 /dev
/initctl p
; fi