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",
                "../../src/portable/st/stm32_fsdev/fsdev_common.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')
