| # |
| # 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 |
| # |
| |
| ifndef OS_NAME |
| OS_NAME = $(shell uname -s) |
| endif |
| |
| ifeq ($(CC),cc) |
| CC = gcc |
| endif |
| CFLAGS += -Wall -O2 -fomit-frame-pointer -D_GNU_SOURCE -D_ALL_SOURCE |
| #LDFLAGS += -s |
| STATIC = |
| |
| ifeq ($(OS_NAME),Interix) |
| CFLAGS += -I/usr/local/include/bind |
| LIBBIND += -L/usr/local/lib/bind -lbind -ldb |
| #SOCKET_LIBS += -L/usr/local/lib/bind -lbind -ldb |
| else |
| ifeq ($(OS_NAME),SunOS) |
| #SOCKET_LIBS += -lsocket |
| LIBSOCKET = -lsocket -lnsl |
| LIBRT = -lrt |
| ifeq ($(shell uname -r),5.10) |
| CFLAGS += -D_NEED_STRSEP -D_NO_POSIX_MEMALIGN |
| endif |
| else |
| LIBUTIL = -lutil |
| endif |
| endif |
| |
| # For some known distributions we do not build all programs, otherwise we do. |
| BIN = |
| SBIN = init halt shutdown runlevel killall5 |
| 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),) |
| BIN += mountpoint |
| #SBIN += sulogin bootlogd |
| SBIN += bootlogd |
| USRBIN += utmpdump wall |
| MAN1 += utmpdump.1 mountpoint.1 wall.1 |
| MAN8 += sulogin.8 bootlogd.8 |
| endif |
| |
| ifeq ($(DISTRO),Debian) |
| CPPFLAGS+= -DACCTON_OFF |
| BIN += mountpoint |
| SBIN += sulogin bootlogd |
| MAN1 += mountpoint.1 |
| MAN8 += sulogin.8 bootlogd.8 |
| endif |
| |
| ifeq ($(DISTRO),Owl) |
| USRBIN += wall |
| MAN1 += wall.1 |
| endif |
| |
| ifeq ($(DISTRO),SuSE) |
| CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE |
| BIN += mountpoint |
| SBIN += sulogin |
| USRBIN += utmpdump |
| MAN1 += utmpdump.1 mountpoint.1 |
| MAN8 += sulogin.8 |
| 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 |
| |
| |
| ifeq ($(shell echo $(OS_NAME) | grep -Fo CYGWIN),CYGWIN) |
| sulogin: crypt/libcrypt.a |
| CFLAGS += -Icrypt |
| SULOGINLIBS += -Lcrypt -lcrypt |
| else |
| # Additional libs for GNU libc. |
| ifneq ($(wildcard /usr/lib*/libcrypt.a),) |
| SULOGINLIBS += -lcrypt |
| endif |
| 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 |
| # $(CC) $(LDFLAGS) $(STATIC) $^ -o $@ $(INITLIBS) |
| |
| halt: LDLIBS += $(LIBSOCKET) |
| #halt: reboot.h |
| halt: halt.o ifdown.o hddown.o utmp.o |
| # $(CC) $(LDFLAGS) $(STATIC) $^ -o $@ $(LIBSOCKET) |
| |
| last: LDLIBS += $(LIBBIND) $(LIBSOCKET) |
| #last: oldutmp.h |
| last: last.o |
| # $(CC) $(LDFLAGS) $(STATIC) $^ -o $@ $(LIBBIND) $(LIBSOCKET) |
| |
| mesg: mesg.o |
| |
| mountpoint: mountpoint.o |
| |
| utmpdump: utmpdump.o |
| |
| runlevel: runlevel.o |
| |
| sulogin: LDLIBS += $(SULOGINLIBS) $(STATIC) |
| sulogin: sulogin.o |
| $(CC) $(LDFLAGS) $(STATIC) $(SELINUX_DEF) -o $@ $^ $(LIBCRYPT) $(SULOGIN_SELIBS) |
| |
| wall: dowall.o wall.o |
| |
| shutdown: LDLIBS += $(LIBRT) |
| #halt: reboot.h |
| shutdown: dowall.o shutdown.o utmp.o |
| |
| bootlogd: LDLIBS += $(LIBUTIL) $(LIBRT) |
| bootlogd: bootlogd.o |
| |
| sulogin.o: CPPFLAGS += $(SELINUX_DEF) |
| #sulogin.o: sulogin.c |
| |
| init.o: CPPFLAGS += $(SELINUX_DEF) |
| #init.o: init.c init.h set.h reboot.h initreq.h |
| |
| #utmp.o: utmp.c init.h |
| |
| init_utmp.o: CPPFLAGS += -DINIT_MAIN |
| init_utmp.o: utmp.c init.h |
| $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ |
| |
| crypt/libcrypt.a: |
| $(MAKE) -C crypt libcrypt.a |
| |
| cleancrypt: |
| $(MAKE) -C crypt clean |
| |
| cleanobjs: |
| rm -f *.o *.bak |
| |
| clean: cleanobjs cleancrypt |
| @echo Type \"make clobber\" to really clean up. |
| |
| clobber: cleanobjs cleancrypt |
| 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 i in $(MAN1); do \ |
| $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man1/; \ |
| done |
| for i in $(MAN5); do \ |
| $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \ |
| done |
| for i in $(MAN8); do \ |
| $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \ |
| 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 |