OSDN Git Service

debian: enable use of dpkg-buildflags if present
authorTheodore Ts'o <tytso@mit.edu>
Wed, 15 Feb 2012 23:29:37 +0000 (18:29 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 17 Feb 2012 19:32:18 +0000 (14:32 -0500)
On newer Debian-based distributions, dpkg-buildflags should be called
by the debian rules file to get the appropriate values for CFLAGS,
LDFLAGS, etc.  This will also allow Debian to build with security
hardened build flags, which is a release goal for Debian Wheezy.

If dpkg-buildflags is not present, then use some safe defaults (what
is currently being set by dpkg-buildpackage in Ubuntu 10.04 LTS, which
is a common enough ancient distribution that many people might still
care about).

Addresses-Debian-Bug: #654457

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debian/rules

index c950cd7..6e49804 100755 (executable)
@@ -113,6 +113,16 @@ INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 0755
 #INSTALL_PROGRAM += -s
 #endif
 
+DEFAULT_CFLAGS = -g -O2
+DEFAULT_LDFLAGS = -Wl,-Bsymbolic-functions
+
+CFLAGS = $(shell if dpkg-buildflags >& /dev/null; then \
+       dpkg-buildflags --get CFLAGS; else echo $(DEFAULT_CFLAGS) ; fi)
+LDFLAGS = $(shell if dpkg-buildflags >& /dev/null; then \
+       dpkg-buildflags --get LDFLAGS; else echo $(DEFAULT_LDFLAGS) ; fi)
+CPPFLAGS = $(shell if dpkg-buildflags >& /dev/null; then \
+       dpkg-buildflags --get CPPFLAGS; fi)
+
 ifeq (${DEB_HOST_ARCH},alpha)
 CFLAGS += -DHAVE_NETINET_IN_H
 else
@@ -214,12 +224,12 @@ ${CFGSTDSTAMP}:
 ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
        cd ${stdbuilddir} && AWK=/usr/bin/awk \
                ${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
-               CFLAGS="${CFLAGS}"
+               CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
 else
        cd ${stdbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
                ${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
                --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
-               CFLAGS="${CFLAGS}"
+               CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
 endif
 
   # specially-built MIPS libs
@@ -242,12 +252,12 @@ ${CFGBFSTAMP}:
 ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
        cd ${bfbuilddir} && AWK=/usr/bin/awk \
                ${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} \
-               CFLAGS="${CFLAGS} ${BF_CFLAGS}"
+               CFLAGS="${CFLAGS} ${BF_CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
 else
        cd ${bfbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
                ${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} \
                --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
-               CFLAGS="${CFLAGS}"
+               CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
 endif
        mkdir -p ${STAMPSDIR}
        touch ${CFGBFSTAMP}
@@ -271,7 +281,7 @@ else
        cd ${staticbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
                ${topdir}/configure ${COMMON_CONF_FLAGS} ${STATIC_CONF_FLAGS} \
                --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
-               CFLAGS="${CFLAGS}"
+               CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
 endif
        mkdir -p ${STAMPSDIR}
        touch ${CFGSTATICSTAMP}
@@ -633,4 +643,10 @@ endif
 
 binary: binary-indep binary-arch
 
-.PHONY: binary binary-arch binary-indep clean checkroot mrproper debian-files
+.PHONY: binary binary-arch binary-indep clean checkroot mrproper \
+       debug_flags debian-files
+
+debug_flags:
+       @echo CFLAGS is $(CFLAGS)
+       @echo LDFLAGS is $(LDFLAGS)
+       @echo CPPFLAGS is $(CPPFLAGS)