parameters: (self, waf_platform, waf_configuration, cur_tg, include_list, defines_list, uselib_cache)
docstring: Method to recurse a taskgen item's use dependencies and build up a unique include_list for include paths
  
          :param waf_platform:    The current waf_platform
          :param cur_tg:          The taskgen to inspect
          :param include_list:    The includes list to populate
          :param defines_list:    The defines list to populate
          :param uselib_cache:    uselib cache to maintain to prevent unnecessary processing
docstring_summary: Method to recurse a taskgen item's use dependencies and build up a unique include_list for include paths
docstring_tokens: Method to recurse a taskgen item s use dependencies and build up a unique include_list for include paths
function: def recurse_use_includes_and_defines(self, waf_platform, waf_configuration, cur_tg, include_list, defines_list, uselib_cache):
          """
          Method to recurse a taskgen item's use dependencies and build up a unique include_list for include paths
  
          :param waf_platform:    The current waf_platform
          :param cur_tg:          The taskgen to inspect
          :param include_list:    The includes list to populate
          :param defines_list:    The defines list to populate
          :param uselib_cache:    uselib cache to maintain to prevent unnecessary processing
          """
          visited_nodes = set()
  
          def _recurse(tg):
  
              # Prevent infinite loops from possible cyclic dependencies
              visited_nodes.add(tg.name)
  
              # Make sure that a list of strings is provided as the export includes
              check_export_includes = Utils.to_list(getattr(tg, 'export_includes', []))
  
              # Make sure the export includes is not empty before processing
              if check_export_includes:
                  for raw_export_include in check_export_includes:
                      if (isinstance(raw_export_include, Node.Node)):
                          abs_export_include_path = raw_export_include.abspath()
                          append_to_unique_list(include_list, abs_export_include_path)
                      elif os.path.isabs(raw_export_include):
                          append_to_unique_list(include_list, raw_export_include)
                      else:
                          abs_export_include_path = tg.path.make_node(raw_export_include).abspath()
                          append_to_unique_list(include_list, abs_export_include_path)
  
              # Include export defines if provided
              if hasattr(tg, 'export_defines'):
                  check_export_defines = Utils.to_list(tg.export_defines)
                  if len(check_export_defines) > 0:
                      for export_define in check_export_defines:
                          append_to_unique_list(defines_list, export_define)
  
              # Perform additional includes and defines analysis on uselibs
              self.process_uselib_include_and_defines(waf_platform, waf_configuration, cur_tg, include_list, defines_list,uselib_cache)
  
              # Recurse into the 'use' for this taskgen if possible
              if not hasattr(tg, 'use') or len(tg.use) == 0:
                  return
              for use_module in tg.use:
                  if use_module in self.ctx.task_gen_cache_names:
                      use_tg = self.ctx.task_gen_cache_names[use_module]
                      if use_tg.name not in visited_nodes:
                          _recurse(use_tg)
                          visited_nodes.add(use_tg.name)
  
          _recurse(cur_tg)
function_tokens: def recurse_use_includes_and_defines ( self , waf_platform , waf_configuration , cur_tg , include_list , defines_list , uselib_cache ) : visited_nodes = set ( ) def _recurse ( tg ) : # Prevent infinite loops from possible cyclic dependencies visited_nodes . add ( tg . name ) # Make sure that a list of strings is provided as the export includes check_export_includes = Utils . to_list ( getattr ( tg , 'export_includes' , [ ] ) ) # Make sure the export includes is not empty before processing if check_export_includes : for raw_export_include in check_export_includes : if ( isinstance ( raw_export_include , Node . Node ) ) : abs_export_include_path = raw_export_include . abspath ( ) append_to_unique_list ( include_list , abs_export_include_path ) elif os . path . isabs ( raw_export_include ) : append_to_unique_list ( include_list , raw_export_include ) else : abs_export_include_path = tg . path . make_node ( raw_export_include ) . abspath ( ) append_to_unique_list ( include_list , abs_export_include_path ) # Include export defines if provided if hasattr ( tg , 'export_defines' ) : check_export_defines = Utils . to_list ( tg . export_defines ) if len ( check_export_defines ) > 0 : for export_define in check_export_defines : append_to_unique_list ( defines_list , export_define ) # Perform additional includes and defines analysis on uselibs self . process_uselib_include_and_defines ( waf_platform , waf_configuration , cur_tg , include_list , defines_list , uselib_cache ) # Recurse into the 'use' for this taskgen if possible if not hasattr ( tg , 'use' ) or len ( tg . use ) == 0 : return for use_module in tg . use : if use_module in self . ctx . task_gen_cache_names : use_tg = self . ctx . task_gen_cache_names [ use_module ] if use_tg . name not in visited_nodes : _recurse ( use_tg ) visited_nodes . add ( use_tg . name ) _recurse ( cur_tg )