code: def compile_tilebus(files, env, outdir=None, header_only=False):
      
  
      if outdir is None:
          dirs = env["ARCH"].build_dirs()
          outdir = dirs['build']
  
      cmdmap_c_path = os.path.join(outdir, 'command_map_c.c')
      cmdmap_h_path = os.path.join(outdir, 'command_map_c.h')
      config_c_path = os.path.join(outdir, 'config_variables_c.c')
      config_h_path = os.path.join(outdir, 'config_variables_c.h')
  
      if header_only:
          return env.Command([cmdmap_h_path, config_h_path], files,
                             action=env.Action(tb_h_file_creation, "Creating header files from TileBus definitions"))
      else:
          env['MIBFILE'] = '#' + cmdmap_c_path
          return env.Command([cmdmap_c_path, cmdmap_h_path, config_c_path, config_h_path], files,
                             action=env.Action(tb_c_file_creation, "Compiling TileBus commands and config variables"))
docs: Given a path to a *.cdb file, process it and generate c tables and/or headers containing the information.