@ -118,8 +118,14 @@ def get_relative_files_list_from_dir(fromdir):
return paths
def platform_fix_name ( fname , compiler , env ) :
# canonicalize compiler
if compiler == ' clang-cl ' :
canonical_compiler = ' msvc '
else :
canonical_compiler = compiler
if ' ?lib ' in fname :
if mesonlib . for_windows ( env . is_cross_build ( ) , env ) and compiler == ' msvc ' :
if mesonlib . for_windows ( env . is_cross_build ( ) , env ) and canonical_c ompiler == ' msvc ' :
fname = re . sub ( r ' lib/ \ ?lib(.*) \ . ' , r ' bin/ \ 1. ' , fname )
fname = re . sub ( r ' / \ ?lib/ ' , r ' /bin/ ' , fname )
elif mesonlib . for_windows ( env . is_cross_build ( ) , env ) :
@ -141,17 +147,17 @@ def platform_fix_name(fname, compiler, env):
if fname . startswith ( ' ?msvc: ' ) :
fname = fname [ 6 : ]
if compiler != ' msvc ' :
if canonical_c ompiler != ' msvc ' :
return None
if fname . startswith ( ' ?gcc: ' ) :
fname = fname [ 5 : ]
if compiler == ' msvc ' :
if canonical_c ompiler == ' msvc ' :
return None
if fname . startswith ( ' ?cygwin: ' ) :
fname = fname [ 8 : ]
if compiler == ' msvc ' or not mesonlib . for_cygwin ( env . is_cross_build ( ) , env ) :
if not mesonlib . for_cygwin ( env . is_cross_build ( ) , env ) :
return None
if fname . endswith ( ' ?so ' ) :
@ -173,11 +179,14 @@ def platform_fix_name(fname, compiler, env):
else :
return fname [ : - 3 ] + ' .so '
if fname . endswith ( ' ?implib ' ) :
if mesonlib . for_windows ( env . is_cross_build ( ) , env ) and compiler == ' msvc ' :
return re . sub ( r ' /(?:lib|)([^/]*?) \ ?implib$ ' , r ' / \ 1.lib ' , fname )
if fname . endswith ( ' ?implib ' ) or fname . endswith ( ' ?implibempty ' ) :
if mesonlib . for_windows ( env . is_cross_build ( ) , env ) and canonical_compiler == ' msvc ' :
# only MSVC doesn't generate empty implibs
if fname . endswith ( ' ?implibempty ' ) and compiler == ' msvc ' :
return None
return re . sub ( r ' /(?:lib|)([^/]*?) \ ?implib(?:empty|)$ ' , r ' / \ 1.lib ' , fname )
elif mesonlib . for_windows ( env . is_cross_build ( ) , env ) or mesonlib . for_cygwin ( env . is_cross_build ( ) , env ) :
return fname [ : - 7 ] + ' .dll.a '
return re . sub ( r ' \ ?implib(?:empty|)$ ' , r ' .dll.a ' , fname )
else :
return None
@ -732,10 +741,6 @@ def detect_system_compiler():
raise RuntimeError ( " Could not find C compiler. " )
system_compiler = comp . get_id ( )
# canonicalize for platform_fix_name()
if system_compiler == ' clang-cl ' :
system_compiler = ' msvc '
if __name__ == ' __main__ ' :
parser = argparse . ArgumentParser ( description = " Run the test suite of Meson. " )
parser . add_argument ( ' extra_args ' , nargs = ' * ' ,