# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

zephyr_library()
zephyr_library_include_directories(${CMAKE_CURRENT_SOURCE_DIR})

zephyr_library_sources(
	usbd_device.c
	usbd_desc.c
	usbd_ch9.c
	usbd_core.c
	usbd_init.c
	usbd_config.c
	usbd_class.c
	usbd_interface.c
	usbd_endpoint.c
	usbd_msg.c
)

add_subdirectory(app)

zephyr_library_sources_ifdef(
	CONFIG_USBD_SHELL
	usbd_shell.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_LOOPBACK_CLASS
	class/loopback.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_CDC_ACM_CLASS
	class/usbd_cdc_acm.c
)

zephyr_include_directories_ifdef(
	CONFIG_USBD_CDC_ECM_CLASS
	${ZEPHYR_BASE}/drivers/ethernet
)
zephyr_library_sources_ifdef(
	CONFIG_USBD_CDC_ECM_CLASS
	class/usbd_cdc_ecm.c
)

zephyr_include_directories_ifdef(
	CONFIG_USBD_CDC_NCM_CLASS
	${ZEPHYR_BASE}/drivers/ethernet
)
zephyr_library_sources_ifdef(
	CONFIG_USBD_CDC_NCM_CLASS
	class/usbd_cdc_ncm.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_BT_HCI
	class/bt_hci.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_MSC_CLASS
	class/usbd_msc.c
	class/usbd_msc_scsi.c
)

zephyr_linker_sources_ifdef(
	CONFIG_USBD_MSC_CLASS
	SECTIONS class/usbd_msc.ld
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_AUDIO2_CLASS
	class/usbd_uac2.c
)

zephyr_library_sources_ifdef(
  CONFIG_USBD_MIDI2_CLASS
  class/usbd_midi2.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_VIDEO_CLASS
	class/usbd_uvc.c
)

zephyr_library_sources_ifdef(
	CONFIG_USBD_HID_SUPPORT
	class/usbd_hid.c
	class/usbd_hid_api.c
)

zephyr_library_sources_ifdef(
  CONFIG_USBD_DFU
  class/usbd_dfu.c
)

zephyr_library_sources_ifdef(
  CONFIG_USBD_DFU_FLASH
  class/usbd_dfu_flash.c
)

zephyr_linker_sources_ifdef(
  CONFIG_USBD_DFU
  SECTIONS class/usbd_dfu.ld
)

zephyr_linker_sources(DATA_SECTIONS usbd_data.ld)
