  SConscript(['selfdrive/locationd/SConscript'])
  SConscript(['selfdrive/sensord/SConscript'])
  SConscript(['selfdrive/ui/SConscript'])
  
  if GetOption('test'):
    SConscript('panda/tests/safety/SConscript')
  
  external_sconscript = GetOption('external_sconscript')
  if external_sconscript:
 
</s> remove selfdrive/ui/replay/*.cc
selfdrive/ui/replay/*.h
 </s> add tools/replay/*.cc
tools/replay/*.h </s> remove    :project: selfdrive_ui_replay
 </s> add    :project: tools_replay </s> remove                         ./selfdrive/ui/replay/tests/test_replay && \
 </s> add                         ./tools/replay/tests/test_replay && \
SConscript(['tools/replay/SConscript'])

  SConscript(['selfdrive/locationd/SConscript'])
  SConscript(['selfdrive/sensord/SConscript'])
  SConscript(['selfdrive/ui/SConscript'])
  
SConscript(['tools/replay/SConscript'])

  if GetOption('test'):
    SConscript('panda/tests/safety/SConscript')
  
  external_sconscript = GetOption('external_sconscript')
  if external_sconscript:
keep keep keep add keep keep keep keep keep
 move replay from selfdrive/ui/replay to tools/replay (#24971)

* mv to tools/replay

* change folder

* add .gitignore

* fix build doc

* disable warning

* enable warning after build

* build qt/util.cc qt/api.cc to library

* cleanup 
SConstruct