import importlib.util
from pathlib import Path

Import('env', 'arch', 'common')

if GetOption('extras') and arch == "comma_arm64":
  # build installers
  raylib_dir = Path(importlib.util.find_spec("raylib").submodule_search_locations[0]) / "install"
  raylib_env = env.Clone()
  raylib_env['CPPPATH'] += [str(raylib_dir / "include")]
  raylib_env['LIBPATH'] += [str(raylib_dir / "lib")]
  raylib_env['LINKFLAGS'].append('-Wl,-strip-debug')

  raylib_libs = common + ["raylib_comma", "GLESv2", "EGL", "gbm", "drm"]

  release = "release3"
  installers = [
    ("openpilot", release),
    ("openpilot_test", f"{release}-staging"),
    ("openpilot_nightly", "nightly"),
    ("openpilot_internal", "nightly-dev"),
  ]

  cont = raylib_env.Command("installer/continue_openpilot.o", "installer/continue_openpilot.sh",
                            "ld -r -b binary -o $TARGET $SOURCE")
  inter = raylib_env.Command("installer/inter_ttf.o", "installer/inter-ascii.ttf",
                             "ld -r -b binary -o $TARGET $SOURCE")
  inter_bold = raylib_env.Command("installer/inter_bold.o", "../assets/fonts/Inter-Bold.ttf",
                              "ld -r -b binary -o $TARGET $SOURCE")
  inter_light = raylib_env.Command("installer/inter_light.o", "../assets/fonts/Inter-Light.ttf",
                              "ld -r -b binary -o $TARGET $SOURCE")
  for name, branch in installers:
    d = {'BRANCH': f"'\"{branch}\"'"}
    if "internal" in name:
      d['INTERNAL'] = "1"

    obj = raylib_env.Object(f"installer/installers/installer_{name}.o", ["installer/installer.cc"], CPPDEFINES=d)
    f = raylib_env.Program(f"installer/installers/installer_{name}", [obj, cont, inter, inter_bold, inter_light], LIBS=raylib_libs)
    # keep installers small
    assert f[0].get_size() < 2500*1e3, f[0].get_size()
