272 lines
7.2 KiB
Makefile
272 lines
7.2 KiB
Makefile
#
|
|
# 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 ?= -O2
|
|
override CFLAGS += -ansi -fomit-frame-pointer -fstack-protector-strong -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\"$(VERSION)\"
|
|
override CFLAGS += $(shell getconf LFS_CFLAGS)
|
|
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 logsave
|
|
USRBIN = last mesg readbootlog
|
|
|
|
MAN1 = last.1 lastb.1 mesg.1 readbootlog.1
|
|
MAN5 = initscript.5 inittab.5 initctl.5
|
|
MAN8 = halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8
|
|
MAN8 += shutdown.8 telinit.8 fstab-decode.8 logsave.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 += bootlogd
|
|
MAN8 += 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
|
|
|
|
MANPAGES:=$(MAN1) $(MAN5) $(MAN8)
|
|
MANPAGES+=$(subst ../man/,,$(foreach man,$(MANPAGES),$(wildcard ../man/??/$(man))))
|
|
|
|
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
|
|
|
|
ROOT ?=
|
|
base_bindir ?= /bin
|
|
base_sbindir ?= /sbin
|
|
bindir ?= /usr/bin
|
|
sysconfdir ?= /etc
|
|
includedir ?= /usr/include
|
|
mandir ?= /usr/share/man
|
|
|
|
ifeq ($(WITH_SELINUX),yes)
|
|
SELINUX_DEF = -DWITH_SELINUX
|
|
INITLIBS += -lselinux
|
|
SULOGINLIBS = -lselinux
|
|
else
|
|
SELINUX_DEF =
|
|
INITLIBS =
|
|
SULOGINLIBS =
|
|
endif
|
|
|
|
ROOT ?= $(DESTDIR)
|
|
|
|
# Additional libs for GNU libc.
|
|
ifneq ($(wildcard $(ROOT)/usr/lib*/libcrypt.*),)
|
|
SULOGINLIBS += -lcrypt
|
|
endif
|
|
|
|
# Additional libs for GNU libc / multiarch on Debian based systems.
|
|
ifneq ($(wildcard $(ROOT)/usr/lib/*/libcrypt.*),)
|
|
ifneq ($(findstring -lcrypt, $(SULOGINLIBS)), -lcrypt)
|
|
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 runlevellog.o
|
|
|
|
halt: LDLIBS += $(STATIC)
|
|
halt: halt.o ifdown.o hddown.o utmp.o runlevellog.o
|
|
|
|
last: LDLIBS += $(STATIC)
|
|
last: last.o
|
|
|
|
logsave: LDLIBS += $(STATIC)
|
|
logsave: logsave.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 runlevellog.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
|
|
|
|
readbootlog: LDLIBS += $(STATIC)
|
|
readbootlog: readbootlog.o
|
|
|
|
fstab-decode: LDLIBS += $(STATIC)
|
|
fstab-decode: fstab-decode.o
|
|
|
|
sulogin.o: CPPFLAGS += $(SELINUX_DEF)
|
|
sulogin.o: sulogin.c
|
|
|
|
runlevellog.o: runlevellog.h runlevellog.c paths.h
|
|
|
|
init.o: CPPFLAGS += $(SELINUX_DEF)
|
|
init.o: init.c init.h initreq.h paths.h reboot.h runlevellog.h runlevellog.c 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 $@ $<
|
|
|
|
bootlogd.o: bootlogd.c bootlogd.h
|
|
|
|
readbootlog.o: readbootlog.c
|
|
|
|
utmpdump.o: utmpdump.c oldutmp.h
|
|
|
|
shutdown.o: shutdown.c paths.h reboot.h initreq.h init.h
|
|
|
|
halt.o: halt.c reboot.h paths.h runlevellog.c runlevellog.h
|
|
|
|
last.o: last.c oldutmp.h
|
|
|
|
logsave.o: logsave.c
|
|
|
|
consoles.o: consoles.c consoles.h
|
|
|
|
cleanobjs:
|
|
rm -f *.o *.bak
|
|
|
|
clean: cleanobjs clobber
|
|
|
|
clobber: cleanobjs
|
|
rm -f $(BIN) $(SBIN) $(USRBIN)
|
|
|
|
distclean: clobber
|
|
|
|
install: all
|
|
$(INSTALL_DIR) $(ROOT)$(base_bindir)/ $(ROOT)$(base_sbindir)/
|
|
$(INSTALL_DIR) $(ROOT)$(bindir)/
|
|
for i in $(BIN); do \
|
|
$(INSTALL_EXEC) $$i $(ROOT)$(base_bindir)/ ; \
|
|
done
|
|
for i in $(SBIN); do \
|
|
$(INSTALL_EXEC) $$i $(ROOT)$(base_sbindir)/ ; \
|
|
done
|
|
for i in $(USRBIN); do \
|
|
$(INSTALL_EXEC) $$i $(ROOT)$(bindir)/ ; \
|
|
done
|
|
# $(INSTALL_DIR) $(ROOT)/etc/
|
|
$(INSTALL_DIR) $(ROOT)/etc/inittab.d
|
|
# $(INSTALL_EXEC) ../doc/initscript.sample $(ROOT)/etc/
|
|
<<<<<<< HEAD
|
|
ln -sf halt $(ROOT)$(base_sbindir)/reboot
|
|
ln -sf halt $(ROOT)$(base_sbindir)/poweroff
|
|
ln -sf init $(ROOT)$(base_sbindir)/telinit
|
|
ln -sf $(base_sbindir)/killall5 $(ROOT)$(base_bindir)/pidof
|
|
if [ ! -f $(ROOT)$(bindir)/lastb ]; then \
|
|
ln -sf last $(ROOT)$(bindir)/lastb; \
|
|
fi
|
|
$(INSTALL_DIR) $(ROOT)$(includedir)/
|
|
$(INSTALL_DATA) initreq.h $(ROOT)$(includedir)/
|
|
for lang in '' $(patsubst ../man/po/%.po,%,$(wildcard ../man/po/??.po)); do \
|
|
$(INSTALL_DIR) $(ROOT)$(mandir)/man1/$$lang; \
|
|
$(INSTALL_DIR) $(ROOT)$(mandir)/man5/$$lang; \
|
|
$(INSTALL_DIR) $(ROOT)$(mandir)/man8/$$lang; \
|
|
done
|
|
for man in $(MAN1) $(subst ../man/,,$(foreach man,$(MAN1),$(wildcard ../man/??/$(man)))); do \
|
|
$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man1/$$man; \
|
|
sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man1/$$man ; \
|
|
done
|
|
for man in $(MAN5) $(subst ../man/,,$(foreach man,$(MAN5),$(wildcard ../man/??/$(man)))); do \
|
|
$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man5/$$man; \
|
|
sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man5/$$man ; \
|
|
done
|
|
for man in $(MAN8) $(subst ../man/,,$(foreach man,$(MAN8),$(wildcard ../man/??/$(man)))); do \
|
|
$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man8/$$man; \
|
|
sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man8/$$man ; \
|
|
=======
|
|
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/
|
|
for man in $(MANPAGES) ; do \
|
|
targetdir=$(ROOT)$(MANDIR)/$$(dirname $$man)/man$${man##*.}; \
|
|
$(INSTALL_DIR) $$targetdir; \
|
|
$(INSTALL_DATA) ../man/$$man $$targetdir/$$(basename $$man); \
|
|
sed -i "1{ $(MANDB); }" $$targetdir/$$(basename $$man); \
|
|
>>>>>>> 3.06
|
|
done
|
|
ifeq ($(ROOT),)
|
|
#
|
|
# This part is skipped on Debian systems, the
|
|
# debian.preinst script takes care of it.
|
|
@if [ ! -p /run/initctl ]; then \
|
|
echo "Creating /run/initctl"; \
|
|
rm -f /run/initctl; \
|
|
mknod -m 600 /run/initctl p; fi
|
|
endif
|