from fbt.util import GLOB_FILE_EXCLUSION

Import("env")

env.Append(
    CPPPATH=[
        "#/lib/fnv1a_hash",
        "#/lib/heatshrink",
        "#/lib/micro-ecc",
        "#/lib/nanopb",
        "#/lib/u8g2",
    ],
    CPPDEFINES=[
        "PB_ENABLE_MALLOC",
    ],
    SDK_HEADERS=[
        File("micro-ecc/uECC.h"),
    ],
)


libenv = env.Clone(FW_LIB_NAME="misc")
libenv.ApplyLibFlags()

sources = []

libs_recurse = [
    "micro-ecc",
    "u8g2",
    "update_util",
]

for lib in libs_recurse:
    sources += libenv.GlobRecursive("*.c*", lib)

libs_plain = [
    "nanopb",
]

for lib in libs_plain:
    sources += Glob(
        lib + "/*.c*",
        exclude=GLOB_FILE_EXCLUSION,
        source=True,
    )

sources += Glob(
    "heatshrink/heatshrink_*.c*",
    exclude=GLOB_FILE_EXCLUSION,
    source=True,
)

lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
libenv.Install("${LIB_DIST_DIR}", lib)
Return("lib")