# Process provided FEATURES # # The board/board common are responsible for defining the CPU and CPU_MODEL # variables in their Makefile.features. # This makes them available when setting features based on CPU_MODEL in the cpu # Makefile.features and also during dependency resolution. # Transition: # Moving 'CPU/CPU_MODEL' to Makefile.features is an ongoing work and may not # reflect the state of all boards for the moment. include $(BOARDDIR)/Makefile.features # Sanity check ifeq (,$(CPU)) $(error $(BOARD): CPU must be defined by board / board_common Makefile.features) endif include $(RIOTCPU)/$(CPU)/Makefile.features # Provide CPU as a feature to allow listing all boards with a CPU FEATURES_PROVIDED += cpu_$(CPU) # Features that are conflicting for all architectures FEATURES_CONFLICT += picolibc:newlib FEATURES_CONFLICT_MSG += "Only one standard C library can be used." FEATURES_CONFLICT += periph_gpio_irq:periph_gpio_ll_irq FEATURES_CONFLICT_MSG += "Only one GPIO IRQ implementation can be used." FEATURES_CONFLICT += periph_usbdev:tinyusb_device FEATURES_CONFLICT += periph_usbdev:tinyusb_host FEATURES_CONFLICT_MSG += "Package tinyUSB is not yet compatible with periph_usbdev." # Features provided implicitly ifneq (,$(filter periph_eth,$(FEATURES_PROVIDED))) FEATURES_PROVIDED += netif_ethernet endif ifneq (,$(filter netif_%,$(FEATURES_PROVIDED))) FEATURES_PROVIDED += netif endif