ifneq (,$(filter arduino,$(USEMODULE))) FEATURES_OPTIONAL += periph_i2c FEATURES_OPTIONAL += periph_spi FEATURES_REQUIRED += periph_uart FEATURES_REQUIRED += cpp SKETCH_MODULE ?= arduino_sketches USEMODULE += $(SKETCH_MODULE) endif ifneq (,$(filter arduino,$(USEMODULE))) FEATURES_REQUIRED += arduino FEATURES_OPTIONAL += arduino_pwm FEATURES_OPTIONAL += periph_adc FEATURES_REQUIRED += periph_gpio USEMODULE += fmt USEMODULE += xtimer endif ifneq (,$(filter arduino_pwm,$(FEATURES_USED))) FEATURES_REQUIRED += periph_pwm 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 endif ifneq (,$(filter crypto_aes_%,$(USEMODULE))) USEMODULE += crypto_aes endif ifneq (,$(filter crypto_%,$(USEMODULE))) USEMODULE += crypto endif ifneq (,$(filter sys_bus_%,$(USEMODULE))) USEMODULE += sys_bus USEMODULE += core_msg_bus endif ifneq (,$(filter ieee802154_security,$(USEMODULE))) USEMODULE += crypto USEMODULE += crypto_aes USEMODULE += cipher_modes endif ifneq (,$(filter rtt_cmd,$(USEMODULE))) FEATURES_REQUIRED += periph_rtt endif ifneq (,$(filter trace,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter shell_commands,$(USEMODULE))) ifneq (,$(filter dfplayer,$(USEMODULE))) USEMODULE += auto_init_multimedia USEMODULE += fmt endif endif ifneq (,$(filter ssp,$(USEMODULE))) FEATURES_REQUIRED += ssp endif ifneq (,$(filter base64url,$(USEMODULE))) USEMODULE += base64 endif ifneq (,$(filter auto_init_gnrc_netif,$(USEMODULE))) USEMODULE += gnrc_netif_init_devs endif ifneq (,$(filter auto_init_saul,$(USEMODULE))) USEMODULE += saul_init_devs endif ifneq (,$(filter csma_sender,$(USEMODULE))) USEMODULE += random USEMODULE += xtimer endif ifneq (,$(filter dhcpv6_%,$(USEMODULE))) USEMODULE += dhcpv6 endif ifneq (,$(filter dhcpv6_client,$(USEMODULE))) USEMODULE += event USEMODULE += random USEMODULE += xtimer endif ifneq (,$(filter gnrc_mac,$(USEMODULE))) USEMODULE += gnrc_priority_pktqueue USEMODULE += csma_sender USEMODULE += evtimer ifneq (,$(filter gnrc_netif,$(USEMODULE))) USEMODULE += gnrc_netif_mac endif endif ifneq (,$(filter gnrc_gomach,$(USEMODULE))) USEMODULE += gnrc_netif USEMODULE += gnrc_nettype_gomach USEMODULE += random USEMODULE += xtimer USEMODULE += gnrc_mac FEATURES_REQUIRED += periph_rtt endif ifneq (,$(filter gnrc_lorawan,$(USEMODULE))) USEMODULE += xtimer USEMODULE += random USEMODULE += hashes USEMODULE += crypto_aes USEMODULE += netdev_layer USEMODULE += gnrc_nettype_lorawan endif ifneq (,$(filter sntp,$(USEMODULE))) USEMODULE += sock_udp USEMODULE += xtimer endif ifneq (,$(filter ieee802154_radio_hal,$(USEMODULE))) USEMODULE += ieee802154 endif ifneq (,$(filter gnrc_netdev_default,$(USEMODULE))) USEMODULE += netdev_default USEMODULE += gnrc_netif endif ifneq (,$(filter netdev_ieee802154,$(USEMODULE))) USEMODULE += ieee802154 USEMODULE += random endif ifneq (,$(filter netdev_ieee802154_submac,$(USEMODULE))) USEMODULE += ieee802154_radio_hal USEMODULE += ieee802154_submac endif ifneq (,$(filter gnrc_dhcpv6_%, $(USEMODULE))) USEMODULE += gnrc_dhcpv6 endif ifneq (,$(filter gnrc_dhcpv6_client,$(USEMODULE))) USEMODULE += dhcpv6_client USEMODULE += gnrc_ipv6_nib USEMODULE += gnrc_netif USEMODULE += gnrc_sock_udp endif ifneq (,$(filter gnrc_dhcpv6_client_6lbr,$(USEMODULE))) USEMODULE += gnrc_dhcpv6_client endif ifneq (,$(filter gnrc_uhcpc,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_uhcpc USEMODULE += uhcpc USEMODULE += gnrc_sock_udp USEMODULE += fmt endif ifneq (,$(filter uhcpc,$(USEMODULE))) USEMODULE += posix_inet endif ifneq (,$(filter gnrc_%,$(filter-out gnrc_netapi gnrc_netreg gnrc_netif% gnrc_pkt%,$(USEMODULE)))) USEMODULE += gnrc endif ifneq (,$(filter gnrc_sock_%,$(USEMODULE))) USEMODULE += gnrc_sock ifneq (,$(filter sock_aux_timestamp,$(USEMODULE))) USEMODULE += gnrc_netif_timestamp endif endif ifneq (,$(filter gnrc_sock_async,$(USEMODULE))) USEMODULE += gnrc_netapi_callbacks endif ifneq (,$(filter gnrc_sock_udp,$(USEMODULE))) USEMODULE += gnrc_udp USEMODULE += random # to generate random ports endif ifneq (,$(filter gnrc_sock,$(USEMODULE))) USEMODULE += gnrc_netapi_mbox USEMODULE += sock endif ifneq (,$(filter gnrc_netapi_mbox,$(USEMODULE))) USEMODULE += core_mbox endif ifneq (,$(filter netdev_tap,$(USEMODULE))) USEMODULE += netif USEMODULE += netdev_eth USEMODULE += iolist endif ifneq (,$(filter gnrc_rpl_p2p,$(USEMODULE))) USEMODULE += gnrc_rpl endif ifneq (,$(filter gnrc_rpl,$(USEMODULE))) USEMODULE += gnrc_icmpv6 USEMODULE += gnrc_ipv6_nib USEMODULE += trickle USEMODULE += xtimer USEMODULE += evtimer endif ifneq (,$(filter trickle,$(USEMODULE))) USEMODULE += random USEMODULE += xtimer endif ifneq (,$(filter eui_provider,$(USEMODULE))) USEMODULE += luid endif ifneq (,$(filter gnrc_netif,$(USEMODULE))) USEMODULE += netif USEMODULE += l2util USEMODULE += fmt ifneq (,$(filter netdev_ieee802154_submac,$(USEMODULE))) USEMODULE += gnrc_netif_pktq endif ifneq (,$(filter netdev_ieee802154,$(USEMODULE))) USEMODULE += gnrc_netif_ieee802154 endif ifneq (,$(filter netdev_eth,$(USEMODULE))) USEMODULE += gnrc_netif_ethernet endif ifneq (,$(filter gnrc_lorawan,$(USEMODULE))) USEMODULE += gnrc_netif_lorawan endif endif ifneq (,$(filter gnrc_netif_bus,$(USEMODULE))) USEMODULE += core_msg_bus endif ifneq (,$(filter gnrc_netif_events,$(USEMODULE))) USEMODULE += core_thread_flags USEMODULE += event endif ifneq (,$(filter ieee802154 nrfmin esp_now cc110x gnrc_sixloenc,$(USEMODULE))) ifneq (,$(filter gnrc_ipv6, $(USEMODULE))) USEMODULE += gnrc_sixlowpan endif ifneq (,$(filter gnrc_ipv6_default, $(USEMODULE))) USEMODULE += gnrc_sixlowpan_default endif ifneq (,$(filter gnrc_ipv6_router_default, $(USEMODULE))) USEMODULE += gnrc_sixlowpan_router_default endif ifneq (,$(filter lwip%, $(USEMODULE))) USEMODULE += lwip_sixlowpan endif endif ifneq (,$(filter gnrc_sixlowpan_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6ln USEMODULE += gnrc_sixlowpan ifeq (,$(filter gnrc_sixlowpan_frag_sfr,$(USEMODULE))) USEMODULE += gnrc_sixlowpan_frag endif USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_router_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6lr ifeq (,$(filter gnrc_sixlowpan_frag_sfr,$(USEMODULE))) USEMODULE += gnrc_sixlowpan_frag endif USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_border_router_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6lbr USEMODULE += gnrc_ipv6_router_default ifeq (,$(filter gnrc_sixlowpan_frag_sfr,$(USEMODULE))) USEMODULE += gnrc_sixlowpan_frag endif USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_frag,$(USEMODULE))) USEMODULE += gnrc_sixlowpan USEMODULE += gnrc_sixlowpan_frag_fb USEMODULE += gnrc_sixlowpan_frag_rb endif ifneq (,$(filter gnrc_sixlowpan_frag_fb,$(USEMODULE))) USEMODULE += core_msg endif ifneq (,$(filter gnrc_sixlowpan_frag_minfwd,$(USEMODULE))) USEMODULE += gnrc_netif_pktq USEMODULE += gnrc_sixlowpan_frag USEMODULE += gnrc_sixlowpan_frag_hint USEMODULE += gnrc_sixlowpan_frag_vrb endif ifneq (,$(filter gnrc_sixlowpan_frag_rb,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter gnrc_sixlowpan_frag_sfr,$(USEMODULE))) USEMODULE += gnrc_sixlowpan USEMODULE += gnrc_sixlowpan_frag_fb USEMODULE += gnrc_sixlowpan_frag_vrb USEMODULE += gnrc_sixlowpan_frag_rb USEMODULE += evtimer USEMODULE += xtimer ifneq (,$(filter gnrc_tx_sync,$(USEMODULE))) # TODO: Implement gnrc_tx_sync for gnrc_sixlowpand_frag_sfr $(error module gnrc_tx_sync conflicts with gnrc_sixlowpand_frag_sfr) endif endif ifneq (,$(filter gnrc_sixlowpan_frag_sfr_stats,$(USEMODULE))) USEMODULE += gnrc_sixlowpan_frag_sfr endif ifneq (,$(filter gnrc_sixlowpan_frag_vrb,$(USEMODULE))) USEMODULE += xtimer USEMODULE += gnrc_sixlowpan_frag_fb endif ifneq (,$(filter gnrc_sixlowpan_iphc,$(USEMODULE))) USEMODULE += gnrc_ipv6 USEMODULE += gnrc_sixlowpan USEMODULE += gnrc_sixlowpan_ctx USEMODULE += gnrc_sixlowpan_iphc_nhc endif ifneq (,$(filter gnrc_sixlowpan,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_sixlowpan USEMODULE += gnrc_nettype_sixlowpan USEMODULE += sixlowpan ifneq (,$(filter gnrc_netif,$(USEMODULE))) USEMODULE += gnrc_netif_6lo endif endif ifneq (,$(filter gnrc_sixlowpan_ctx,$(USEMODULE))) USEMODULE += ipv6_addr USEMODULE += xtimer endif ifneq (,$(filter gnrc_ipv6_default,$(USEMODULE))) USEMODULE += gnrc_ipv6 USEMODULE += gnrc_icmpv6 endif ifneq (,$(filter gnrc_ipv6_router_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_router USEMODULE += gnrc_icmpv6 endif ifneq (,$(filter gnrc_ndp,$(USEMODULE))) USEMODULE += gnrc_icmpv6 USEMODULE += gnrc_ipv6_hdr USEMODULE += gnrc_netif endif ifneq (,$(filter gnrc_icmpv6_echo,$(USEMODULE))) USEMODULE += gnrc_icmpv6 USEMODULE += gnrc_ipv6_hdr USEMODULE += gnrc_netif_hdr endif ifneq (,$(filter gnrc_icmpv6_error,$(USEMODULE))) USEMODULE += gnrc_icmpv6 USEMODULE += gnrc_ipv6_hdr USEMODULE += gnrc_netif_hdr endif ifneq (,$(filter gnrc_icmpv6,$(USEMODULE))) USEMODULE += inet_csum USEMODULE += ipv6_hdr USEMODULE += gnrc_nettype_icmpv6 USEMODULE += gnrc_nettype_ipv6 USEMODULE += icmpv6 endif ifneq (,$(filter gnrc_rpl_srh,$(USEMODULE))) USEMODULE += gnrc_ipv6_ext_rh endif ifneq (,$(filter gnrc_ipv6_ext_frag,$(USEMODULE))) USEMODULE += gnrc_ipv6_ext USEMODULE += xtimer endif ifneq (,$(filter gnrc_ipv6_ext_opt,$(USEMODULE))) USEMODULE += gnrc_ipv6_ext endif ifneq (,$(filter gnrc_ipv6_ext_rh,$(USEMODULE))) USEMODULE += gnrc_ipv6_ext endif ifneq (,$(filter gnrc_ipv6_ext,$(USEMODULE))) USEMODULE += gnrc_nettype_ipv6 USEMODULE += gnrc_nettype_ipv6_ext endif ifneq (,$(filter gnrc_ipv6_whitelist,$(USEMODULE))) USEMODULE += ipv6_addr endif ifneq (,$(filter gnrc_ipv6_blacklist,$(USEMODULE))) USEMODULE += ipv6_addr endif ifneq (,$(filter gnrc_ipv6_router,$(USEMODULE))) USEMODULE += gnrc_ipv6 USEMODULE += gnrc_ipv6_nib_router endif ifneq (,$(filter gnrc_ipv6,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_ipv6 USEMODULE += inet_csum USEMODULE += ipv6_addr USEMODULE += gnrc_ipv6_hdr USEMODULE += gnrc_ipv6_nib USEMODULE += gnrc_netif USEMODULE += gnrc_netif_ipv6 USEMODULE += gnrc_nettype_ipv6 endif ifneq (,$(filter gnrc_ipv6_hdr,$(USEMODULE))) USEMODULE += ipv6_hdr USEMODULE += gnrc_pktbuf endif ifneq (,$(filter sixlowpan,$(USEMODULE))) USEMODULE += ipv6_hdr endif ifneq (,$(filter ipv6_hdr,$(USEMODULE))) USEMODULE += inet_csum USEMODULE += ipv6_addr endif ifneq (,$(filter gnrc_ipv6_nib_6lbr,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6lr endif ifneq (,$(filter gnrc_ipv6_nib_6lr,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6ln USEMODULE += gnrc_ipv6_nib_router endif ifneq (,$(filter gnrc_ipv6_nib_6ln,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib USEMODULE += gnrc_sixlowpan_nd endif ifneq (,$(filter gnrc_ipv6_nib_dns,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib endif ifneq (,$(filter gnrc_ipv6_nib_router,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib endif ifneq (,$(filter gnrc_ipv6_nib,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_ipv6_nib USEMODULE += evtimer USEMODULE += gnrc_ndp USEMODULE += gnrc_netif USEMODULE += gnrc_netif_ipv6 USEMODULE += ipv6_addr USEMODULE += random endif ifneq (,$(filter gnrc_udp,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_udp USEMODULE += gnrc_nettype_udp USEMODULE += inet_csum USEMODULE += udp endif ifneq (,$(filter gnrc_tcp,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_tcp USEMODULE += gnrc_nettype_tcp USEMODULE += inet_csum USEMODULE += random USEMODULE += tcp USEMODULE += evtimer_mbox endif ifneq (,$(filter gnrc_pktdump,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_pktdump USEMODULE += gnrc_pktbuf USEMODULE += od endif ifneq (,$(filter ieee802154_submac,$(USEMODULE))) USEMODULE += xtimer 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 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 endif ifneq (,$(filter posix_select,$(USEMODULE))) ifneq (,$(filter posix_sockets,$(USEMODULE))) USEMODULE += sock_async endif USEMODULE += core_thread_flags USEMODULE += posix_headers USEMODULE += xtimer 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 USEMODULE += xtimer 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 fib,$(USEMODULE))) USEMODULE += posix_inet 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 endif ifneq (,$(filter posix_semaphore,$(USEMODULE))) USEMODULE += sema USEMODULE += xtimer USEMODULE += posix_headers endif ifneq (,$(filter posix_sleep,$(USEMODULE))) USEMODULE += ztimer_msec ifneq (,$(filter periph_rtt,$(USEMODULE))) USEMODULE += ztimer_periph_rtt endif USEMODULE += ztimer_usec USEMODULE += posix_headers endif ifneq (,$(filter posix_inet,$(USEMODULE))) USEMODULE += posix_headers endif ifneq (,$(filter sema,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter sema_inv,$(USEMODULE))) USEMODULE += atomic_utils endif ifneq (,$(filter luid,$(USEMODULE))) FEATURES_OPTIONAL += periph_cpuid endif ifneq (,$(filter fib,$(USEMODULE))) USEMODULE += universal_address USEMODULE += xtimer 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 += xtimer USEMODULE += timex FEATURES_REQUIRED += cpp FEATURES_REQUIRED += libstdcpp endif ifneq (,$(filter fuzzing,$(USEMODULE))) USEMODULE += netdev_test USEMODULE += gnrc_netif USEMODULE += gnrc_pktbuf_malloc endif ifneq (,$(filter gnrc,$(USEMODULE))) USEMODULE += gnrc_netapi USEMODULE += gnrc_netreg USEMODULE += gnrc_netif USEMODULE += gnrc_netif_hdr USEMODULE += gnrc_pktbuf ifneq (,$(filter sock_async, $(USEMODULE))) USEMODULE += gnrc_sock_async endif ifneq (,$(filter sock_ip, $(USEMODULE))) USEMODULE += gnrc_sock_ip endif ifneq (,$(filter sock_udp, $(USEMODULE))) USEMODULE += gnrc_sock_udp endif endif ifneq (,$(filter gnrc_pktbuf, $(USEMODULE))) ifeq (,$(filter gnrc_pktbuf_%, $(USEMODULE))) USEMODULE += gnrc_pktbuf_static endif ifeq (gnrc_pktbuf_cmd,$(filter gnrc_pktbuf_%, $(USEMODULE))) USEMODULE += gnrc_pktbuf_static endif DEFAULT_MODULE += auto_init_gnrc_pktbuf USEMODULE += gnrc_pkt endif ifneq (,$(filter gnrc_pktbuf_%, $(USEMODULE))) USEMODULE += gnrc_pktbuf # make MODULE_GNRC_PKTBUF macro available for all implementations endif ifneq (,$(filter gnrc_netif_%,$(USEMODULE))) USEMODULE += gnrc_netif endif ifneq (,$(filter gnrc_netif_pktq,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter netstats_%, $(USEMODULE))) USEMODULE += netstats endif ifneq (,$(filter gnrc_lwmac,$(USEMODULE))) USEMODULE += gnrc_netif USEMODULE += gnrc_nettype_lwmac USEMODULE += gnrc_mac FEATURES_REQUIRED += periph_rtt endif ifneq (,$(filter pthread,$(USEMODULE))) USEMODULE += xtimer USEMODULE += timex endif ifneq (,$(filter schedstatistics,$(USEMODULE))) USEMODULE += xtimer USEMODULE += sched_cb 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 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 += xtimer USEMODULE += gnrc_pktbuf endif ifneq (,$(filter conn_can,$(USEMODULE))) USEMODULE += can USEMODULE += can_mbox USEMODULE += xtimer 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 USEMODULE += xtimer 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,$(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 gnrc%,$(USEMODULE))) USEMODULE += gnrc_sock_async endif ifneq (,$(filter openwsn%,$(USEMODULE))) USEMODULE += openwsn_sock_async endif endif ifneq (,$(filter sock_dns,$(USEMODULE))) USEMODULE += sock_udp USEMODULE += sock_util USEMODULE += posix_headers 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,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter event,$(USEMODULE))) USEMODULE += core_thread_flags endif ifneq (,$(filter l2filter_%,$(USEMODULE))) USEMODULE += l2filter endif ifneq (,$(filter gcoap,$(USEMODULE))) USEMODULE += nanocoap USEMODULE += sock_async_event USEMODULE += sock_udp USEMODULE += sock_util USEMODULE += event_callback USEMODULE += event_timeout ifneq (,$(filter gnrc%,$(USEMODULE))) USEMODULE += gnrc_sock_async endif ifneq (,$(filter openwsn%,$(USEMODULE))) USEMODULE += openwsn_sock_udp endif endif ifneq (,$(filter luid,$(USEMODULE))) FEATURES_OPTIONAL += periph_cpuid endif ifneq (,$(filter nanocoap_sock,$(USEMODULE))) USEMODULE += sock_udp endif ifneq (,$(filter nanocoap_%,$(USEMODULE))) USEMODULE += nanocoap endif ifneq (,$(filter benchmark,$(USEMODULE))) USEMODULE += xtimer 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 ifneq (,$(filter periph_rtt,$(USEMODULE))) USEMODULE += ztimer_periph_rtt endif 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 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 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_hdr, $(USEMODULE))) USEMODULE += checksum USEMODULE += riotboot endif ifneq (,$(filter riotboot_usb_dfu, $(USEMODULE))) USEMODULE += usbus_dfu USEMODULE += riotboot_flashwrite 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 suit,$(USEMODULE))) USEPKG += nanocbor USEPKG += libcose USEMODULE += uuid ifeq (,$(filter libcose_crypt_%,$(USEMODULE))) USEMODULE += libcose_crypt_c25519 endif # tests/suit_manifest has some mock implementations, # only add the non-mock dependencies if not building that test. ifeq (,$(filter suit_transport_mock,$(USEMODULE))) # SUIT depends on riotboot support and some extra riotboot modules FEATURES_REQUIRED += riotboot USEMODULE += riotboot_slot USEMODULE += riotboot_flashwrite USEMODULE += riotboot_flashwrite_verify_sha256 endif endif ifneq (,$(filter suit_transport_%, $(USEMODULE))) USEMODULE += suit_transport endif ifneq (,$(filter suit_transport_coap, $(USEMODULE))) USEMODULE += nanocoap endif ifneq (,$(filter suit_storage_%, $(USEMODULE))) USEMODULE += suit_storage endif ifneq (,$(filter suit_%,$(USEMODULE))) USEMODULE += suit endif # include ztimer dependencies ifneq (,$(filter ztimer% %ztimer,$(USEMODULE))) include $(RIOTBASE)/sys/ztimer/Makefile.dep endif ifneq (,$(filter evtimer,$(USEMODULE))) ifneq (,$(filter evtimer_on_ztimer,$(USEMODULE))) USEMODULE += ztimer_msec else USEMODULE += xtimer endif endif # handle xtimer's deps. Needs to be done *after* ztimer ifneq (,$(filter xtimer,$(USEMODULE))) ifeq (,$(filter ztimer_xtimer_compat,$(USEMODULE))) # xtimer is used, ztimer xtimer wrapper is not DEFAULT_MODULE += auto_init_xtimer USEMODULE += div ifeq (,$(filter xtimer_on_ztimer,$(USEMODULE))) # ztimer is not used, so use *periph_timer as low-level timer*. FEATURES_REQUIRED += periph_timer else # will use *ztimer_usec as low-level timer* endif else # ztimer_xtimer_compat is used, all of *xtimer's API will be mapped on ztimer.* endif 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 include $(RIOTBASE)/sys/test_utils/Makefile.dep