@@ -885,15 +885,36 @@ def __init__(self, exelist: T.List[str],
885885        super ().__init__ (exelist , for_machine , prefix_arg , always_args , version = version )
886886
887887        # Some targets don't seem to support this argument (windows, wasm, ...) 
888-         _ , _ , e  =  mesonlib .Popen_safe (self .exelist  +  always_args  +  self ._apply_prefix ('--allow-shlib-undefined' ))
889-         # Versions < 9 do not have a quoted argument 
890-         self .has_allow_shlib_undefined  =  ('unknown argument: --allow-shlib-undefined'  not  in   e ) and  ("unknown argument: '--allow-shlib-undefined'"  not  in   e )
888+         self .has_allow_shlib_undefined  =  self ._supports_flag ('--allow-shlib-undefined' , always_args )
889+         # These aren't supported by TI Arm Clang 
890+         self .has_as_needed  =  self ._supports_flag ('--as-needed' , always_args )
891+         self .has_no_undefined  =  self ._supports_flag ('--no-undefined' , always_args )
892+ 
893+     def  _supports_flag (self , flag : str , always_args : T .List [str ]) ->  bool :
894+         _ , _ , e  =  mesonlib .Popen_safe (self .exelist  +  always_args  +  self ._apply_prefix (flag ))
895+         return  (
896+             # Versions < 9 do not have a quoted argument 
897+             (f'unknown argument: { flag }  '  not  in   e ) and 
898+             (f"unknown argument: '{ flag }  '"  not  in   e ) and 
899+             # TI Arm Clang uses a different message 
900+             (f'invalid option:  { flag }  '  not  in   e )
901+         )
891902
892903    def  get_allow_undefined_args (self ) ->  T .List [str ]:
893904        if  self .has_allow_shlib_undefined :
894905            return  self ._apply_prefix ('--allow-shlib-undefined' )
895906        return  []
896907
908+     def  get_asneeded_args (self ) ->  T .List [str ]:
909+         if  self .has_as_needed :
910+             return  self ._apply_prefix ('--as-needed' )
911+         return  []
912+ 
913+     def  no_undefined_args (self ) ->  T .List [str ]:
914+         if  self .has_no_undefined :
915+             return  self ._apply_prefix ('--no-undefined' )
916+         return  []
917+ 
897918    def  get_thinlto_cache_args (self , path : str ) ->  T .List [str ]:
898919        return  ['-Wl,--thinlto-cache-dir='  +  path ]
899920
0 commit comments