#
CPPFLAGS =
-CFLAGS ?= -ansi -O2 -fomit-frame-pointer
-override CFLAGS += -W -Wall -D_GNU_SOURCE
+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 =
MAN8 += shutdown.8 telinit.8 fstab-decode.8
ifeq ($(DISTRO),)
-BIN += mountpoint
SBIN += sulogin bootlogd
USRBIN += utmpdump wall
-MAN1 += utmpdump.1 mountpoint.1 wall.1
+MAN1 += utmpdump.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
+MANDB :=
endif
ifeq ($(DISTRO),Owl)
USRBIN += wall
MAN1 += wall.1
+MANDB :=
endif
ifeq ($(DISTRO),SuSE)
CPPFLAGS+= -DUSE_SYSFS -DSANE_TIO -DSIGINT_ONLYONCE -DUSE_ONELINE
-BIN += mountpoint
SBIN += sulogin
USRBIN += utmpdump
-MAN1 += utmpdump.1 mountpoint.1
+MAN1 += utmpdump.1
MAN8 += sulogin.8
+MANDB :=
+endif
+
+ifeq ($(MNTPOINT),yes)
+BIN += mountpoint
+MAN1 += mountpoint.1
endif
ID = $(shell id -u)
endif
# Additional libs for GNU libc.
-ifneq ($(wildcard /usr/lib*/libcrypt.a),)
+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
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
+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
+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
$(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/; \
+ for man in $(MAN1); do \
+ $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man1/; \
+ sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man1/$$man ; \
done
- for i in $(MAN5); do \
- $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \
+ for man in $(MAN5); do \
+ $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man5/; \
+ sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man5/$$man ; \
done
- for i in $(MAN8); do \
- $(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \
+ for man in $(MAN8); do \
+ $(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man8/; \
+ sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man8/$$man ; \
done
ifeq ($(ROOT),)
#