D: Fix dub dependency handling on Windows
@@ -870,8 +870,14 @@ class DubDependency(ExternalDependency):
mlog.debug('Determining dependency {!r} with DUB executable '
'{!r}'.format(name, self.dubbin.get_path()))
+ # we need to know the correct architecture on Windows
+ if self.compiler.is_64:
+ arch = 'x86_64'
+ else:
+ arch = 'x86'
+
# Ask dub for the package
- ret, res = self._call_dubbin(['describe', name])
+ ret, res = self._call_dubbin(['describe', name, '--arch=' + arch])
if ret != 0:
self.is_found = False
@@ -925,15 +931,10 @@ class DubDependency(ExternalDependency):
def add_lib_args(field_name, target):
if field_name in target['buildSettings']:
- if os.name is 'nt':
- for lib in target['buildSettings'][field_name]:
- if lib not in target['buildSettings'][field_name]:
- libs.append(lib)
- # TODO: Use CCompiler.find_library to find the path of the .lib files
- else: # posix and everything else
for lib in target['buildSettings'][field_name]:
if lib not in libs:
libs.append(lib)
+ if os.name is not 'nt':
pkgdep = PkgConfigDependency(lib, environment, {'required': 'true', 'silent': 'true'})
for arg in pkgdep.get_compile_args():
self.compile_args.append(arg)
@@ -979,7 +980,7 @@ class DubDependency(ExternalDependency):
d_ver = '' # gdc
# Ex.: library-debug-linux.posix-x86_64-ldc_2081-EF934983A3319F8F8FF2F0E107A363BA
- build_name = 'library-{}-{}.{}-{}-{}_{}'.format(j['buildType'], j['platform'][0], j['platform'][1], platform.machine(), comp, d_ver)
+ build_name = 'library-{}-{}-{}-{}_{}'.format(j['buildType'], '.'.join(j['platform']), j['architecture'][0], comp, d_ver)
for entry in os.listdir(os.path.join(module_build_path, '.dub', 'build')):
if entry.startswith(build_name):
for file in os.listdir(os.path.join(module_build_path, '.dub', 'build', entry)):
