mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
276ad5716a
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.
64 lines
1.5 KiB
Makefile
64 lines
1.5 KiB
Makefile
# All stm32 families provide pm support
|
|
|
|
# include stm32 common periph drivers, clock configurations and vectors
|
|
USEMODULE += periph stm32_clk stm32_vectors
|
|
|
|
ifneq (,$(filter periph_usbdev,$(FEATURES_USED)))
|
|
USEMODULE += ztimer
|
|
USEMODULE += ztimer_msec
|
|
endif
|
|
|
|
ifneq (,$(filter periph_uart_nonblocking,$(USEMODULE)))
|
|
USEMODULE += tsrb
|
|
endif
|
|
|
|
ifneq (,$(filter stm32_eth_%,$(USEMODULE)))
|
|
USEMODULE += stm32_eth
|
|
endif
|
|
|
|
ifneq (,$(filter stm32_eth_auto,$(USEMODULE)))
|
|
USEMODULE += stm32_eth_link_up
|
|
endif
|
|
|
|
ifneq (,$(filter stm32_eth,$(USEMODULE)))
|
|
FEATURES_REQUIRED += periph_eth
|
|
USEMODULE += iolist
|
|
USEMODULE += netdev_eth
|
|
USEMODULE += netdev_legacy_api
|
|
USEMODULE += ztimer
|
|
USEMODULE += ztimer_msec
|
|
|
|
# lwip IPv6 supports needs link up events to perform duplicate address
|
|
# detection
|
|
ifneq (,$(filter lwip_ipv6,$(USEMODULE)))
|
|
USEMODULE += stm32_eth_link_up
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter periph_can,$(FEATURES_USED)))
|
|
FEATURES_REQUIRED += periph_gpio
|
|
FEATURES_REQUIRED += periph_gpio_irq
|
|
endif
|
|
|
|
ifneq (,$(filter periph_eth periph_ptp,$(USEMODULE)))
|
|
USEMODULE += periph_eth_common
|
|
endif
|
|
|
|
# periph_rtc_mem is currently tied to the periph_rtc
|
|
ifneq (,$(filter periph_rtc_mem,$(USEMODULE)))
|
|
FEATURES_REQUIRED += periph_rtc
|
|
endif
|
|
|
|
ifneq (,$(filter periph_adc,$(FEATURES_USED)))
|
|
ifneq (,$(filter f3 l4 wl, $(CPU_FAM)))
|
|
USEMODULE += ztimer
|
|
USEMODULE += ztimer_msec
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter periph_vbat,$(USEMODULE)))
|
|
FEATURES_REQUIRED += periph_adc
|
|
endif
|
|
|
|
include $(RIOTCPU)/cortexm_common/Makefile.dep
|