Get more help from gcc, add -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2...
[sysvinit.git] / src / Makefile
index c815d0981e99e7e43540d4dd9f51f6d2ba1b5e1c..d436e2fec19681b2b80c0a436f32e9998d594941 100644 (file)
@@ -9,11 +9,17 @@
 #
 
 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 -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
@@ -25,18 +31,15 @@ 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
 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
@@ -49,14 +52,18 @@ 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)
 BIN_OWNER      = root
 BIN_GROUP      = root
@@ -82,7 +89,12 @@ else
 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
 
@@ -96,28 +108,39 @@ all:               $(BIN) $(SBIN) $(USRBIN)
 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
+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