| # |
| # Makefile Makefile for the systemV init suite. |
| # Targets: all compiles everything |
| # install installs the binaries (not the scripts) |
| # clean cleans up object files |
| # clobber really cleans up |
| # |
| # Version: @(#)Makefile 2.85-13 23-Mar-2004 miquels@cistron.nl |
| # |
| |
| CPPFLAGS = |
| CFLAGS ?= -ansi -O2 -fomit-frame-pointer -fstack-protector |
| override CFLAGS += -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE |
| STATIC = |
| MANDB := s@^\('\\\\\"\)[^\*-]*-\*- coding: [^[:blank:]]\+ -\*-@\1@ |
| |
| # |
| # Leave empty if the mountpoint(1) command from util-linux 2.20 |
| # and above should be used, otherwise set it to yes. |
| # |
| MNTPOINT= |
| |
| # For some known distributions we do not build all programs, otherwise we do. |
| BIN = |
| SBIN = init halt shutdown runlevel killall5 fstab-decode |
| USRBIN = last mesg |
| |
| MAN1 = last.1 lastb.1 mesg.1 |
| MAN5 = initscript.5 inittab.5 |
| MAN8 = halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8 |
| MAN8 += shutdown.8 telinit.8 fstab-decode.8 |
| |
| ifeq ($(DISTRO),) |
| SBIN += sulogin bootlogd |
| USRBIN += utmpdump wall |
| MAN1 += utmpdump.1 wall.1 |
| MAN8 += sulogin.8 bootlogd.8 |
| endif |
| |
| ifeq ($(DISTRO),Debian) |
| CPPFLAGS+= -DACCTON_OFF |
| SBIN += sulogin bootlogd |
| MAN8 += sulogin.8 bootlogd.8 |
| MANDB := |
| endif |
| |
| ifeq ($(DISTRO),Owl) |
| USRBIN += wall |
| MAN1 += wall.1 |
| MANDB := |
| endif |
| |
| ifeq ($(DISTRO),SuSE) |
| CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE |
| SBIN += sulogin |
| USRBIN += utmpdump |
| MAN1 += utmpdump.1 |
| MAN8 += sulogin.8 |
| MANDB := |
| endif |
| |
| ifeq ($(MNTPOINT),yes) |
| BIN += mountpoint |
| MAN1 += mountpoint.1 |
| endif |
| |
| ID = $(shell id -u) |
| BIN_OWNER = root |
| BIN_GROUP = root |
| BIN_COMBO = $(BIN_OWNER):$(BIN_GROUP) |
| ifeq ($(ID),0) |
| INSTALL_EXEC = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 755 |
| INSTALL_DATA = install -o $(BIN_OWNER) -g $(BIN_GROUP) -m 644 |
| else |
| INSTALL_EXEC = install -m 755 |
| INSTALL_DATA = install -m 644 |
| endif |
| INSTALL_DIR = install -m 755 -d |
| MANDIR = /usr/share/man |
| |
| ifeq ($(WITH_SELINUX),yes) |
| SELINUX_DEF = -DWITH_SELINUX |
| INITLIBS += -lsepol -lselinux |
| SULOGINLIBS = -lselinux |
| else |
| SELINUX_DEF = |
| INITLIBS = |
| SULOGINLIBS = |
| endif |
| |
| # Additional libs for GNU libc. |
| ifneq ($(wildcard /usr/lib*/libcrypt.*),) |
| SULOGINLIBS += -lcrypt |
| endif |
| |
| # Additional libs for GNU libc / multiarch on Debian based systems. |
| ifneq ($(wildcard /usr/lib/*/libcrypt.*),) |
| SULOGINLIBS += -lcrypt |
| endif |
| |
| all: $(BIN) $(SBIN) $(USRBIN) |
| |
| #%: %.o |
| # $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) |
| #%.o: %.c |
| # $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@ |
| |
| init: LDLIBS += $(INITLIBS) $(STATIC) |
| init: init.o init_utmp.o |
| |
| halt: LDLIBS += $(STATIC) |
| halt: halt.o ifdown.o hddown.o utmp.o |
| |
| last: LDLIBS += $(STATIC) |
| last: last.o |
| |
| mesg: LDLIBS += $(STATIC) |
| mesg: mesg.o |
| |
| mountpoint: LDLIBS += $(STATIC) |
| mountpoint: mountpoint.o |
| |
| utmpdump: LDLIBS += $(STATIC) |
| utmpdump: utmpdump.o |
| |
| runlevel: LDLIBS += $(STATIC) |
| runlevel: runlevel.o |
| |
| sulogin: LDLIBS += $(SULOGINLIBS) $(STATIC) |
| sulogin: sulogin.o consoles.o |
| |
| wall: LDLIBS += $(STATIC) |
| wall: dowall.o wall.o |
| |
| shutdown: LDLIBS += $(STATIC) |
| shutdown: dowall.o shutdown.o utmp.o |
| |
| bootlogd: LDLIBS += -lutil $(STATIC) |
| bootlogd: bootlogd.o |
| |
| fstab-decode: LDLIBS += $(STATIC) |
| fstab-decode: fstab-decode.o |
| |
| sulogin.o: CPPFLAGS += $(SELINUX_DEF) |
| sulogin.o: sulogin.c |
| |
| init.o: CPPFLAGS += $(SELINUX_DEF) |
| init.o: init.c init.h initreq.h paths.h reboot.h set.h |
| |
| utmp.o: |
| |
| init_utmp.o: CPPFLAGS += -DINIT_MAIN |
| init_utmp.o: utmp.c init.h initreq.h paths.h |
| $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< |
| |
| utmpdump.o: utmpdump.c oldutmp.h |
| |
| shutdown.o: shutdown.c paths.h reboot.h initreq.h init.h |
| |
| halt.o: halt.c reboot.h |
| |
| last.o: last.c oldutmp.h |
| |
| consoles.o: consoles.c consoles.h |
| |
| cleanobjs: |
| rm -f *.o *.bak |
| |
| clean: cleanobjs |
| @echo Type \"make clobber\" to really clean up. |
| |
| clobber: cleanobjs |
| rm -f $(BIN) $(SBIN) $(USRBIN) |
| |
| distclean: clobber |
| |
| install: |
| $(INSTALL_DIR) $(ROOT)/bin/ $(ROOT)/sbin/ |
| $(INSTALL_DIR) $(ROOT)/usr/bin/ |
| for i in $(BIN); do \ |
| $(INSTALL_EXEC) $$i $(ROOT)/bin/ ; \ |
| done |
| for i in $(SBIN); do \ |
| $(INSTALL_EXEC) $$i $(ROOT)/sbin/ ; \ |
| done |
| for i in $(USRBIN); do \ |
| $(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \ |
| done |
| # $(INSTALL_DIR) $(ROOT)/etc/ |
| # $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/ |
| ln -sf halt $(ROOT)/sbin/reboot |
| ln -sf halt $(ROOT)/sbin/poweroff |
| ln -sf init $(ROOT)/sbin/telinit |
| ln -sf /sbin/killall5 $(ROOT)/bin/pidof |
| if [ ! -f $(ROOT)/usr/bin/lastb ]; then \ |
| ln -sf last $(ROOT)/usr/bin/lastb; \ |
| fi |
| $(INSTALL_DIR) $(ROOT)/usr/include/ |
| $(INSTALL_DATA) initreq.h $(ROOT)/usr/include/ |
| $(INSTALL_DIR) $(ROOT)$(MANDIR)/man1/ |
| $(INSTALL_DIR) $(ROOT)$(MANDIR)/man5/ |
| $(INSTALL_DIR) $(ROOT)$(MANDIR)/man8/ |
| for man in $(MAN1); do \ |
| $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man1/; \ |
| sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man1/$$man ; \ |
| done |
| for man in $(MAN5); do \ |
| $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man5/; \ |
| sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man5/$$man ; \ |
| done |
| for man in $(MAN8); do \ |
| $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man8/; \ |
| sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man8/$$man ; \ |
| done |
| ifeq ($(ROOT),) |
| # |
| # This part is skipped on Debian systems, the |
| # debian.preinst script takes care of it. |
| @if [ ! -p /dev/initctl ]; then \ |
| echo "Creating /dev/initctl"; \ |
| rm -f /dev/initctl; \ |
| mknod -m 600 /dev/initctl p; fi |
| endif |