Document use of CC and CFLAGS in more detail (bug 20980, bug 21234).

There are some bug reports from people setting CFLAGS not including a
-O option and then being confused when the build fails.  This patch
addresses this by documenting the proper use of CC and CFLAGS in more
detail - saying what options should go where and specifying the
requirement to compile with optimization.

The previous text incorrectly used @var markup with CC and CFLAGS.
The correct markup for environment variables is @env, but it's also
the case that passing such variables explicitly on the configure
command line is preferred to passing them in the environment, so this
patch changes the documentation to describe passing them on the
command line (and uses @code).

In many cases putting options in the wrong place may in fact work, but
I believe what I've specified is the correct rule for which options to
put where.

	[BZ #20980]
	[BZ #21234]
	* manual/install.texi (Configuring and compiling): Describe
	passing CC and CFLAGS on configure command line, not as
	environment variables.  Use @code markup on those variables.
	Specify what options go in CC and what go in CFLAGS.  Note the
	requirement to compile with optimization.
	* INSTALL: Regenerated.
This commit is contained in:
Joseph Myers 2018-02-15 23:48:47 +00:00
parent 3785b31c16
commit db9881ecd7
3 changed files with 41 additions and 12 deletions

View File

@ -1,5 +1,14 @@
2018-02-15 Joseph Myers <joseph@codesourcery.com> 2018-02-15 Joseph Myers <joseph@codesourcery.com>
[BZ #20980]
[BZ #21234]
* manual/install.texi (Configuring and compiling): Describe
passing CC and CFLAGS on configure command line, not as
environment variables. Use @code markup on those variables.
Specify what options go in CC and what go in CFLAGS. Note the
requirement to compile with optimization.
* INSTALL: Regenerated.
[BZ #18124] [BZ #18124]
* sysdeps/hppa/bsd-setjmp.S: Include <sysdep.h>. * sysdeps/hppa/bsd-setjmp.S: Include <sysdep.h>.
(setjmp): Use HIDDEN_JUMPTARGET with __sigsetjmp. (setjmp): Use HIDDEN_JUMPTARGET with __sigsetjmp.

19
INSTALL
View File

@ -36,9 +36,18 @@ normal setting to install as the standard system library is
'--prefix=/usr' for GNU/Linux systems and '--prefix=' (an empty prefix) '--prefix=/usr' for GNU/Linux systems and '--prefix=' (an empty prefix)
for GNU/Hurd systems. for GNU/Hurd systems.
It may also be useful to set the CC and CFLAGS variables in the It may also be useful to pass 'CC=COMPILER' and 'CFLAGS=FLAGS'
environment when running 'configure'. CC selects the C compiler that arguments to 'configure'. 'CC' selects the C compiler that will be
will be used, and CFLAGS sets optimization options for the compiler. used, and 'CFLAGS' sets optimization options for the compiler. Any
compiler options required for all compilations, such as options
selecting an ABI or a processor for which to generate code, should be
included in 'CC'. Options that may be overridden by the GNU C Library
build system for particular files, such as for optimization and
debugging, should go in 'CFLAGS'. The default value of 'CFLAGS' is '-g
-O2', and the GNU C Library cannot be compiled without optimization, so
if 'CFLAGS' is specified it must enable optimization. For example:
$ ../glibc-VERSION/configure CC="gcc -m32" CFLAGS="-O3"
The following list describes all of the available options for The following list describes all of the available options for
'configure': 'configure':
@ -210,7 +219,7 @@ will be used, and CFLAGS sets optimization options for the compiler.
but you want to compile a library for 586es, give but you want to compile a library for 586es, give
'--host=i586-pc-linux-gnu' or just '--host=i586-linux' and add the '--host=i586-pc-linux-gnu' or just '--host=i586-linux' and add the
appropriate compiler flags ('-mcpu=i586' will do the trick) to appropriate compiler flags ('-mcpu=i586' will do the trick) to
CFLAGS. 'CC'.
If you specify just '--build', 'configure' will get confused. If you specify just '--build', 'configure' will get confused.
@ -304,7 +313,7 @@ makefiles.
setting a few variables in 'configparms'. Set 'CC' to the setting a few variables in 'configparms'. Set 'CC' to the
cross-compiler for the target you configured the library for; it is cross-compiler for the target you configured the library for; it is
important to use this same 'CC' value when running 'configure', like important to use this same 'CC' value when running 'configure', like
this: 'CC=TARGET-gcc configure TARGET'. Set 'BUILD_CC' to the compiler this: 'configure TARGET CC=TARGET-gcc'. Set 'BUILD_CC' to the compiler
to use for programs run on the build system as part of compiling the to use for programs run on the build system as part of compiling the
library. You may need to set 'AR' to cross-compiling versions of 'ar' library. You may need to set 'AR' to cross-compiling versions of 'ar'
if the native tools are not configured to work with object files for the if the native tools are not configured to work with object files for the

View File

@ -59,10 +59,21 @@ but the normal setting to install as the standard system library is
@samp{--prefix=/usr} for @gnulinuxsystems{} and @samp{--prefix=} (an @samp{--prefix=/usr} for @gnulinuxsystems{} and @samp{--prefix=} (an
empty prefix) for @gnuhurdsystems{}. empty prefix) for @gnuhurdsystems{}.
It may also be useful to set the @var{CC} and @var{CFLAGS} variables in It may also be useful to pass @samp{CC=@var{compiler}} and
the environment when running @code{configure}. @var{CC} selects the C @code{CFLAGS=@var{flags}} arguments to @code{configure}. @code{CC}
compiler that will be used, and @var{CFLAGS} sets optimization options selects the C compiler that will be used, and @code{CFLAGS} sets
for the compiler. optimization options for the compiler. Any compiler options required
for all compilations, such as options selecting an ABI or a processor
for which to generate code, should be included in @code{CC}. Options
that may be overridden by the @glibcadj{} build system for particular
files, such as for optimization and debugging, should go in
@code{CFLAGS}. The default value of @code{CFLAGS} is @samp{-g -O2},
and @theglibc{} cannot be compiled without optimization, so if
@code{CFLAGS} is specified it must enable optimization. For example:
@smallexample
$ ../glibc-@var{version}/configure CC="gcc -m32" CFLAGS="-O3"
@end smallexample
The following list describes all of the available options for The following list describes all of the available options for
@code{configure}: @code{configure}:
@ -241,7 +252,7 @@ if @code{configure} guesses your machine as @code{i686-pc-linux-gnu} but
you want to compile a library for 586es, give you want to compile a library for 586es, give
@samp{--host=i586-pc-linux-gnu} or just @samp{--host=i586-linux} and add @samp{--host=i586-pc-linux-gnu} or just @samp{--host=i586-linux} and add
the appropriate compiler flags (@samp{-mcpu=i586} will do the trick) to the appropriate compiler flags (@samp{-mcpu=i586} will do the trick) to
@var{CFLAGS}. @code{CC}.
If you specify just @samp{--build}, @code{configure} will get confused. If you specify just @samp{--build}, @code{configure} will get confused.
@ -339,8 +350,8 @@ It is easy to configure @theglibc{} for cross-compilation by
setting a few variables in @file{configparms}. Set @code{CC} to the setting a few variables in @file{configparms}. Set @code{CC} to the
cross-compiler for the target you configured the library for; it is cross-compiler for the target you configured the library for; it is
important to use this same @code{CC} value when running important to use this same @code{CC} value when running
@code{configure}, like this: @samp{CC=@var{target}-gcc configure @code{configure}, like this: @samp{configure @var{target}
@var{target}}. Set @code{BUILD_CC} to the compiler to use for programs CC=@var{target}-gcc}. Set @code{BUILD_CC} to the compiler to use for programs
run on the build system as part of compiling the library. You may need to run on the build system as part of compiling the library. You may need to
set @code{AR} to cross-compiling versions of @code{ar} set @code{AR} to cross-compiling versions of @code{ar}
if the native tools are not configured to work with if the native tools are not configured to work with