diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 4431ed75a933c58e058ce65c2a6cf98824213991..182c801bd5271a3d41ad450a4ba73fc3847968a6 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 59bd7996d182586a9da7b5f51cc6fd28e7894f70..44bfe28f5717db2465389c2a8800c12f3e2db1b8 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)