commit: add4db87d50f4633dac12a21f5c0f98bc86cc5d6 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Sun Apr 14 09:44:18 2019 +0000 Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org> CommitDate: Wed May 22 19:34:11 2019 +0000 URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=add4db87
general-concepts/use-flags: Also note about flags controlling CFLAGS Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> general-concepts/use-flags/text.xml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/general-concepts/use-flags/text.xml b/general-concepts/use-flags/text.xml index c20e8d0..4d56d97 100644 --- a/general-concepts/use-flags/text.xml +++ b/general-concepts/use-flags/text.xml @@ -70,6 +70,42 @@ of flags to those programs or modules that have external dependencies and/or long build times. The rest of them should be built unconditionally instead, or controlled by a flag such as <c>minimal</c>. </p> + +<p> +You should not introduce USE flags that merely manipulate <c>CFLAGS</c>, +<c>FEATURES</c> or similar variables configured directly by the user. Instead, +packages should avoid manipulating them at all, and let users set them directly. +Common mistakes include: +</p> + +<ol> + <li> + Using <c>debug</c> USE flag to force <c>-O0 -g</c> and disable + stripping. The correct purpose of <c>debug</c> flag is to control additional + debug code paths. The use of correct flags and features to preserve + debugging information is user's responsibility. + </li> + + <li> + Introducing <c>lto</c> flag to force <c>-flto</c>. This is something user + should set directly in flag varibles. + </li> + + <li> + Using <c>CPU_FLAGS_*</c> to control <c>-m*</c> options. Those flags are + intended to control code paths explicitly requiring specific CPU extensions, + e.g. separate assembly. Compiler-generated assembly should respect user's + <c>-march</c> choice. + </li> +</ol> + +<p> +There might be corner cases where these rules do not apply. For example, a few +upstreams require users to use specific <c>CFLAGS</c> and reject bug reports +against builds using other values. In this case, it is customary to strip flags +by default and provide <c>custom-cflags</c> flag to allow users to force their +preferred flags. +</p> </body> </section>