diff options
-rw-r--r-- | mesonbuild/environment.py | 12 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 5 |
2 files changed, 13 insertions, 4 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 4ee7393..16af0d1 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -701,7 +701,7 @@ class Environment(): return self.coredata.get_builtin_option('datadir') -def get_args_from_envvars(lang): +def get_args_from_envvars(lang, compiler_is_linker): """ @lang: Language to fetch environment flags for @@ -727,15 +727,21 @@ def get_args_from_envvars(lang): link_flags = os.environ.get('LDFLAGS', '') log_var('LDFLAGS', link_flags) link_flags = link_flags.split() + if compiler_is_linker: + # When the compiler is used as a wrapper around the linker (such as + # with GCC and Clang), the compile flags can be needed while linking + # too. This is also what Autotools does. However, we don't want to do + # this when the linker is stand-alone such as with MSVC C/C++, etc. + link_flags = compile_flags + link_flags # Pre-processof rlags (not for fortran) preproc_flags = '' if lang in ('c', 'cpp', 'objc', 'objcpp'): preproc_flags = os.environ.get('CPPFLAGS', '') log_var('CPPFLAGS', preproc_flags) - preproc_flags = preproc_flags.split() + compile_flags += preproc_flags.split() - return (compile_flags + preproc_flags, link_flags + compile_flags) + return (compile_flags, link_flags) class CrossBuildInfo(): def __init__(self, filename): diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 9c2a74c..8645b68 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1619,8 +1619,11 @@ class Interpreter(): else: raise mlog.log('Native %s compiler: ' % lang, mlog.bold(' '.join(comp.get_exelist())), ' (%s %s)' % (comp.id, comp.version), sep='') + compiler_is_linker = False + if hasattr(comp, 'get_linker_exelist'): + compiler_is_linker = (comp.get_exelist() == comp.get_linker_exelist()) if not comp.get_language() in self.coredata.external_args: - (ext_compile_args, ext_link_args) = environment.get_args_from_envvars(comp.get_language()) + (ext_compile_args, ext_link_args) = environment.get_args_from_envvars(comp.get_language(), compiler_is_linker) self.coredata.external_args[comp.get_language()] = ext_compile_args self.coredata.external_link_args[comp.get_language()] = ext_link_args self.build.add_compiler(comp) |