Import('env', 'arch', 'cereal', 'messaging', 'common', 'gpucommon', 'visionipc', 'USE_WEBCAM', 'QCOM_REPLAY')

libs = ['m', 'pthread', common, 'jpeg', 'OpenCL', cereal, messaging, 'zmq', 'capnp', 'kj', visionipc, gpucommon]

if arch == "aarch64":
  libs += ['gsl', 'CB', 'adreno_utils', 'EGL', 'GLESv3', 'cutils', 'ui']
  if QCOM_REPLAY:
    cameras = ['cameras/camera_frame_stream.cc']
  else:
    cameras = ['cameras/camera_qcom.cc']
elif arch == "larch64":
  libs += ['atomic']
  cameras = ['cameras/camera_qcom2.cc']
else:
  if USE_WEBCAM:
    libs += ['opencv_core', 'opencv_highgui', 'opencv_imgproc', 'opencv_videoio']
    cameras = ['cameras/camera_webcam.cc']
    env = env.Clone()
    env.Append(CXXFLAGS = '-DWEBCAM')
    env.Append(CFLAGS = '-DWEBCAM')
    env.Append(CPPPATH = '/usr/local/include/opencv4')
  else:
    cameras = ['cameras/camera_frame_stream.cc']

  if arch == "Darwin":
    del libs[libs.index('OpenCL')]
    del libs[libs.index(gpucommon)][gpucommon.index('GL')]
    env = env.Clone()
    env['FRAMEWORKS'] = ['OpenCL', 'OpenGL']

env.Program('camerad', [
    'main.cc',
    'cameras/camera_common.cc',
    'transforms/rgb_to_yuv.cc',
    'imgproc/utils.cc',
    cameras,
  ], LIBS=libs)

if GetOption("test"):
  env.Program('test/ae_gray_test', [
      'test/ae_gray_test.cc',
      'cameras/camera_common.cc',
      'transforms/rgb_to_yuv.cc',
    ], LIBS=libs)
