bsd.sys.mk revision 220863
117000Salanb# $FreeBSD: head/share/mk/bsd.sys.mk 220863 2011-04-19 18:09:21Z dim $
217000Salanb#
317000Salanb# This file contains common settings used for building FreeBSD
417000Salanb# sources.
517000Salanb
617000Salanb# Enable various levels of compiler warning checks.  These may be
717000Salanb# overridden (e.g. if using a non-gcc compiler) by defining NO_WARNS.
817000Salanb
917000Salanb# for GCC:  http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#IDX143
1017000Salanb
1117000Salanb# the default is gnu99 for now
1217000SalanbCSTD		?= gnu99
1317000Salanb
1417000Salanb.if ${CSTD} == "k&r"
1517000SalanbCFLAGS		+= -traditional
1617000Salanb.elif ${CSTD} == "c89" || ${CSTD} == "c90"
1717000SalanbCFLAGS		+= -std=iso9899:1990
1817000Salanb.elif ${CSTD} == "c94" || ${CSTD} == "c95"
1917000SalanbCFLAGS		+= -std=iso9899:199409
2017000Salanb.elif ${CSTD} == "c99"
2117000SalanbCFLAGS		+= -std=iso9899:1999
2217000Salanb.else
2317000SalanbCFLAGS		+= -std=${CSTD}
2417000Salanb.endif
2517000Salanb.if !defined(NO_WARNS)
2617000Salanb# -pedantic is problematic because it also imposes namespace restrictions
2717000Salanb#CFLAGS		+= -pedantic
2817000Salanb. if defined(WARNS)
2917000Salanb.  if ${WARNS} >= 1
3017000SalanbCWARNFLAGS	+=	-Wsystem-headers
3117000Salanb.   if !defined(NO_WERROR)
3217000SalanbCWARNFLAGS	+=	-Werror
3317000Salanb.   endif
3417000Salanb.  endif
3517000Salanb.  if ${WARNS} >= 2
3617000SalanbCWARNFLAGS	+=	-Wall -Wno-format-y2k
3717000Salanb.  endif
3817000Salanb.  if ${WARNS} >= 3
3917000SalanbCWARNFLAGS	+=	-W -Wno-unused-parameter -Wstrict-prototypes\
4017000Salanb			-Wmissing-prototypes -Wpointer-arith
4117000Salanb.  endif
4217000Salanb.  if ${WARNS} >= 4
4317000SalanbCWARNFLAGS	+=	-Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch\
4417000Salanb			-Wshadow -Wunused-parameter
4517000Salanb.   if !defined(NO_WCAST_ALIGN)
4617408SalanbCWARNFLAGS	+=	-Wcast-align
4717000Salanb.   endif
4817000Salanb.  endif
4917000Salanb# BDECFLAGS
5017000Salanb.  if ${WARNS} >= 6
5117000SalanbCWARNFLAGS	+=	-Wchar-subscripts -Winline -Wnested-externs\
5217000Salanb			-Wredundant-decls -Wold-style-definition
5317000Salanb.  endif
5417000Salanb.  if ${WARNS} >= 2 && ${WARNS} <= 4
5517000Salanb# XXX Delete -Wuninitialized by default for now -- the compiler doesn't
5617000Salanb# XXX always get it right.
5717000SalanbCWARNFLAGS	+=	-Wno-uninitialized
5817000Salanb.  endif
5917408SalanbCWARNFLAGS	+=	-Wno-pointer-sign
6017000Salanb. endif
6117000Salanb
6217408Salanb. if defined(FORMAT_AUDIT)
6317162SalanbWFORMAT		=	1
6417000Salanb. endif
6517000Salanb. if defined(WFORMAT)
6617000Salanb.  if ${WFORMAT} > 0
6717000Salanb#CWARNFLAGS	+=	-Wformat-nonliteral -Wformat-security -Wno-format-extra-args
6817000SalanbCWARNFLAGS	+=	-Wformat=2 -Wno-format-extra-args
6917000Salanb.   if !defined(NO_WERROR)
7017000SalanbCWARNFLAGS	+=	-Werror
7117000Salanb.   endif
7217000Salanb.  endif
7317000Salanb. endif
7417000Salanb. if defined(NO_WFORMAT)
7517000SalanbCWARNFLAGS	+=	-Wno-format
7617000Salanb. endif
7717000Salanb.endif
7817000Salanb
7917000Salanb.if defined(IGNORE_PRAGMA)
8017000SalanbCWARNFLAGS	+=	-Wno-unknown-pragmas
8117000Salanb.endif
8217000Salanb
8317000Salanb.if ${MK_SSP} != "no" && ${MACHINE_CPUARCH} != "ia64" && \
8417000Salanb    ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
8517000Salanb# Don't use -Wstack-protector as it breaks world with -Werror.
8617000SalanbSSP_CFLAGS	?=	-fstack-protector
8717000SalanbCFLAGS		+=	${SSP_CFLAGS}
8817000Salanb.endif
8917000Salanb
9017000Salanb# Allow user-specified additional warning flags
9117000SalanbCFLAGS		+=	${CWARNFLAGS}
9217000Salanb