From a029d2cf4203f8f240bae4651e62c2358673b9f4 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Fri, 17 Feb 2017 16:11:02 -0500 Subject: [PATCH] Document usage of COPT environment variable for adjusting configure flags. Also add to the existing rather half-baked description of PROFILE, which does exactly the same thing, but I think people use it differently. Discussion: https://postgr.es/m/16461.1487361849@sss.pgh.pa.us --- doc/src/sgml/installation.sgml | 28 ++++++++++++++++++++++++++++ src/Makefile.global.in | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 4431ed75a93..182c801bd52 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1494,6 +1494,26 @@ su - postgres </variablelist> </para> + <para> + Sometimes it is useful to add compiler flags after-the-fact to the set + that were chosen by <filename>configure</>. An important example is + that <application>gcc</>'s <option>-Werror</> option cannot be included + in the <envar>CFLAGS</envar> passed to <filename>configure</>, because + it will break many of <filename>configure</>'s built-in tests. To add + such flags, include them in the <envar>COPT</envar> environment variable + while running <filename>make</>. The contents of <envar>COPT</envar> + are added to both the <envar>CFLAGS</envar> and <envar>LDFLAGS</envar> + options set up by <filename>configure</>. For example, you could do +<screen> +<userinput>make COPT='-Werror'</> +</screen> + or +<screen> +<userinput>export COPT='-Werror'</> +<userinput>make</> +</screen> + </para> + <note> <para> When developing code inside the server, it is recommended to @@ -1514,6 +1534,14 @@ su - postgres <option>-O0</>. An easy way to do this is by passing an option to <application>make</>: <command>make PROFILE=-O0 file.o</>. </para> + + <para> + The <envar>COPT</> and <envar>PROFILE</> environment variables are + actually handled identically by the <productname>PostgreSQL</> + makefiles. Which to use is a matter of preference, but a common habit + among developers is to use <envar>PROFILE</> for one-time flag + adjustments, while <envar>COPT</> might be kept set all the time. + </para> </note> </step> diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 59bd7996d18..44bfe28f571 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -582,6 +582,11 @@ ifneq ($(CUSTOM_COPT),) COPT= $(CUSTOM_COPT) endif +# +# These variables are meant to be set in the environment of "make" +# to add flags to whatever configure picked. Unlike the ones above, +# they are documented. +# ifdef COPT CFLAGS += $(COPT) LDFLAGS += $(COPT) -- GitLab