firejail/config.mk.in
Kelvin M. Klann 0da23da653
build: fix "warning: "_FORTIFY_SOURCE" redefined" (#6283)
The warning is being produced on Arch since pacman 6.1, which changed
`-D_FORTIFY_SOURCE=2` to `-D_FORTIFY_SOURCE=3` in CFLAGS in
makepkg.conf:

    $ pacman -Q gcc pacman
    gcc 13.2.1-5
    pacman 6.1.0-3
    $ makepkg
    [...]
    make -C src/lib
    gcc [...] -D_FORTIFY_SOURCE=2 [...] -Wp,-D_FORTIFY_SOURCE=3 [...] -c ../../src/lib/common.c -o ../../src/lib/common.o
    <command-line>: warning: "_FORTIFY_SOURCE" redefined
    <command-line>: note: this is the location of the previous definition

To fix this, only add `-D_FORTIFY_SOURCE` to EXTRA_CFLAGS if it does not
cause any warnings with CFLAGS and CPPFLAGS during compilation.

The effect remains the same: The build system still defines the macro by
default (if there are no warnings) and the user/distribution can still
override it through CFLAGS/CPPFLAGS.

Fixes #6282.

Reported-by: @glitsj16
2024-03-20 07:28:50 +00:00

116 lines
2.9 KiB
Makefile

# @configure_input@
#
# Configure-time variable definitions and any other common definition that can
# be safely included by all makefiles.
#
# Note: Do not define any targets on this file, as that could potentially end
# up overriding the includer's intended default target (which by default is the
# first target encountered).
MAKEFLAGS += -r
NAME=@PACKAGE_NAME@
TARNAME=@PACKAGE_TARNAME@
PACKAGE_TARNAME=@PACKAGE_TARNAME@ # needed by docdir
VERSION=@PACKAGE_VERSION@
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
libdir=@libdir@
datarootdir=@datarootdir@
docdir=@docdir@
mandir=@mandir@
sysconfdir=@sysconfdir@
# Misc flags
BUSYBOX_WORKAROUND=@BUSYBOX_WORKAROUND@
HAVE_CONTRIB_INSTALL=@HAVE_CONTRIB_INSTALL@
HAVE_FATAL_WARNINGS=@HAVE_FATAL_WARNINGS@
HAVE_GCOV=@HAVE_GCOV@
HAVE_MAN=@HAVE_MAN@
# MANFLAGS
HAVE_APPARMOR=@HAVE_APPARMOR@
HAVE_CHROOT=@HAVE_CHROOT@
HAVE_DBUSPROXY=@HAVE_DBUSPROXY@
HAVE_FILE_TRANSFER=@HAVE_FILE_TRANSFER@
HAVE_FORCE_NONEWPRIVS=@HAVE_FORCE_NONEWPRIVS@
HAVE_GLOBALCFG=@HAVE_GLOBALCFG@
HAVE_IDS=@HAVE_IDS@
HAVE_LANDLOCK=@HAVE_LANDLOCK@
HAVE_NETWORK=@HAVE_NETWORK@
HAVE_ONLY_SYSCFG_PROFILES=@HAVE_ONLY_SYSCFG_PROFILES@
HAVE_OUTPUT=@HAVE_OUTPUT@
HAVE_OVERLAYFS=@HAVE_OVERLAYFS@
HAVE_PRIVATE_HOME=@HAVE_PRIVATE_HOME@
HAVE_PRIVATE_LIB=@HAVE_PRIVATE_LIB@
HAVE_SELINUX=@HAVE_SELINUX@
HAVE_SUID=@HAVE_SUID@
HAVE_USERNS=@HAVE_USERNS@
HAVE_USERTMPFS=@HAVE_USERTMPFS@
HAVE_X11=@HAVE_X11@
MANFLAGS = \
$(HAVE_APPARMOR) \
$(HAVE_CHROOT) \
$(HAVE_DBUSPROXY) \
$(HAVE_FILE_TRANSFER) \
$(HAVE_FORCE_NONEWPRIVS) \
$(HAVE_GLOBALCFG) \
$(HAVE_IDS) \
$(HAVE_LANDLOCK) \
$(HAVE_NETWORK) \
$(HAVE_ONLY_SYSCFG_PROFILES) \
$(HAVE_OUTPUT) \
$(HAVE_OVERLAYFS) \
$(HAVE_PRIVATE_HOME) \
$(HAVE_PRIVATE_LIB) \
$(HAVE_SELINUX) \
$(HAVE_SUID) \
$(HAVE_USERNS) \
$(HAVE_USERTMPFS) \
$(HAVE_X11)
# User variables - should not be modified in the code (as they are reserved for
# the user building the package); see the following for details:
# https://www.gnu.org/software/automake/manual/1.16.5/html_node/User-Variables.html
CC=@CC@
CODESPELL=@CODESPELL@
CPPCHECK=@CPPCHECK@
GAWK=@GAWK@
SCAN_BUILD=@SCAN_BUILD@
CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
LDFLAGS=@LDFLAGS@
# Project variables
EXTRA_CFLAGS =@EXTRA_CFLAGS@
DEPS_CFLAGS =@DEPS_CFLAGS@
COMMON_CFLAGS = \
-ggdb -O2 -DVERSION='"$(VERSION)"' \
-Wall -Wextra $(HAVE_FATAL_WARNINGS) \
-Wformat -Wformat-security \
-fstack-protector-all \
-DPREFIX='"$(prefix)"' -DSYSCONFDIR='"$(sysconfdir)/firejail"' \
-DLIBDIR='"$(libdir)"' -DBINDIR='"$(bindir)"' \
-DVARDIR='"/var/lib/firejail"'
PROG_CFLAGS = \
$(COMMON_CFLAGS) \
$(HAVE_GCOV) $(MANFLAGS) \
$(EXTRA_CFLAGS) \
$(DEPS_CFLAGS) \
-fPIE
SO_CFLAGS = \
$(COMMON_CFLAGS) \
$(DEPS_CFLAGS) \
-fPIC
EXTRA_LDFLAGS =@EXTRA_LDFLAGS@
PROG_LDFLAGS = -Wl,-z,relro -Wl,-z,now -fPIE -pie $(EXTRA_LDFLAGS)
SO_LDFLAGS = -Wl,-z,relro -Wl,-z,now -fPIC
LIBS =@LIBS@
CLEANFILES = *.d *.o *.gcov *.gcda *.gcno *.plist