Merge pull request #6980 from fooishbar/cmake-windows-system-lib-deps
Fix CMake Windows system library deps
This commit is contained in:
commit
1100484148
|
@ -1411,7 +1411,9 @@ class CMakeDependency(ExternalDependency):
|
|||
'Valid targets are:\n{}'.format(name, list(self.traceparser.targets.keys())))
|
||||
|
||||
# Set dependencies with CMake targets
|
||||
reg_is_lib = re.compile(r'^(-l[a-zA-Z0-9_]+|-pthread)$')
|
||||
# recognise arguments we should pass directly to the linker
|
||||
reg_is_lib = re.compile(r'^(-l[a-zA-Z0-9_]+|-pthread|-delayload:[a-zA-Z0-9_\.]+|[a-zA-Z0-9_]+\.lib)$')
|
||||
reg_is_maybe_bare_lib = re.compile(r'^[a-zA-Z0-9_]+$')
|
||||
processed_targets = []
|
||||
incDirs = []
|
||||
compileDefinitions = []
|
||||
|
@ -1479,8 +1481,20 @@ class CMakeDependency(ExternalDependency):
|
|||
for j in otherDeps:
|
||||
if j in self.traceparser.targets:
|
||||
targets += [j]
|
||||
elif reg_is_lib.match(j) or os.path.exists(j):
|
||||
elif reg_is_lib.match(j):
|
||||
libraries += [j]
|
||||
elif os.path.isabs(j) and os.path.exists(j):
|
||||
libraries += [j]
|
||||
elif mesonlib.is_windows() and reg_is_maybe_bare_lib.match(j):
|
||||
# On Windows, CMake library dependencies can be passed as bare library names,
|
||||
# e.g. 'version' should translate into 'version.lib'. CMake brute-forces a
|
||||
# combination of prefix/suffix combinations to find the right library, however
|
||||
# as we do not have a compiler environment available to us, we cannot do the
|
||||
# same, but must assume any bare argument passed which is not also a CMake
|
||||
# target must be a system library we should try to link against
|
||||
libraries += ["{}.lib".format(j)]
|
||||
else:
|
||||
mlog.warning('CMake: Dependency', mlog.bold(j), 'for', mlog.bold(name), 'target', mlog.bold(self._original_module_name(curr)), 'was not found')
|
||||
|
||||
processed_targets += [curr]
|
||||
|
||||
|
|
Loading…
Reference in New Issue