@ -620,8 +620,8 @@ class BuildTarget(Target):
self . is_unity = unity_opt == ' on ' or ( unity_opt == ' subprojects ' and subproject != ' ' )
self . is_unity = unity_opt == ' on ' or ( unity_opt == ' subprojects ' and subproject != ' ' )
self . environment = environment
self . environment = environment
self . compilers = OrderedDict ( ) # type: OrderedDict[str, Compiler]
self . compilers = OrderedDict ( ) # type: OrderedDict[str, Compiler]
self . objects = [ ]
self . objects : T . List [ T . Union [ str , ' File ' , ' ExtractedObjects ' ] ] = [ ]
self . external_deps = [ ]
self . external_deps : T . List [ dependencies . Dependency ] = [ ]
self . include_dirs = [ ]
self . include_dirs = [ ]
self . link_language = kwargs . get ( ' link_language ' )
self . link_language = kwargs . get ( ' link_language ' )
self . link_targets : T . List [ BuildTarget ] = [ ]
self . link_targets : T . List [ BuildTarget ] = [ ]
@ -635,10 +635,10 @@ class BuildTarget(Target):
# as Vala which generates .vapi and .h besides the compiled output.
# as Vala which generates .vapi and .h besides the compiled output.
self . outputs = [ self . filename ]
self . outputs = [ self . filename ]
self . need_install = False
self . need_install = False
self . pch = { }
self . pch : T . Dict [ str , T . List [ str ] ] = { }
self . extra_args : T . Dict [ str , T . List [ ' FileOrString ' ] ] = { }
self . extra_args : T . Dict [ str , T . List [ ' FileOrString ' ] ] = { }
self . sources : T . List [ File ] = [ ]
self . sources : T . List [ File ] = [ ]
self . generated : T . List [ T . Union [ GeneratedList , CustomTarget , CustomTargetIndex ] ] = [ ]
self . generated : T . List [ ' GeneratedTypes ' ] = [ ]
self . d_features = { }
self . d_features = { }
self . pic = False
self . pic = False
self . pie = False
self . pie = False
@ -882,7 +882,7 @@ class BuildTarget(Target):
self . kwargs [ t ] = listify ( self . kwargs [ t ] , flatten = True )
self . kwargs [ t ] = listify ( self . kwargs [ t ] , flatten = True )
def extract_objects ( self , srclist : T . List [ FileOrString ] ) - > ExtractedObjects :
def extract_objects ( self , srclist : T . List [ FileOrString ] ) - > ExtractedObjects :
obj_src = [ ]
obj_src : T . List [ ' File ' ] = [ ]
sources_set = set ( self . sources )
sources_set = set ( self . sources )
for src in srclist :
for src in srclist :
if isinstance ( src , str ) :
if isinstance ( src , str ) :
@ -940,7 +940,7 @@ class BuildTarget(Target):
def get_custom_install_dir ( self ) :
def get_custom_install_dir ( self ) :
return self . install_dir
return self . install_dir
def get_custom_install_mode ( self ) :
def get_custom_install_mode ( self ) - > T . Optional [ ' FileMode ' ] :
return self . install_mode
return self . install_mode
def process_kwargs ( self , kwargs , environment ) :
def process_kwargs ( self , kwargs , environment ) :
@ -1140,7 +1140,7 @@ class BuildTarget(Target):
raise InvalidArguments ( f ' Argument { arg } to { self . name !r} must be boolean ' )
raise InvalidArguments ( f ' Argument { arg } to { self . name !r} must be boolean ' )
return val
return val
def get_filename ( self ) :
def get_filename ( self ) - > str :
return self . filename
return self . filename
def get_outputs ( self ) - > T . List [ str ] :
def get_outputs ( self ) - > T . List [ str ] :
@ -1167,23 +1167,20 @@ class BuildTarget(Target):
def get_sources ( self ) :
def get_sources ( self ) :
return self . sources
return self . sources
def get_objects ( self ) :
def get_objects ( self ) - > T . List [ T . Union [ str , ' File ' , ' ExtractedObjects ' ] ] :
return self . objects
return self . objects
def get_generated_sources ( self ) :
def get_generated_sources ( self ) - > T . List [ ' GeneratedTypes ' ] :
return self . generated
return self . generated
def should_install ( self ) - > bool :
def should_install ( self ) - > bool :
return self . need_install
return self . need_install
def has_pch ( self ) :
def has_pch ( self ) - > bool :
return len ( self . pch ) > 0
return boo l( self . pch )
def get_pch ( self , language ) :
def get_pch ( self , language : str ) - > T . List [ str ] :
try :
return self . pch . get ( language , [ ] )
return self . pch [ language ]
except KeyError :
return [ ]
def get_include_dirs ( self ) :
def get_include_dirs ( self ) :
return self . include_dirs
return self . include_dirs
@ -1233,10 +1230,10 @@ You probably should put it in link_with instead.''')
' declare_dependency()). ' )
' declare_dependency()). ' )
self . added_deps . add ( dep )
self . added_deps . add ( dep )
def get_external_deps ( self ) :
def get_external_deps ( self ) - > T . List [ dependencies . Dependency ] :
return self . external_deps
return self . external_deps
def is_internal ( self ) :
def is_internal ( self ) - > bool :
return isinstance ( self , StaticLibrary ) and not self . need_install
return isinstance ( self , StaticLibrary ) and not self . need_install
def link ( self , target ) :
def link ( self , target ) :
@ -1295,14 +1292,14 @@ You probably should put it in link_with instead.''')
self . objects + = t . extract_all_objects_recurse ( )
self . objects + = t . extract_all_objects_recurse ( )
self . link_whole_targets . append ( t )
self . link_whole_targets . append ( t )
def extract_all_objects_recurse ( self ) :
def extract_all_objects_recurse ( self ) - > T . List [ T . Union [ str , ' ExtractedObjects ' ] ] :
objs = [ self . extract_all_objects ( ) ]
objs = [ self . extract_all_objects ( ) ]
for t in self . link_targets :
for t in self . link_targets :
if t . is_internal ( ) :
if t . is_internal ( ) :
objs + = t . extract_all_objects_recurse ( )
objs + = t . extract_all_objects_recurse ( )
return objs
return objs
def add_pch ( self , language , pchlist ) :
def add_pch ( self , language : str , pchlist : T . List [ str ] ) - > None :
if not pchlist :
if not pchlist :
return
return
elif len ( pchlist ) == 1 :
elif len ( pchlist ) == 1 :
@ -1403,7 +1400,7 @@ You probably should put it in link_with instead.''')
return prelinker
return prelinker
raise MesonException ( f ' Could not determine prelinker for { self . name !r} . ' )
raise MesonException ( f ' Could not determine prelinker for { self . name !r} . ' )
def get_clink_dynamic_linker_and_stdlibs ( self ) :
def get_clink_dynamic_linker_and_stdlibs ( self ) - > T . Tuple [ ' Compiler ' , T . List [ str ] ] :
'''
'''
We use the order of languages in ` clink_langs ` to determine which
We use the order of languages in ` clink_langs ` to determine which
linker to use in case the target has sources compiled with multiple
linker to use in case the target has sources compiled with multiple
@ -1434,8 +1431,8 @@ You probably should put it in link_with instead.''')
f ' Could not get a dynamic linker for build target { self . name !r} . '
f ' Could not get a dynamic linker for build target { self . name !r} . '
f ' Requires a linker for language " { l } " , but that is not '
f ' Requires a linker for language " { l } " , but that is not '
' a project language. ' )
' a project language. ' )
stdlib_args = [ ]
stdlib_args : T . List [ str ] = [ ]
added_languages = set ( )
added_languages : T . Set [ str ] = set ( )
for dl in itertools . chain ( self . compilers , dep_langs ) :
for dl in itertools . chain ( self . compilers , dep_langs ) :
if dl != linker . language :
if dl != linker . language :
stdlib_args + = all_compilers [ dl ] . language_stdlib_only_link_flags ( )
stdlib_args + = all_compilers [ dl ] . language_stdlib_only_link_flags ( )
@ -1457,7 +1454,7 @@ You probably should put it in link_with instead.''')
return True
return True
return False
return False
def get_using_msvc ( self ) :
def get_using_msvc ( self ) - > bool :
'''
'''
Check if the dynamic linker is MSVC . Used by Executable , StaticLibrary ,
Check if the dynamic linker is MSVC . Used by Executable , StaticLibrary ,
and SharedLibrary for deciding when to use MSVC - specific file naming
and SharedLibrary for deciding when to use MSVC - specific file naming