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
101 mountpoint
: mountpoint.o
107 sulogin
: LDLIBS
+= $(SULOGINLIBS
) $(STATIC
)
108 sulogin
: sulogin.o consoles.o
110 wall
: dowall.o wall.o
112 shutdown
: dowall.o shutdown.o utmp.o
114 bootlogd
: LDLIBS
+= -lutil
117 sulogin.o
: CPPFLAGS
+= $(SELINUX_DEF
)
120 init.o
: CPPFLAGS
+= $(SELINUX_DEF
)
121 init.o
: init.c init.h initreq.h paths.h reboot.h set.h
125 init_utmp.o
: CPPFLAGS
+= -DINIT_MAIN
126 init_utmp.o
: utmp.c init.h initreq.h paths.h
127 $(CC
) $(CFLAGS
) $(CPPFLAGS
) -c
-o
$@
$<
129 utmpdump.o
: utmpdump.c oldutmp.h
131 shutdown.o
: shutdown.c paths.h reboot.h initreq.h init.h
133 halt.o
: halt.c reboot.h
135 last.o
: last.c oldutmp.h
137 consoles.o
: consoles.c consoles.h
143 @echo Type
\"make
clobber\" to really
clean up.
146 rm -f
$(BIN
) $(SBIN
) $(USRBIN
)
151 $(INSTALL_DIR
) $(ROOT
)/bin
/ $(ROOT
)/sbin
/
152 $(INSTALL_DIR
) $(ROOT
)/usr
/bin
/
153 for i in
$(BIN
); do \
154 $(INSTALL_EXEC
) $$i $(ROOT
)/bin
/ ; \
156 for i in
$(SBIN
); do \
157 $(INSTALL_EXEC
) $$i $(ROOT
)/sbin
/ ; \
159 for i in
$(USRBIN
); do \
160 $(INSTALL_EXEC
) $$i $(ROOT
)/usr
/bin
/ ; \
162 # $(INSTALL_DIR) $(ROOT)/etc/
163 # $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/
164 ln
-sf halt
$(ROOT
)/sbin
/reboot
165 ln
-sf halt
$(ROOT
)/sbin
/poweroff
166 ln
-sf init
$(ROOT
)/sbin
/telinit
167 ln
-sf
/sbin
/killall5
$(ROOT
)/bin
/pidof
168 if
[ ! -f
$(ROOT
)/usr
/bin
/lastb
]; then \
169 ln
-sf last
$(ROOT
)/usr
/bin
/lastb
; \
171 $(INSTALL_DIR
) $(ROOT
)/usr
/include/
172 $(INSTALL_DATA
) initreq.h
$(ROOT
)/usr
/include/
173 $(INSTALL_DIR
) $(ROOT
)$(MANDIR
)/man1
/
174 $(INSTALL_DIR
) $(ROOT
)$(MANDIR
)/man5
/
175 $(INSTALL_DIR
) $(ROOT
)$(MANDIR
)/man8
/
176 for i in
$(MAN1
); do \
177 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man1
/; \
179 for i in
$(MAN5
); do \
180 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man5
/; \
182 for i in
$(MAN8
); do \
183 $(INSTALL_DATA
) ..
/man
/$$i $(ROOT
)$(MANDIR
)/man8
/; \
187 # This part is skipped on Debian systems, the
188 # debian.preinst script takes care of it.
189 @if
[ ! -p
/dev
/initctl
]; then \
190 echo
"Creating /dev/initctl"; \
191 rm -f
/dev
/initctl
; \
192 mknod
-m
600 /dev
/initctl p
; fi