import rtconfig
from building import *

cwd     = GetCurrentDir()
src     = Split("""
../../src/tusb.c
../../src/common/tusb_fifo.c
./tusb_rt_thread_port.c
""")
path = [cwd, cwd + "/../../src"]

LOCAL_CFLAGS = ''

# for device stack
if GetDepend(["PKG_TINYUSB_DEVICE_ENABLE"]):
    src += ["../../src/device/usbd.c",
            "../../src/device/usbd_control.c"]
    # BSP
    if GetDepend(["SOC_FAMILY_STM32"]):
        src += ["../../src/portable/synopsys/dwc2/dcd_dwc2.c",
                "../../src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c"]

    if GetDepend(["SOC_NRF52840"]):
        src += ["../../src/portable/nordic/nrf5x/dcd_nrf5x.c"]

    if GetDepend(["SOC_FAMILY_RENESAS"]):
        src += ["../../src/portable/renesas/rusb2/dcd_rusb2.c",
                "../../src/portable/renesas/rusb2/rusb2_common.c"]

    # Device class
    if GetDepend(["PKG_TINYUSB_DEVICE_UVC"]):
        src += ["../../src/class/video/video_device.c"]
    if GetDepend(["PKG_TINYUSB_DEVICE_CDC"]):
        src += ["../../src/class/cdc/cdc_device.c"]
    if GetDepend(["PKG_TINYUSB_DEVICE_MSC"]):
        src += ["../../src/class/msc/msc_device.c", "port/msc_device_port.c"]
    if GetDepend(["PKG_TINYUSB_DEVICE_MTP"]):
        src += ["../../src/class/mtp/mtp_device.c"]
    if GetDepend(["PKG_TINYUSB_DEVICE_HID"]):
        src += ["../../src/class/hid/hid_device.c"]

# for host stack
if GetDepend(["PKG_TINYUSB_HOST_ENABLE"]):
    src += ["../../src/host/usbh.c", "../../src/host/hub.c"]

    if GetDepend(["SOC_FAMILY_RENESAS"]):
        src += ["../../src/portable/renesas/rusb2/hcd_rusb2.c",
                "../../src/portable/renesas/rusb2/rusb2_common.c"]


if rtconfig.PLATFORM == 'gcc' or rtconfig.PLATFORM == 'armclang': # GCC or Keil AC6
    LOCAL_CFLAGS += ' -std=c99'
elif rtconfig.PLATFORM == 'armcc': # Keil AC5
    LOCAL_CFLAGS += ' --c99 --gnu'

group = DefineGroup('TinyUSB', src, depend = ['PKG_USING_TINYUSB'], CPPPATH = path, LOCAL_CFLAGS = LOCAL_CFLAGS)

Return('group')
