Revert "Naturally use env vars a bit more to match Autoconf"

This reverts commit 097dfc085e.
pull/6798/merge
Jussi Pakkanen 5 years ago
parent 097dfc085e
commit 7924e5f9c2
  1. 15
      docs/markdown/howtox.md
  2. 10
      docs/markdown/snippets/env_vars_and_cross.md
  3. 4
      mesonbuild/envconfig.py
  4. 5
      run_unittests.py

@ -12,16 +12,15 @@ When first running Meson, set it in an environment variable.
$ CC=mycc meson <options> $ CC=mycc meson <options>
``` ```
Note that environment variables like `CC` only refer to the host platform in Note that environment variables like `CC` only works in native builds. The `CC`
cross builds. That is, the `CC` refers compiler used to compile programs that refers to the compiler for the host platform, that is the compiler used to
run on the machine we will eventually install the project on. The compiler used compile programs that run on the machine we will eventually install the project
to build things that run on the machine we do the building can be specified on. The compiler used to build things that run on the machine we do the
with `CC_FOR_BUILD`. You can always used `CC_FOR_BUILD`, but for native builds building can be specified with `CC_FOR_BUILD`. You can use it in cross builds.
it is less well known because Meson (and Autotools) will default `CC_FOR_BUILD`
with `CC`.
Note that environment variables are never the idiomatic way to do anything with Note that environment variables are never the idiomatic way to do anything with
Meson, however. It is better to use the native and cross files. Meson, however. It is better to use the native and cross files. And the tools
for the host platform in cross builds can only be specified with a cross file.
There is a table of all environment variables supported [Here](Reference-tables.md#compiler-and-linker-selection-variables) There is a table of all environment variables supported [Here](Reference-tables.md#compiler-and-linker-selection-variables)

@ -2,11 +2,11 @@
Previously in Meson, variables like `CC` effected both the host and build Previously in Meson, variables like `CC` effected both the host and build
platforms for native builds, but the just the build platform for cross builds. platforms for native builds, but the just the build platform for cross builds.
Now `CC` always effects the host platform, and `CC_FOR_BUILD` always affects Now `CC_FOR_BUILD` is used for the build platform in cross builds.
the build platform, with `CC` also effecting the build platform for native
builds only when `CC_FOR_BUILD` is not defined.
This old behavior is inconsistent with the way Autotools works, which This old behavior is inconsistent with the way Autotools works, which
undermines the purpose of distro-integration that is the only reason undermines the purpose of distro-integration that is the only reason
environment variables are supported at all in Meson. The new behavior is environment variables are supported at all in Meson. The new behavior is not
consistent. quite the same, but doesn't conflict: meson doesn't always repond to an
environment when Autoconf would, but when it does it interprets it as Autotools
would.

@ -119,9 +119,9 @@ def get_env_var_pair(for_machine: MachineChoice,
# compiling we fall back on the unprefixed host version. This # compiling we fall back on the unprefixed host version. This
# allows native builds to never need to worry about the 'BUILD_*' # allows native builds to never need to worry about the 'BUILD_*'
# ones. # ones.
[var_name + '_FOR_BUILD'] + ([] if is_cross else [var_name]), ([var_name + '_FOR_BUILD'] if is_cross else [var_name]),
# Always just the unprefixed host verions # Always just the unprefixed host verions
[var_name], ([] if is_cross else [var_name]),
)[for_machine] )[for_machine]
for var in candidates: for var in candidates:
value = os.environ.get(var) value = os.environ.get(var)

@ -6338,10 +6338,11 @@ c = ['{0}']
testdir = os.path.join(self.unit_test_dir, '61 identity cross') testdir = os.path.join(self.unit_test_dir, '61 identity cross')
env = { env = {
'CC_FOR_BUILD': '"' + os.path.join(testdir, 'build_wrapper.py') + '"', 'CC_FOR_BUILD': '"' + os.path.join(testdir, 'build_wrapper.py') + '"',
'CC': '"' + os.path.join(testdir, 'host_wrapper.py') + '"',
} }
crossfile = tempfile.NamedTemporaryFile(mode='w') crossfile = tempfile.NamedTemporaryFile(mode='w')
crossfile.write('') crossfile.write('''[binaries]
c = ['{0}']
'''.format(os.path.join(testdir, 'host_wrapper.py')))
crossfile.flush() crossfile.flush()
self.meson_cross_file = crossfile.name self.meson_cross_file = crossfile.name
# TODO should someday be explicit about build platform only here # TODO should someday be explicit about build platform only here

Loading…
Cancel
Save