import os
import sh
from waflib import Logs


def build(bld):
    qemu_spi_cooker_env = bld.all_envs['32bit'].derive()
    output = bld.path.get_bld().parent.parent.make_node('qemu_spi_cooker')

    sources = ["../../src/fw/services/normal/filesystem/flash_translation.c",
               "../../src/fw/services/normal/filesystem/pfs.c",
               "../../src/fw/flash_region/filesystem_regions.c",
               "../../tests/fakes/fake_rtc.c",
               "../../tests/fakes/fake_spi_flash.c",
               "../../tests/stubs/stubs_clar.c",
               "../../src/libutil/list.c",
               "../../src/fw/util/crc8.c",
               "../../src/fw/util/util_platform.c",
               "../../src/fw/util/legacy_checksum.c"]

    sources = [bld.path.find_node(s) for s in sources]
    sources.extend(bld.path.ant_glob('src/*.c'))

    includes = ["../clar",
                "../../tests/stubs",
                "../../tests/fakes",
                "../../tests/test_includes",
                "../../tests/overrides/default/",
                "../../src/include",
                "../../src/fw",
                "../../src/libos/include",
                "../../src/libutil/includes",
                "../../src/fw/util/time",
                "../../src/fw/vendor/FreeRTOS/Source/include",
                "../../src/fw/vendor/FreeRTOS/Source/portable/GCC/ARM_CM3_PEBBLE"]

    includes = [bld.path.find_node(i).abspath() for i in includes]

    # # time_t is defined in sys/types in newlib, and time.h on recent Linux
    # # so just force the defined type for testing time
    # qemu_spi_cooker_env.CFLAGS.append('-Dtime_t=__SYSCALL_SLONG_TYPE')

    platform_define = "PLATFORM_%s" % bld.get_platform_name().upper()

    bld.program(source=sources,
                target=output,
                includes=includes,
                defines=['UNITTEST', 'DUMA_DISABLED', 'PBL_COLOR', 'PBL_RECT', platform_define],
                cflags='-Wno-format-security',
                env=qemu_spi_cooker_env)


# vim:filetype=python