tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

<bsd.own.mk> variable naming convention for compiler warnings



Hi fellow toolchain people.

I propose to adjust the naming convention (*) used for variables used to
suppress compiler warnings in <bsd.own.mk>, the Makefiles, and
tools/compat:

1. Share the same variable for Clang and GCC; if the compiler supports
   a given option, just use it, especially if it's for suppressing
   a particular newer compiler warning in older code, assuming
   that it won't be an issue.

2. The naming convention is "CC" + the compiler flag converted to upper
   case, - and = changed to _ a la   tr -=a-z __A-Z.

3. For variable naming purposes, treat -Werror=SOMETHING as -WSOMETHING,
   and -Wno-error=SOMETHING as -Wno-SOMETHING (usually from Clang).
   Test the actual name, but construct the variable name without "-error=".

The existing <bsd.own.mk> variables will be renamed to:
- CC_WNO_ADDRESS_OF_PACKED_MEMBER
	For -Wno-address-of-packed-member (gcc 9)
	and -Wno-error=address-of-packed-member (clang)
	Replaces CLANG_NO_ADDR_OF_PACKED_MEMBER,
	CC_NO_ADDR_OF_PACKED_MEMBER, 
	GCC_NO_ADDR_OF_PACKED_MEMBER.
	Note: changing 'NO_ADDR_' to 'NO_ADDRESS_'.
- CC_WNO_CAST_FUNCTION_TYPE
- CC_WNO_FORMAT_OVERFLOW
- CC_WNO_FORMAT_TRUNCATION
- CC_WNO_IMPLICIT_FALLTHROUGH
- CC_WNO_MAYBE_UNINITIALIZED
- CC_WNO_RETURN_LOCAL_ADDR
- CC_WNO_STRINGOP_OVERFLOW
- CC_WNO_STRINGOP_TRUNCATION


tools/compat/configure.ac will be extended to detect all the variables
and provide appropriate overrides in the generated defs.mk used
by the tools build.


More background:

Currently we have the naming convention:
- GCC_NO_SOMETHING	# gcc version specific warnings disable
- CLANG_NO_SOMETHING	# clang version specific warnings disable
- CC_NO_SOMETHING	# union of GCC_NO_* or CLANG_NO_* where common
where "SOMETHING" is a name similar to (but not always the same as)
the -Wno-SOMETHING flag to gcc / clang.

I renamed NO_ADDR_OF_PACKED_MEMBER to CC_NO_ADDR_OF_PACKED_MEMBER to
keep the "NO_" variable prefix for other uses in the build system.

In other projects I've found it useful to name the variable much
closer to the flag being detected.
E.g.
-  -funroll-loops	CC_FUNROLL_LOOPS
-  -Wno-cookie		CC_WNO_COOKIE

In tools/compat I recently added support for determining if the host
compiler supports a given -Wno-SOMETHING, and then override the
relevant bsd.own.mk variable in defs.mk, to avoid warnings
from clang about unknown options in the tools build.


Thoughts?


Luke.


(*) Naming being one of the two hard problems, per
https://martinfowler.com/bliki/TwoHardThings.html
	There are 2 hard problems in computer science:
	cache invalidation, naming things, and off-by-1 errors.


Home | Main Index | Thread Index | Old Index