# include board specific application dependencies -include $(APPDIR)/Makefile.board.dep # include board dependencies -include $(BOARDDIR)/Makefile.dep # include cpu dependencies -include $(RIOTCPU)/$(CPU)/Makefile.dep # include external modules dependencies # processed before RIOT ones to be evaluated before the 'default' rules. -include $(EXTERNAL_MODULE_DIRS:%=%/Makefile.dep) # pull dependencies from sys and drivers include $(RIOTBASE)/sys/Makefile.dep include $(RIOTBASE)/drivers/Makefile.dep # pull Makefile.dep of each driver modules if they exist -include $(sort $(USEMODULE:%=$(RIOTBASE)/drivers/%/Makefile.dep)) # pull dependencies from packages -include $(USEPKG:%=$(RIOTPKG)/%/Makefile.dep) ifneq (,$(filter ssp,$(USEMODULE))) FEATURES_REQUIRED += ssp endif ifneq (,$(filter mpu_stack_guard,$(USEMODULE))) FEATURES_REQUIRED += cortexm_mpu endif ifneq (,$(filter mpu_noexec_ram,$(USEMODULE))) FEATURES_REQUIRED += cortexm_mpu 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 base64url,$(USEMODULE))) USEMODULE += base64 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 # Don't register netdevs if there is only a single one of them ifeq (,$(filter gnrc_netif_single,$(USEMODULE))) USEMODULE += netdev_register 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_neterr USEMODULE += gnrc_nettype_lorawan endif ifneq (,$(filter sntp,$(USEMODULE))) USEMODULE += sock_udp USEMODULE += xtimer 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 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 endif ifneq (,$(filter gnrc_sock_async,$(USEMODULE))) USEMODULE += sock_async USEMODULE += gnrc_netapi_callbacks endif ifneq (,$(filter gnrc_sock_ip,$(USEMODULE))) USEMODULE += sock_ip endif ifneq (,$(filter gnrc_sock_udp,$(USEMODULE))) USEMODULE += gnrc_udp USEMODULE += random # to generate random ports USEMODULE += sock_udp 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 gnrc_netif,$(USEMODULE))) USEMODULE += netif USEMODULE += l2util USEMODULE += fmt 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_router, $(USEMODULE))) USEMODULE += gnrc_sixlowpan_router 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_default USEMODULE += gnrc_ipv6_nib_6ln USEMODULE += gnrc_sixlowpan USEMODULE += gnrc_sixlowpan_frag USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_router_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_router_default USEMODULE += gnrc_ipv6_nib_6lr USEMODULE += gnrc_sixlowpan_router USEMODULE += gnrc_sixlowpan_frag USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_border_router_default,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_6lbr USEMODULE += gnrc_ipv6_router_default USEMODULE += gnrc_sixlowpan_router USEMODULE += gnrc_sixlowpan_frag USEMODULE += gnrc_sixlowpan_iphc endif ifneq (,$(filter gnrc_sixlowpan_router,$(USEMODULE))) USEMODULE += gnrc_ipv6_router 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_rb,$(USEMODULE))) USEMODULE += xtimer 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_netif endif ifneq (,$(filter gnrc_icmpv6_echo,$(USEMODULE))) USEMODULE += gnrc_icmpv6 endif ifneq (,$(filter gnrc_icmpv6_error,$(USEMODULE))) USEMODULE += gnrc_icmpv6 endif ifneq (,$(filter gnrc_icmpv6,$(USEMODULE))) USEMODULE += inet_csum USEMODULE += gnrc_ipv6 USEMODULE += gnrc_nettype_icmpv6 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_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 += ipv6_addr USEMODULE += random ifneq (,$(filter sock_dns,$(USEMODULE))) USEMODULE += gnrc_ipv6_nib_dns endif 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 += xtimer USEMODULE += core_mbox endif ifneq (,$(filter gnrc_pktdump,$(USEMODULE))) DEFAULT_MODULE += auto_init_gnrc_pktdump USEMODULE += gnrc_pktbuf USEMODULE += od endif ifneq (,$(filter od,$(USEMODULE))) USEMODULE += fmt endif ifneq (,$(filter od_string,$(USEMODULE))) USEMODULE += od endif ifneq (,$(filter newlib_gnu_source,$(USEMODULE))) USEMODULE += newlib endif ifneq (,$(filter newlib_nano,$(USEMODULE))) USEMODULE += 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 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 endif ifneq (,$(filter posix_semaphore,$(USEMODULE))) USEMODULE += sema USEMODULE += xtimer USEMODULE += posix_headers endif ifneq (,$(filter posix_time,$(USEMODULE))) USEMODULE += xtimer USEMODULE += posix_headers endif ifneq (,$(filter posix_inet,$(USEMODULE))) USEMODULE += posix_headers endif ifneq (,$(filter lwip_sixlowpan,$(USEMODULE))) USEMODULE += lwip_ipv6_autoconfig USEMODULE += l2util endif ifneq (,$(filter lwip_ipv6_autoconfig lwip_ipv6_mld,$(USEMODULE))) USEMODULE += lwip_ipv6 endif ifneq (,$(filter lwip_ipv6,$(USEMODULE))) USEMODULE += random endif ifneq (,$(filter lwip_udplite,$(USEMODULE))) USEMODULE += lwip_udp endif ifneq (,$(filter lwip_sock_%,$(USEMODULE))) USEMODULE += lwip_sock endif ifneq (,$(filter lwip_sock_ip,$(USEMODULE))) USEMODULE += lwip_raw USEMODULE += sock_ip endif ifneq (,$(filter lwip_sock_tcp,$(USEMODULE))) USEMODULE += lwip_tcp USEMODULE += sock_tcp endif ifneq (,$(filter lwip_sock_udp,$(USEMODULE))) USEMODULE += lwip_udp USEMODULE += sock_udp endif ifneq (,$(filter lwip_%,$(USEMODULE))) USEPKG += lwip USEMODULE += core_mbox USEMODULE += lwip_api USEMODULE += lwip_contrib USEMODULE += lwip_core USEMODULE += lwip_netif ifeq (,$(filter lwip_ipv4 lwip_ipv6,$(USEMODULE))) USEMODULE += lwip_ipv4 endif ifeq (,$(filter lwip_tcp lwip_udp lwip_udplite,$(USEMODULE))) USEMODULE += lwip_raw endif ifneq (,$(filter netdev_eth,$(USEMODULE))) USEMODULE += lwip_ethernet endif endif ifneq (,$(filter lwip_ppp,$(USEMODULE))) USEMODULE += lwip_polarssl endif ifneq (,$(filter lwip_contrib,$(USEMODULE))) USEMODULE += sema USEMODULE += xtimer endif ifneq (,$(filter lwip_dhcp_auto,$(USEMODULE))) USEMODULE += lwip_dhcp endif ifneq (,$(filter sema,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter libfixmath-unittests,$(USEMODULE))) USEPKG += libfixmath USEMODULE += libfixmath 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 gnrc,$(USEMODULE))) USEMODULE += gnrc_netapi USEMODULE += gnrc_netreg USEMODULE += gnrc_netif USEMODULE += gnrc_netif_hdr USEMODULE += gnrc_pktbuf 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 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 arduino,$(USEMODULE))) FEATURES_REQUIRED += arduino FEATURES_OPTIONAL += arduino_pwm FEATURES_OPTIONAL += periph_adc FEATURES_REQUIRED += periph_gpio USEMODULE += xtimer endif ifneq (,$(filter arduino_pwm,$(FEATURES_USED))) FEATURES_REQUIRED += periph_pwm endif ifneq (,$(filter saul,$(USEMODULE))) USEMODULE += phydat endif ifneq (,$(filter saul_reg,$(USEMODULE))) USEMODULE += saul endif ifneq (,$(filter saul_default,$(USEMODULE))) DEFAULT_MODULE += auto_init_saul USEMODULE += saul USEMODULE += saul_reg endif ifneq (,$(filter saul_adc,$(USEMODULE))) FEATURES_REQUIRED += periph_adc endif ifneq (,$(filter saul_gpio,$(USEMODULE))) FEATURES_REQUIRED += periph_gpio endif ifneq (,$(filter saul,$(USEMODULE))) USEMODULE += phydat endif ifneq (,$(filter saul_nrf_temperature,$(USEMODULE))) FEATURES_REQUIRED += periph_temperature endif ifneq (,$(filter phydat,$(USEMODULE))) USEMODULE += fmt endif ifneq (,$(filter evtimer,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter fuzzing,$(USEMODULE))) USEMODULE += netdev_test USEMODULE += gnrc_netif USEMODULE += gnrc_pktbuf_malloc endif ifneq (,$(filter can_linux,$(USEMODULE))) LINKFLAGS += -lsocketcan 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 puf_sram,$(USEMODULE))) USEMODULE += hashes USEMODULE += random FEATURES_REQUIRED += puf_sram endif ifneq (,$(filter random,$(USEMODULE))) DEFAULT_MODULE += auto_init_random USEMODULE += prng # select default prng ifeq (,$(filter prng_%,$(USEMODULE))) USEMODULE += prng_tinymt32 endif 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 asymcute,$(USEMODULE))) USEMODULE += sock_udp USEMODULE += sock_util 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_dns,$(USEMODULE))) USEMODULE += sock_util USEMODULE += posix_headers endif ifneq (,$(filter sock_util,$(USEMODULE))) USEMODULE += posix_inet USEMODULE += fmt USEMODULE += sock_udp 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 spiffs,$(USEMODULE))) USEPKG += spiffs USEMODULE += vfs USEMODULE += spiffs_fs USEMODULE += mtd endif ifneq (,$(filter littlefs,$(USEMODULE))) USEPKG += littlefs USEMODULE += vfs USEMODULE += littlefs_fs USEMODULE += mtd endif ifneq (,$(filter littlefs2,$(USEMODULE))) USEPKG += littlefs2 USEMODULE += vfs USEMODULE += littlefs2_fs USEMODULE += mtd endif ifneq (,$(filter l2filter_%,$(USEMODULE))) USEMODULE += l2filter endif ifneq (,$(filter gcoap,$(USEMODULE))) USEMODULE += nanocoap USEMODULE += gnrc_sock_async USEMODULE += sock_async_event USEMODULE += sock_util USEMODULE += event_callback USEMODULE += event_timeout endif ifneq (,$(filter luid,$(USEMODULE))) FEATURES_OPTIONAL += periph_cpuid endif ifneq (,$(filter nanocoap_%,$(USEMODULE))) USEMODULE += nanocoap endif ifneq (,$(filter fatfs_vfs,$(USEMODULE))) USEPKG += fatfs USEMODULE += vfs endif ifneq (,$(filter benchmark,$(USEMODULE))) USEMODULE += xtimer endif ifneq (,$(filter skald_%,$(USEMODULE))) USEMODULE += skald endif ifneq (,$(filter skald,$(USEMODULE))) FEATURES_REQUIRED += radio_nrfble USEMODULE += nrfble USEMODULE += xtimer USEMODULE += random endif ifneq (,$(filter bluetil_addr,$(USEMODULE))) USEMODULE += fmt endif ifneq (,$(filter nimble_%,$(USEMODULE))) USEPKG += nimble 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 tlsf-malloc,$(USEMODULE))) USEPKG += tlsf endif ifneq (,$(filter usbus,$(USEMODULE))) DEFAULT_MODULE += auto_init_usbus FEATURES_REQUIRED += periph_usbdev USEMODULE += core_thread_flags USEMODULE += event 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 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 irq_handler,$(USEMODULE))) USEMODULE += event endif ifneq (,$(filter tinydtls_sock_dtls, $(USEMODULE))) USEPKG += tinydtls USEMODULE += sock_dtls endif ifneq (,$(filter sock_dtls, $(USEMODULE))) USEMODULE += credman USEMODULE += sock_udp endif ifneq (,$(filter suit,$(USEMODULE))) USEPKG += nanocbor USEPKG += libcose USEMODULE += libcose_crypt_c25519 USEMODULE += uuid # 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_%,$(USEMODULE))) USEMODULE += suit endif # Enable periph_uart when periph_uart_nonblocking is enabled ifneq (,$(filter periph_uart_nonblocking,$(USEMODULE))) FEATURES_REQUIRED += periph_uart endif # include ztimer dependencies ifneq (,$(filter ztimer% %ztimer,$(USEMODULE))) include $(RIOTBASE)/sys/ztimer/Makefile.dep 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 # Enable periph_gpio when periph_gpio_irq is enabled ifneq (,$(filter periph_gpio_irq,$(USEMODULE))) FEATURES_REQUIRED += periph_gpio endif ifneq (,$(filter periph_timer_periodic,$(USEMODULE))) FEATURES_REQUIRED += periph_timer endif ifneq (,$(filter devfs_hwrng,$(USEMODULE))) FEATURES_REQUIRED += periph_hwrng endif ifneq (,$(filter devfs_random,$(USEMODULE))) USEMODULE += random endif # always select gpio (until explicit dependencies are sorted out) FEATURES_OPTIONAL += periph_gpio # always select power management if available FEATURES_OPTIONAL += periph_pm # always select provided architecture features FEATURES_REQUIRED += $(filter arch_%,$(FEATURES_PROVIDED)) # always select CPU core features FEATURES_REQUIRED += $(filter cpu_core_%,$(FEATURES_PROVIDED)) # don't use idle thread if architecture has needed support FEATURES_OPTIONAL += no_idle_thread ifneq (,$(filter libstdcpp,$(FEATURES_USED))) # Also use C++ if libstdc++ is used FEATURES_REQUIRED += cpp endif ifneq (,$(filter ecc_%,$(USEMODULE))) USEMODULE += ecc endif ifneq (,$(filter test_utils_interactive_sync,$(USEMODULE))) ifneq (,$(filter shell,$(USEMODULE))) DEFAULT_MODULE += test_utils_interactive_sync_shell endif endif