1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00
RIOT/sys/Makefile.dep
Marian Buschsieweke 276ad5716a
sys/net/gnrc/netif: allow checking if a netdev is legacy or new API
A if `netdev_driver_t::confirm_send()` is provided, it provides the
new netdev API. However, detecting the API at runtime and handling
both API styles comes at a cost. This can be optimized in case only
new or only old style netdevs are in use.

To do so, this adds the pseudo modules `netdev_legacy_api` and
`netdev_new_api`. As right now no netdev actually implements the new
API, all netdevs pull in `netdev_legacy_api`. If `netdev_legacy_api` is
in used but `netdev_new_api` is not, we can safely assume at compile
time that only legacy netdevs are in use. Similar, if only
`netdev_new_api` is used, only support for the new API is needed. Only
when both are in use, run time checks are needed.

This provides two helper function to check for a netif if the
corresponding netdev implements the old or the new API. (With one
being the inverse of the other.) They are suitable for constant folding
when only new or only legacy devices are in use. Consequently, dead
branches should be eliminated by the optimizer.
2022-08-17 12:56:07 +02:00

1010 lines
22 KiB
Makefile

ifneq (,$(filter arduino,$(USEMODULE)))
FEATURES_OPTIONAL += periph_adc
FEATURES_OPTIONAL += periph_i2c
FEATURES_OPTIONAL += periph_spi
FEATURES_REQUIRED += arduino
FEATURES_REQUIRED += cpp
FEATURES_REQUIRED += periph_gpio
FEATURES_REQUIRED += periph_uart
USEMODULE += arduino_sketches
USEMODULE += fmt
USEMODULE += ztimer_usec
USEMODULE += ztimer_msec
ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
USEMODULE += arduino_serial_stdio
endif
endif
ifneq (,$(filter arduino_pwm,$(FEATURES_USED)))
FEATURES_REQUIRED += periph_pwm
endif
# cannot be moved to GNRC's Makefile.dep, as module name neither starts or ends with gnrc
ifneq (,$(filter auto_init_gnrc_netif,$(USEMODULE)))
USEMODULE += gnrc_netif_init_devs
endif
ifneq (,$(filter auto_init_sock_dns,$(USEMODULE)))
ifneq (,$(filter ipv4,$(USEMODULE)))
USEMODULE += ipv4_addr
endif
ifneq (,$(filter ipv6,$(USEMODULE)))
USEMODULE += ipv6_addr
endif
endif
ifneq (,$(filter congure_%,$(USEMODULE)))
USEMODULE += congure
endif
ifneq (,$(filter congure_test,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter congure_reno,$(USEMODULE)))
USEMODULE += congure_reno_methods
endif
ifneq (,$(filter congure_reno_methods,$(USEMODULE)))
USEMODULE += seq
endif
ifneq (,$(filter eepreg,$(USEMODULE)))
FEATURES_REQUIRED += periph_eeprom
endif
ifneq (,$(filter fmt_table,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter i2c_scan,$(USEMODULE)))
FEATURES_REQUIRED += periph_i2c
endif
ifneq (,$(filter prng_fortuna,$(USEMODULE)))
USEMODULE += crypto_aes_128
endif
ifneq (,$(filter crypto_%,$(USEMODULE)))
USEMODULE += crypto
endif
ifneq (,$(filter cipher_modes,$(USEMODULE)))
USEMODULE += crypto
endif
ifneq (,$(filter crypto,$(USEMODULE)))
DEFAULT_MODULE += crypto_aes_128
endif
ifneq (,$(filter sys_bus_%,$(USEMODULE)))
USEMODULE += sys_bus
USEMODULE += core_msg_bus
endif
ifneq (,$(filter ieee802154_security,$(USEMODULE)))
USEMODULE += crypto
USEMODULE += crypto_aes_128
USEMODULE += cipher_modes
endif
ifneq (,$(filter rtt_cmd,$(USEMODULE)))
FEATURES_REQUIRED += periph_rtt
endif
ifneq (,$(filter trace,$(USEMODULE)))
USEMODULE += ztimer
USEMODULE += ztimer_usec
endif
ifneq (,$(filter shell_lock,$(USEMODULE)))
USEMODULE += ztimer_msec
endif
ifneq (,$(filter ssp,$(USEMODULE)))
FEATURES_REQUIRED += ssp
endif
ifneq (,$(filter base64url,$(USEMODULE)))
USEMODULE += base64
endif
ifneq (,$(filter csma_sender,$(USEMODULE)))
USEMODULE += random
USEMODULE += ztimer_usec
endif
ifneq (,$(filter dhcpv6_%,$(USEMODULE)))
USEMODULE += dhcpv6
endif
ifneq (,$(filter dhcpv6_client,$(USEMODULE)))
USEMODULE += event
USEMODULE += event_timeout
ifneq (,$(filter ztimer,$(USEMODULE)))
USEMODULE += event_timeout_ztimer
USEMODULE += ztimer_msec ztimer_sec
endif
USEMODULE += random
ifneq (,$(filter sock_dns,$(USEMODULE)))
USEMODULE += dhcpv6_client_dns
endif
endif
ifneq (,$(filter dhcpv6_relay,$(USEMODULE)))
DEFAULT_MODULE += auto_init_dhcpv6_relay
USEMODULE += event
USEMODULE += sock_async_event
USEMODULE += sock_udp
endif
ifneq (,$(filter dns_%,$(USEMODULE)))
USEMODULE += dns
endif
ifneq (,$(filter fuzzing,$(USEMODULE)))
USEMODULE += netdev_test
USEMODULE += gnrc_netif
USEMODULE += gnrc_pktbuf_malloc
endif
# include GNRC dependencies
ifneq (,$(filter gnrc% %gnrc,$(USEMODULE)))
include $(RIOTBASE)/sys/net/gnrc/Makefile.dep
endif
ifneq (,$(filter sntp,$(USEMODULE)))
USEMODULE += sock_udp
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit ftimestamps
USEMODULE += ztimer64_xtimer_compat
endif
endif
ifneq (,$(filter sock_%,$(USEMODULE)))
USEMODULE += iolist
endif
ifneq (,$(filter netdev_ieee802154,$(USEMODULE)))
USEMODULE += ieee802154
USEMODULE += random
endif
ifneq (,$(filter netdev_ieee802154_submac,$(USEMODULE)))
USEMODULE += netdev_ieee802154
USEMODULE += netdev_legacy_api
USEMODULE += ieee802154
USEMODULE += ieee802154_submac
endif
ifneq (,$(filter uhcpc,$(USEMODULE)))
USEMODULE += posix_inet
USEMODULE += ztimer_msec
endif
ifneq (,$(filter netdev_tap,$(USEMODULE)))
USEMODULE += netif
USEMODULE += netdev_eth
USEMODULE += iolist
endif
ifneq (,$(filter trickle,$(USEMODULE)))
USEMODULE += random
ifeq (,$(filter ztimer_msec,$(USEMODULE)))
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
USEMODULE += ztimer_msec
endif
endif
endif
ifneq (,$(filter eui_provider,$(USEMODULE)))
USEMODULE += luid
endif
ifneq (,$(filter ieee802154 nrfmin esp_now cc110x,$(USEMODULE)))
ifneq (,$(filter lwip%, $(USEMODULE)))
USEMODULE += lwip_sixlowpan
endif
endif
ifneq (,$(filter sixlowpan,$(USEMODULE)))
USEMODULE += ipv6_hdr
endif
ifneq (,$(filter ipv6_hdr,$(USEMODULE)))
USEMODULE += inet_csum
USEMODULE += ipv6_addr
endif
ifneq (,$(filter ieee802154_submac,$(USEMODULE)))
USEMODULE += xtimer
USEMODULE += random
endif
ifneq (,$(filter l2util,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter od,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter od_string,$(USEMODULE)))
USEMODULE += od
endif
ifneq (,$(filter netutils,$(USEMODULE)))
USEMODULE += ipv6_addr
endif
ifneq (,$(filter newlib_gnu_source,$(USEMODULE)))
FEATURES_REQUIRED += newlib
endif
ifneq (,$(filter newlib_nano,$(USEMODULE)))
FEATURES_REQUIRED += newlib
endif
ifneq (,$(filter newlib,$(USEMODULE)))
# allow custom newlib syscalls implementations by adding
# newlib_syscalls_XXX to USEMODULE
ifeq (,$(filter newlib_syscalls_%,$(USEMODULE)))
USEMODULE += newlib_syscalls_default
endif
ifneq (,$(filter newlib_syscalls_default,$(USEMODULE)))
USEMODULE += div
ifneq (,$(filter libc_gettimeofday,$(USEMODULE)))
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit timestamps
USEMODULE += ztimer64_xtimer_compat
endif
endif
endif
endif
ifneq (,$(filter posix_select,$(USEMODULE)))
ifneq (,$(filter posix_sockets,$(USEMODULE)))
USEMODULE += sock_async
endif
USEMODULE += core_thread_flags
USEMODULE += posix_headers
USEMODULE += ztimer64_usec
endif
ifneq (,$(filter picolibc,$(USEMODULE)))
# allow custom picolibc syscalls implementations by adding
# picolibc_syscalls_XXX to USEMODULE
ifeq (,$(filter picolibc_syscalls_%,$(USEMODULE)))
USEMODULE += picolibc_syscalls_default
endif
endif
ifneq (,$(filter posix_sockets,$(USEMODULE)))
USEMODULE += bitfield
USEMODULE += random
USEMODULE += vfs
USEMODULE += posix_headers
endif
ifneq (,$(filter shell,$(USEMODULE)))
USEMODULE += stdin
endif
# Include all stdio_% dependencies after all USEMODULE += stdio_%
include $(RIOTBASE)/makefiles/stdio.inc.mk
ifneq (,$(filter isrpipe,$(USEMODULE)))
USEMODULE += tsrb
endif
ifneq (,$(filter isrpipe_read_timeout,$(USEMODULE)))
USEMODULE += isrpipe
USEMODULE += xtimer
endif
ifneq (,$(filter shell_commands,$(USEMODULE)))
ifneq (,$(filter dfplayer,$(USEMODULE)))
USEMODULE += auto_init_multimedia
USEMODULE += fmt
endif
ifneq (,$(filter fib,$(USEMODULE)))
USEMODULE += posix_inet
endif
ifneq (,$(filter gnrc_icmpv6_echo,$(USEMODULE)))
USEMODULE += netutils ztimer_usec
endif
ifneq (,$(gnrc_udp_cmd,$(USEMODULE)))
USEMODULE += netutils
endif
ifneq (,$(filter nimble_netif,$(USEMODULE)))
USEMODULE += nimble_scanner
USEMODULE += nimble_scanlist
USEMODULE += fmt
endif
ifneq (,$(filter openwsn_%,$(USEMODULE)))
USEMODULE += netif
USEMODULE += ipv6_addr
endif
ifneq (,$(filter gnrc_lorawan,$(USEMODULE)))
USEMODULE += gnrc_netif_cmd_lora
endif
endif
ifneq (,$(filter shell_democommands,$(USEMODULE)))
USEMODULE += rust_riotmodules
USEMODULE += shell
endif
ifneq (,$(filter md5sum sha1sum sha256sum,$(USEMODULE)))
USEMODULE += vfs_util
USEMODULE += hashes
endif
ifneq (,$(filter posix_semaphore,$(USEMODULE)))
USEMODULE += sema_deprecated
USEMODULE += ztimer64_usec
USEMODULE += posix_headers
endif
ifneq (,$(filter posix_sleep,$(USEMODULE)))
USEMODULE += ztimer_msec
USEMODULE += ztimer_usec
USEMODULE += posix_headers
endif
ifneq (,$(filter posix_inet,$(USEMODULE)))
USEMODULE += posix_headers
endif
ifneq (,$(filter sema_inv,$(USEMODULE)))
USEMODULE += atomic_utils
endif
ifneq (,$(filter sema,$(USEMODULE)))
USEMODULE += ztimer
endif
ifneq (,$(filter sema_deprecated,$(USEMODULE)))
USEMODULE += sema
USEMODULE += ztimer64
USEMODULE += ztimer64_usec
endif
ifneq (,$(filter telnet,$(USEMODULE)))
USEMODULE += pipe
USEMODULE += sock_tcp
endif
ifneq (,$(filter luid,$(USEMODULE)))
FEATURES_OPTIONAL += periph_cpuid
endif
ifneq (,$(filter fib,$(USEMODULE)))
USEMODULE += universal_address
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
USEMODULE += ztimer64_xtimer_compat
endif
USEMODULE += posix_headers
endif
# if any log_* is used, also use LOG pseudomodule
ifneq (,$(filter log_%,$(USEMODULE)))
USEMODULE += log
endif
ifneq (,$(filter cpp11-compat,$(USEMODULE)))
USEMODULE += cpp_new_delete
USEMODULE += xtimer
USEMODULE += timex
FEATURES_REQUIRED += cpp
FEATURES_REQUIRED += libstdcpp
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit for syscalls
USEMODULE += ztimer64_xtimer_compat
endif
endif
ifneq (,$(filter netstats_%, $(USEMODULE)))
USEMODULE += netstats
endif
ifneq (,$(filter netstats_neighbor_%, $(USEMODULE)))
USEMODULE += netstats_neighbor
USEMODULE += xtimer
endif
ifneq (,$(filter pthread,$(USEMODULE)))
USEMODULE += ztimer64_usec
USEMODULE += timex
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit ftimestamps
USEMODULE += ztimer64_xtimer_compat
endif
endif
ifneq (,$(filter schedstatistics,$(USEMODULE)))
USEMODULE += ztimer_usec
USEMODULE += sched_cb
endif
ifneq (,$(filter sched_round_robin,$(USEMODULE)))
# this depends on either ztimer_usec or ztimer_msec if neither is used
# prior to this msec is preferred
ifeq (,$(filter ztimer_usec,$(USEMODULE))$(filter ztimer_msec,$(USEMODULE)))
USEMODULE += ztimer_msec
endif
USEMODULE += sched_runq_callback
endif
ifneq (,$(filter saul_reg,$(USEMODULE)))
USEMODULE += saul
endif
ifneq (,$(filter saul_default,$(USEMODULE)))
DEFAULT_MODULE += auto_init_saul
DEFAULT_MODULE += saul_init_devs
USEMODULE += saul
USEMODULE += saul_reg
endif
ifneq (,$(filter senml%,$(USEMODULE)))
include $(RIOTBASE)/sys/senml/Makefile.dep
endif
ifneq (,$(filter phydat,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter pm_layered,$(USEMODULE)))
FEATURES_REQUIRED += periph_pm
endif
ifneq (,$(filter evtimer_mbox,$(USEMODULE)))
USEMODULE += evtimer
USEMODULE += core_mbox
endif
ifneq (,$(filter can,$(USEMODULE)))
USEMODULE += can_raw
ifneq (,$(filter can_mbox,$(USEMODULE)))
USEMODULE += core_mbox
endif
USEMODULE += memarray
endif
ifneq (,$(filter can_isotp,$(USEMODULE)))
USEMODULE += ztimer
USEMODULE += ztimer_usec
USEMODULE += gnrc_pktbuf
endif
ifneq (,$(filter conn_can,$(USEMODULE)))
USEMODULE += can
USEMODULE += can_mbox
USEMODULE += ztimer
USEMODULE += ztimer_usec
endif
ifneq (,$(filter entropy_source_%,$(USEMODULE)))
USEMODULE += entropy_source
ifneq (,$(filter entropy_source_adc_noise,$(USEMODULE)))
FEATURES_REQUIRED += periph_adc
endif
endif
ifneq (,$(filter puf_sram,$(USEMODULE)))
USEMODULE += hashes
USEMODULE += random
FEATURES_REQUIRED += puf_sram
endif
ifneq (,$(filter random,$(USEMODULE)))
DEFAULT_MODULE += auto_init_random
USEMODULE += prng
ifneq (,$(filter prng_fortuna,$(USEMODULE)))
USEMODULE += fortuna
USEMODULE += hashes
USEMODULE += crypto
ifneq (,$(filter fortuna_reseed,$(USEMODULE)))
USEMODULE += atomic_utils
USEMODULE += xtimer
endif
endif
ifneq (,$(filter prng_tinymt32,$(USEMODULE)))
USEMODULE += tinymt32
endif
ifneq (,$(filter prng_sha%prng,$(USEMODULE)))
USEMODULE += prng_shaxprng
USEMODULE += hashes
endif
ifneq (,$(filter prng_hwrng,$(USEMODULE)))
FEATURES_REQUIRED += periph_hwrng
endif
ifeq (,$(filter puf_sram,$(USEMODULE)))
FEATURES_OPTIONAL += periph_hwrng
endif
USEMODULE += luid
endif
ifneq (,$(filter hashes,$(USEMODULE)))
USEMODULE += crypto
endif
ifneq (,$(filter asymcute,$(USEMODULE)))
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += sock_async_event
USEMODULE += random
USEMODULE += event_timeout
USEMODULE += event_callback
endif
ifneq (,$(filter emcute,$(USEMODULE)))
USEMODULE += core_thread_flags
USEMODULE += sock_udp
USEMODULE += xtimer
endif
ifneq (,$(filter constfs,$(USEMODULE)))
USEMODULE += vfs
endif
ifneq (,$(filter devfs,$(USEMODULE)))
USEMODULE += vfs
endif
ifneq (,$(filter vfs_default,$(USEMODULE)))
USEMODULE += vfs
DEFAULT_MODULE += vfs_auto_mount
endif
ifneq (,$(filter vfs_util,$(USEMODULE)))
USEMODULE += vfs
endif
ifneq (,$(filter vfs,$(USEMODULE)))
USEMODULE += posix_headers
ifeq (native, $(BOARD))
USEMODULE += native_vfs
endif
endif
ifneq (,$(filter sock_async_event,$(USEMODULE)))
USEMODULE += sock_async
USEMODULE += event
endif
ifneq (,$(filter sock_async,$(USEMODULE)))
ifneq (,$(filter openwsn%,$(USEMODULE)))
USEMODULE += openwsn_sock_async
endif
endif
ifneq (,$(filter sock_dns,$(USEMODULE)))
USEMODULE += dns_msg
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += posix_headers
endif
ifneq (,$(filter sock_dns_mock,$(USEMODULE)))
USEMODULE += dns
endif
ifneq (,$(filter sock_dodtls,$(USEMODULE)))
USEMODULE += dns_msg
USEMODULE += sock_dtls
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += posix_headers
USEMODULE += ztimer_msec
endif
ifneq (,$(filter dns_cache,$(USEMODULE)))
USEMODULE += ztimer_msec
USEMODULE += checksum
endif
ifneq (,$(filter sock_util,$(USEMODULE)))
USEMODULE += posix_inet
USEMODULE += fmt
endif
ifneq (,$(filter event_%,$(USEMODULE)))
USEMODULE += event
endif
ifneq (,$(filter event_thread_%,$(USEMODULE)))
USEMODULE += event_thread
endif
ifneq (,$(filter event_timeout_ztimer,$(USEMODULE)))
USEMODULE += ztimer
endif
ifneq (,$(filter event_timeout,$(USEMODULE)))
USEMODULE += event_timeout_ztimer
USEMODULE += ztimer_usec
endif
ifneq (,$(filter event,$(USEMODULE)))
USEMODULE += core_thread_flags
endif
ifneq (,$(filter l2filter_%,$(USEMODULE)))
USEMODULE += l2filter
endif
ifneq (,$(filter gcoap_fileserver,$(USEMODULE)))
USEMODULE += gcoap
USEMODULE += checksum
USEMODULE += vfs
endif
ifneq (,$(filter gcoap_fileserver_delete,$(USEMODULE)))
USEMODULE += gcoap_fileserver
USEMODULE += vfs_util
endif
ifneq (,$(filter gcoap_fileserver_put,$(USEMODULE)))
USEMODULE += gcoap_fileserver
endif
ifneq (,$(filter gcoap_forward_proxy,$(USEMODULE)))
USEMODULE += gcoap
USEMODULE += uri_parser
endif
ifneq (,$(filter gcoap_dtls,$(USEMODULE)))
USEMODULE += gcoap
USEMODULE += dsm
USEMODULE += sock_async_event
USEMODULE += sock_dtls
USEMODULE += ztimer_msec
USEMODULE += ztimer_usec
USEMODULE += event_thread
USEMODULE += event_timeout_ztimer
endif
ifneq (,$(filter dsm,$(USEMODULE)))
USEMODULE += sock_dtls
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit timestamps when using xtimer
USEMODULE += ztimer64_xtimer_compat
endif
endif
ifneq (,$(filter gcoap,$(USEMODULE)))
USEMODULE += nanocoap
USEMODULE += sock_async_event
USEMODULE += sock_aux_local
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += ztimer_msec
USEMODULE += ztimer_usec
USEMODULE += event_callback
USEMODULE += event_timeout_ztimer
USEMODULE += random
endif
ifneq (,$(filter gcoap_dns,$(USEMODULE)))
USEMODULE += dns_msg
USEMODULE += gcoap
USEMODULE += ipv4_addr
USEMODULE += ipv6_addr
USEMODULE += uri_parser
USEMODULE += sock_util
endif
ifneq (,$(filter luid,$(USEMODULE)))
FEATURES_OPTIONAL += periph_cpuid
endif
ifneq (,$(filter nanocoap_sock,$(USEMODULE)))
USEMODULE += sock_udp
USEMODULE += sock_util
USEMODULE += ztimer_msec
endif
ifneq (,$(filter nanocoap_cache,$(USEMODULE)))
USEMODULE += ztimer_sec
USEMODULE += hashes
endif
ifneq (,$(filter nanocoap_vfs,$(USEMODULE)))
USEMODULE += nanocoap_sock
USEMODULE += vfs
endif
ifneq (,$(filter nanocoap_%,$(USEMODULE)))
USEMODULE += nanocoap
endif
ifneq (,$(filter benchmark,$(USEMODULE)))
USEMODULE += ztimer_usec
endif
ifneq (,$(filter skald_%,$(USEMODULE)))
USEMODULE += skald
endif
ifneq (,$(filter skald,$(USEMODULE)))
FEATURES_REQUIRED += radio_nrfble
FEATURES_OPTIONAL += periph_rtt
USEMODULE += nrfble
USEMODULE += random
USEMODULE += ztimer_msec
endif
ifneq (,$(filter bluetil_addr,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter cord_common,$(USEMODULE)))
USEMODULE += fmt
USEMODULE += luid
USEMODULE += gcoap
endif
ifneq (,$(filter cord_lc cord_ep,$(USEMODULE)))
USEMODULE += core_thread_flags
USEMODULE += cord_common
ifneq (,$(filter shell_commands,$(USEMODULE)))
USEMODULE += sock_util
endif
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
# requires 64bit timestamps when using xtimer
USEMODULE += ztimer64_xtimer_compat
endif
endif
ifneq (,$(filter cord_epsim,$(USEMODULE)))
USEMODULE += cord_common
endif
ifneq (,$(filter cord_ep_standalone,$(USEMODULE)))
USEMODULE += cord_ep
USEMODULE += xtimer
endif
ifneq (,$(filter cord_lc,$(USEMODULE)))
USEMODULE += clif
endif
ifneq (,$(filter usbus,$(USEMODULE)))
DEFAULT_MODULE += auto_init_usbus
USEMODULE += core_thread_flags
USEMODULE += event
USEMODULE += luid
USEMODULE += fmt
ifeq (,$(filter usbdev_mock,$(USEMODULE)))
FEATURES_REQUIRED += periph_usbdev
endif
endif
ifneq (,$(filter usbus_cdc_acm,$(USEMODULE)))
USEMODULE += tsrb
USEMODULE += usbus
endif
ifneq (,$(filter usbus_cdc_ecm,$(USEMODULE)))
USEMODULE += iolist
USEMODULE += fmt
USEMODULE += usbus
USEMODULE += netdev_eth
USEMODULE += luid
endif
ifneq (,$(filter usbus_hid,$(USEMODULE)))
USEMODULE += isrpipe_read_timeout
USEMODULE += usbus
endif
ifneq (,$(filter usbus_dfu,$(USEMODULE)))
FEATURES_REQUIRED += riotboot
USEMODULE += usbus
USEMODULE += riotboot_slot
endif
ifneq (,$(filter ut_process,$(USEMODULE)))
USEMODULE += fmt
endif
ifneq (,$(filter uuid,$(USEMODULE)))
USEMODULE += hashes
USEMODULE += random
USEMODULE += fmt
endif
ifneq (,$(filter riotboot_flashwrite, $(USEMODULE)))
USEMODULE += riotboot_slot
FEATURES_REQUIRED += periph_flashpage
endif
ifneq (,$(filter riotboot_slot, $(USEMODULE)))
USEMODULE += riotboot_hdr
endif
ifneq (,$(filter riotboot_serial, $(USEMODULE)))
FEATURES_REQUIRED += periph_flashpage
FEATURES_REQUIRED += periph_uart
USEMODULE += riotboot_reset
USEMODULE += checksum
endif
ifneq (,$(filter riotboot_reset, $(USEMODULE)))
USEMODULE += riotboot
USEMODULE += usb_board_reset
endif
ifneq (,$(filter riotboot_hdr, $(USEMODULE)))
USEMODULE += checksum
USEMODULE += riotboot
endif
ifneq (,$(filter riotboot_usb_dfu, $(USEMODULE)))
USEMODULE += usbus_dfu
USEMODULE += riotboot_flashwrite
USEMODULE += ztimer_sec
FEATURES_REQUIRED += no_idle_thread
FEATURES_REQUIRED += periph_pm
endif
ifneq (,$(filter irq_handler,$(USEMODULE)))
USEMODULE += event
endif
ifneq (,$(filter sock_dtls, $(USEMODULE)))
USEMODULE += credman
USEMODULE += sock_udp
endif
ifneq (,$(filter credman_load, $(USEMODULE)))
USEPKG += tiny-asn1
endif
ifneq (,$(filter suit,$(USEMODULE)))
USEPKG += nanocbor
USEPKG += libcose
USEMODULE += uuid
ifeq (,$(filter libcose_crypt_%,$(USEMODULE)))
USEMODULE += libcose_crypt_c25519
endif
endif
ifneq (,$(filter suit_transport_%, $(USEMODULE)))
USEMODULE += suit_transport
USEMODULE += suit_transport_worker
endif
ifneq (,$(filter suit_transport_coap, $(USEMODULE)))
USEMODULE += nanocoap_sock
USEMODULE += ztimer_msec
USEMODULE += sock_util
endif
ifneq (,$(filter suit_transport_vfs, $(USEMODULE)))
USEMODULE += vfs_util
endif
ifneq (,$(filter suit_storage_%, $(USEMODULE)))
USEMODULE += suit_storage
endif
ifneq (,$(filter suit_storage_flashwrite, $(USEMODULE)))
FEATURES_REQUIRED += riotboot
USEMODULE += riotboot_slot
USEMODULE += riotboot_flashwrite
USEMODULE += riotboot_flashwrite_verify_sha256
endif
ifneq (,$(filter suit_storage_vfs,$(USEMODULE)))
USEMODULE += vfs
USEMODULE += mtd
endif
ifneq (,$(filter suit_%,$(USEMODULE)))
USEMODULE += suit
endif
# include ztimer dependencies
ifneq (,$(filter ztimer ztimer_% %ztimer,$(USEMODULE)))
include $(RIOTBASE)/sys/ztimer/Makefile.dep
endif
# include ztimer64 dependencies
ifneq (,$(filter ztimer64%,$(USEMODULE)))
include $(RIOTBASE)/sys/ztimer64/Makefile.dep
endif
ifneq (,$(filter evtimer,$(USEMODULE)))
ifneq (,$(filter evtimer_on_ztimer,$(USEMODULE)))
USEMODULE += ztimer_msec
else
USEMODULE += xtimer
ifneq (,$(filter ztimer_xtimer_compat,$(USEMODULE)))
USEMODULE += evtimer_on_ztimer
endif
endif
endif
# handle xtimer's deps. Needs to be done *after* ztimer
ifneq (,$(filter xtimer,$(USEMODULE)))
include $(RIOTBASE)/sys/xtimer/Makefile.dep
endif
ifneq (,$(filter devfs_hwrng,$(USEMODULE)))
FEATURES_REQUIRED += periph_hwrng
endif
ifneq (,$(filter devfs_random,$(USEMODULE)))
USEMODULE += random
endif
ifneq (,$(filter ecc_%,$(USEMODULE)))
USEMODULE += ecc
endif
ifneq (,$(filter bhp_%,$(USEMODULE)))
USEMODULE += bhp
endif
ifneq (,$(filter dbgpin,$(USEMODULE)))
FEATURES_REQUIRED += periph_gpio
FEATURES_REQUIRED += dbgpin
endif
ifneq (,$(filter fido2_ctap_%,$(USEMODULE)))
USEMODULE += fido2_ctap_transport
USEMODULE += fido2_ctap
ifneq (,$(filter fido2_ctap_transport_hid,$(USEMODULE)))
USEMODULE += ztimer64_msec
USEMODULE += usbus_hid
DISABLE_MODULE += auto_init_usbus
endif
endif
ifneq (,$(filter fido2_ctap,$(USEMODULE)))
FEATURES_REQUIRED += periph_flashpage
FEATURES_REQUIRED += periph_flashpage_in_address_space
FEATURES_REQUIRED += periph_gpio_irq
USEPKG += tiny-asn1
USEPKG += tinycbor
USEPKG += micro-ecc
USEMODULE += mtd_flashpage
USEMODULE += mtd_write_page
USEMODULE += ztimer_msec
USEMODULE += event
USEMODULE += event_timeout_ztimer
USEMODULE += cipher_modes
USEMODULE += crypto_aes_256
USEMODULE += hashes
USEMODULE += fido2
endif
ifneq (,$(filter rust_riotmodules,$(USEMODULE)))
include $(RIOTBASE)/sys/rust_riotmodules/Makefile.dep
endif
include $(RIOTBASE)/sys/test_utils/Makefile.dep