cuda: disable thin archives when cuda is added through `add_languages('cuda')` later
This commit is contained in:
parent
8d9248716c
commit
7f2c6f644b
|
@ -502,13 +502,12 @@ class NinjaBackend(backends.Backend):
|
|||
# hence we disable them if 'cuda' is enabled globally. See also
|
||||
# - https://github.com/mesonbuild/meson/pull/9453
|
||||
# - https://github.com/mesonbuild/meson/issues/9479#issuecomment-953485040
|
||||
self._allow_thin_archives = PerMachine[bool](
|
||||
'cuda' not in self.environment.coredata.compilers.build,
|
||||
'cuda' not in self.environment.coredata.compilers.host) if self.environment else PerMachine[bool](True, True)
|
||||
if not self._allow_thin_archives.build:
|
||||
mlog.debug('cuda enabled globally, disabling thin archives for build machine, since nvcc/nvlink cannot handle thin archives natively')
|
||||
if not self._allow_thin_archives.host:
|
||||
mlog.debug('cuda enabled globally, disabling thin archives for host machine, since nvcc/nvlink cannot handle thin archives natively')
|
||||
self.allow_thin_archives = PerMachine[bool](True, True)
|
||||
if self.environment:
|
||||
for for_machine in MachineChoice:
|
||||
if 'cuda' in self.environment.coredata.compilers[for_machine]:
|
||||
mlog.debug('cuda enabled globally, disabling thin archives for {}, since nvcc/nvlink cannot handle thin archives natively'.format(for_machine))
|
||||
self.allow_thin_archives[for_machine] = False
|
||||
|
||||
def create_phony_target(self, dummy_outfile: str, rulename: str, phony_infilename: str) -> NinjaBuildElement:
|
||||
'''
|
||||
|
@ -3268,7 +3267,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
|
|||
if target.import_filename:
|
||||
commands += linker.gen_import_library_args(self.get_import_filename(target))
|
||||
elif isinstance(target, build.StaticLibrary):
|
||||
produce_thin_archive = self._allow_thin_archives[target.for_machine] and not target.should_install()
|
||||
produce_thin_archive = self.allow_thin_archives[target.for_machine] and not target.should_install()
|
||||
commands += linker.get_std_link_args(self.environment, produce_thin_archive)
|
||||
else:
|
||||
raise RuntimeError('Unknown build target type.')
|
||||
|
|
|
@ -1531,6 +1531,10 @@ class Interpreter(InterpreterBase, HoldableObject):
|
|||
continue
|
||||
else:
|
||||
raise
|
||||
if lang == 'cuda' and hasattr(self.backend, 'allow_thin_archives'):
|
||||
# see NinjaBackend.__init__() why we need to disable thin archives for cuda
|
||||
mlog.debug('added cuda as language, disabling thin archives for {}, since nvcc/nvlink cannot handle thin archives natively'.format(for_machine))
|
||||
self.backend.allow_thin_archives[for_machine] = False
|
||||
else:
|
||||
# update new values from commandline, if it applies
|
||||
self.coredata.process_compiler_options(lang, comp, self.environment, self.subproject)
|
||||
|
|
Loading…
Reference in New Issue