git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* On overriding make variables from the environment...
@ 2018-10-16 18:45 SZEDER Gábor
  2018-10-16 21:54 ` Jonathan Nieder
  2018-12-20 16:24 ` [PATCH 0/5] travis-ci: build with the right compiler SZEDER Gábor
  0 siblings, 2 replies; 33+ messages in thread
From: SZEDER Gábor @ 2018-10-16 18:45 UTC (permalink / raw)
  To: git

Our Makefile has lines like these:

  CFLAGS = -g -O2 -Wall
  CC = cc
  AR = ar
  SPATCH = spatch

Note the use of '=', not '?='.  This means that these variables can be
overridden from the command line, i.e. 'make CC=gcc-X.Y' will build
with that particular GCC version, but not from the environment, i.e.
'CC=gcc-X.Y make' will still build with 'cc'.

This can be confusing for developers who come from other projects
where they used to run 'CC=whatever make'.

And our build jobs on Travis CI are badly affected by this.  We have
dedicated build jobs to build Git with GCC and Clang both on Linux and
OSX from the very beginning (522354d70f (Add Travis CI support,
2015-11-27)).  But guess how Travis CI specifies which compiler to
use!  With 'export CC=gcc' and 'export CC=clang', respectively.
Consequently, our Clang Linux build job has always used gcc, because
that's where 'cc' points at on Linux by default, while the GCC OSX
build job has always used Clang.  Oh, well.  Furthermore, see
37fa4b3c78 (travis-ci: run gcc-8 on linux-gcc jobs, 2018-05-19), where
Duy added an 'export CC=gcc-8' in an attempt to use a more modern
compiler, but this had no effect either.

I'm not sure what to do.  I'm fine with updating our 'ci/' scripts to
explicitly respect CC in the environment (either by running 'make
CC=$CC' or by writing $CC into 'config.mak').  Or I could update our
Makefile to use '?=' for specific variables, but:

  - I'm afraid to break somebody's setup relying on the current
    behavior and CC having different values in the environment and in
    'config.mak'.

  - Where to stop, IOW which variables should be set with '?='?
    CFLAGS, LDFLAGS, CC, AR, ..., SPATCH, SPATCH_FLAGS?  Dunno.  We
    already have 'STRIP ?= strip' and there are variables that are
    checked explicitly (e.g. 'DEVELOPER=y make' works).

    Note also that prior to b05701c5b4 (Make CFLAGS overridable from
    make command line., 2005-08-06) our Makefile used 'CC?=gcc' as
    well.


^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2019-01-18  8:41 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-16 18:45 On overriding make variables from the environment SZEDER Gábor
2018-10-16 21:54 ` Jonathan Nieder
2018-10-16 22:33   ` SZEDER Gábor
2018-10-16 22:40     ` Jonathan Nieder
2018-10-17 14:29       ` SZEDER Gábor
2018-10-18 10:01         ` Johannes Schindelin
2018-10-18 12:49         ` Junio C Hamano
2018-12-20 16:24 ` [PATCH 0/5] travis-ci: build with the right compiler SZEDER Gábor
2018-12-20 16:24   ` [PATCH 1/5] compat/obstack: fix -Wcast-function-type warnings SZEDER Gábor
2018-12-20 23:12     ` Ævar Arnfjörð Bjarmason
2019-01-10 21:22       ` Junio C Hamano
2019-01-11  0:37         ` SZEDER Gábor
2019-01-11 18:03           ` Junio C Hamano
2019-01-11 18:51             ` SZEDER Gábor
2019-01-15 23:55               ` SZEDER Gábor
2019-01-16  1:13                 ` Jonathan Nieder
2019-01-17  1:36                   ` SZEDER Gábor
2019-01-16  4:16                 ` Junio C Hamano
2018-12-20 16:24   ` [PATCH 2/5] .gitignore: ignore external debug symbols from GCC on macOS SZEDER Gábor
2018-12-20 16:24   ` [PATCH 3/5] travis-ci: don't be '--quiet' when running the tests SZEDER Gábor
2018-12-20 16:24   ` [PATCH 4/5] travis-ci: switch to Xcode 10.1 macOS image SZEDER Gábor
2018-12-20 16:24   ` [PATCH 5/5] travis-ci: build with the right compiler SZEDER Gábor
2019-01-03 16:01     ` Johannes Schindelin
2019-01-17  1:29   ` [PATCH v2 0/5] " SZEDER Gábor
2019-01-17  1:29     ` [PATCH v2 1/5] compat/obstack: fix -Wcast-function-type warnings SZEDER Gábor
2019-01-17  1:29     ` [PATCH v2 2/5] .gitignore: ignore external debug symbols from GCC on macOS SZEDER Gábor
2019-01-17  1:29     ` [PATCH v2 3/5] travis-ci: don't be '--quiet' when running the tests SZEDER Gábor
2019-01-17 13:28       ` Johannes Schindelin
2019-01-17  1:29     ` [PATCH v2 4/5] travis-ci: switch to Xcode 10.1 macOS image SZEDER Gábor
2019-01-17  1:29     ` [PATCH v2 5/5] travis-ci: build with the right compiler SZEDER Gábor
2019-01-17 13:44       ` Johannes Schindelin
2019-01-17 14:56         ` SZEDER Gábor
2019-01-18  8:40           ` Johannes Schindelin

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).