Skip to content
Snippets Groups Projects
Makefile.dep 15.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • #
    OLD_USEMODULE := $(sort $(USEMODULE))
    OLD_USEPKG := $(sort $(USEPKG))
    
    # include board dependencies
    -include $(RIOTBOARD)/$(BOARD)/Makefile.dep
    
    # pull dependencies from drivers
    include $(RIOTBASE)/drivers/Makefile.dep
    
    ifneq (,$(filter cbor_ctime,$(USEMODULE)))
      ifneq (,$(filter newlib,$(USEMODULE)))
        USEMODULE += newlib_gnu_source
      endif
    endif
    
    
    ifneq (,$(filter csma_sender,$(USEMODULE)))
    
      USEMODULE += random
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter gnrc_mac,$(USEMODULE)))
      USEMODULE += gnrc_priority_pktqueue
      USEMODULE += csma_sender
    endif
    
    ifneq (,$(filter gnrc_gomach,$(USEMODULE)))
      USEMODULE += gnrc_netif
      USEMODULE += random
      USEMODULE += xtimer
      USEMODULE += gnrc_mac
      FEATURES_REQUIRED += periph_rtt
    endif
    
    
    ifneq (,$(filter nhdp,$(USEMODULE)))
    
    Martine Lenders's avatar
    Martine Lenders committed
      USEMODULE += sock_udp
    
      USEMODULE += xtimer
    
      USEMODULE += oonf_rfc5444
    endif
    
    
    Luminita's avatar
    Luminita committed
    ifneq (,$(filter sntp,$(USEMODULE)))
      USEMODULE += gnrc_sock_udp
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter gnrc_netdev_default,$(USEMODULE)))
      USEMODULE += netdev_default
    
      USEMODULE += gnrc_netif
    
    ifneq (,$(filter netdev_ieee802154,$(USEMODULE)))
    
    ifneq (,$(filter gnrc_uhcpc,$(USEMODULE)))
    
      USEMODULE += uhcpc
      USEMODULE += gnrc_sock_udp
      USEMODULE += fmt
    
    ifneq (,$(filter uhcpc,$(USEMODULE)))
      USEMODULE += posix
    endif
    
    
    ifneq (,$(filter nordic_softdevice_ble,$(USEPKG)))
    
      USEMODULE += softdevice_handler
      USEMODULE += ble_common
      USEMODULE += ble_6lowpan
      USEMODULE += gnrc_sixlowpan
      USEMODULE += gnrc_sixlowpan_iphc
      USEMODULE += gnrc_ipv6_default
    
    Vincent Dupont's avatar
    Vincent Dupont committed
    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_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
    
    ifneq (,$(filter gnrc_netapi_mbox,$(USEMODULE)))
      USEMODULE += core_mbox
    endif
    
    
    ifneq (,$(filter netdev_tap,$(USEMODULE)))
    
    Oleg Hahm's avatar
    Oleg Hahm committed
      USEMODULE += netif
    
      USEMODULE += netdev_eth
    
    ifneq (,$(filter gnrc_tftp,$(USEMODULE)))
      USEMODULE += gnrc_udp
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter gnrc_rpl_p2p,$(USEMODULE)))
      USEMODULE += gnrc_rpl
    endif
    
    
    ifneq (,$(filter gnrc_rpl,$(USEMODULE)))
      USEMODULE += gnrc_ipv6_router_default
    
      USEMODULE += trickle
    
      USEMODULE += xtimer
    
    ifneq (,$(filter trickle,$(USEMODULE)))
    
    ifneq (,$(filter ieee802154,$(USEMODULE)))
    
      ifneq (,$(filter gnrc_ipv6, $(USEMODULE)))
        USEMODULE += gnrc_sixlowpan
    
      ifneq (,$(filter gnrc_ipv6_router, $(USEMODULE)))
    
        USEMODULE += gnrc_sixlowpan_router
    
      ifneq (,$(filter gnrc_ipv6_default, $(USEMODULE)))
        USEMODULE += gnrc_sixlowpan_default
    
      ifneq (,$(filter gnrc_ipv6_router_default, $(USEMODULE)))
    
        USEMODULE += gnrc_sixlowpan_router_default
    
      ifneq (,$(filter lwip%, $(USEMODULE)))
        USEMODULE += lwip_sixlowpan
      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
    
    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
    
    ifneq (,$(filter gnrc_sixlowpan_frag,$(USEMODULE)))
      USEMODULE += gnrc_sixlowpan
    
    ifneq (,$(filter gnrc_sixlowpan_iphc,$(USEMODULE)))
      USEMODULE += gnrc_sixlowpan
      USEMODULE += gnrc_sixlowpan_ctx
    
      USEMODULE += gnrc_sixlowpan_iphc_nhc
    
    ifneq (,$(filter gnrc_sixlowpan,$(USEMODULE)))
      USEMODULE += gnrc_ipv6
    
      USEMODULE += sixlowpan
    
    ifneq (,$(filter gnrc_sixlowpan_ctx,$(USEMODULE)))
    
      USEMODULE += ipv6_addr
    
    ifneq (,$(filter gnrc_ipv6_default,$(USEMODULE)))
      USEMODULE += gnrc_ipv6
      USEMODULE += gnrc_icmpv6
    
    ifneq (,$(filter gnrc_ipv6_router_default,$(USEMODULE)))
      USEMODULE += gnrc_ipv6_router
      USEMODULE += gnrc_icmpv6
    
    ifneq (,$(filter gnrc_ndp,$(USEMODULE)))
    
      USEMODULE += gnrc_netif
    
    ifneq (,$(filter gnrc_icmpv6_echo,$(USEMODULE)))
      USEMODULE += gnrc_icmpv6
    
    ifneq (,$(filter gnrc_icmpv6_error,$(USEMODULE)))
      USEMODULE += gnrc_icmpv6
    endif
    
    
    ifneq (,$(filter gnrc_icmpv6,$(USEMODULE)))
    
      USEMODULE += inet_csum
    
      USEMODULE += gnrc_ipv6
    
      USEMODULE += icmpv6
    
    ifneq (,$(filter gnrc_rpl_srh,$(USEMODULE)))
    
    ifneq (,$(filter ipv6_ext_rh,$(USEMODULE)))
      USEMODULE += ipv6_ext
    
    ifneq (,$(filter gnrc_ipv6_ext,$(USEMODULE)))
      USEMODULE += gnrc_ipv6
    
    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
    
    ifneq (,$(filter gnrc_ipv6,$(USEMODULE)))
    
      USEMODULE += inet_csum
    
      USEMODULE += ipv6_addr
    
      USEMODULE += gnrc_ipv6_hdr
    
      USEMODULE += gnrc_ipv6_nib
    
      USEMODULE += gnrc_netif
    
    ifneq (,$(filter gnrc_ipv6_hdr,$(USEMODULE)))
    
      USEMODULE += gnrc_pktbuf
    
    ifneq (,$(filter sixlowpan,$(USEMODULE)))
      USEMODULE += ipv6_hdr
    endif
    
    
    ifneq (,$(filter ipv6_hdr,$(USEMODULE)))
      USEMODULE += inet_csum
    
      USEMODULE += ipv6_addr
    
    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_router,$(USEMODULE)))
      USEMODULE += gnrc_ipv6_nib
    endif
    
    
    ifneq (,$(filter gnrc_ipv6_nib,$(USEMODULE)))
    
      USEMODULE += evtimer
    
      USEMODULE += gnrc_ndp
    
      USEMODULE += gnrc_netif
    
      USEMODULE += ipv6_addr
      USEMODULE += random
    endif
    
    
    ifneq (,$(filter gnrc_udp,$(USEMODULE)))
    
      USEMODULE += inet_csum
    
      USEMODULE += udp
    
    ifneq (,$(filter gnrc_tcp,$(USEMODULE)))
      USEMODULE += inet_csum
      USEMODULE += random
    
      USEMODULE += tcp
    
      USEMODULE += xtimer
    
    ifneq (,$(filter gnrc_nettest,$(USEMODULE)))
      USEMODULE += gnrc_netapi
      USEMODULE += gnrc_netreg
      USEMODULE += gnrc_netif
      USEMODULE += gnrc_pktbuf
    
      USEMODULE += xtimer
    
    ifneq (,$(filter gnrc_pktdump,$(USEMODULE)))
      USEMODULE += gnrc_pktbuf
    
    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
    
      ifeq (,$(filter rtt_stdio,$(USEMODULE)))
        USEMODULE += uart_stdio
      endif
    
    ifneq (,$(filter posix_sockets,$(USEMODULE)))
    
      USEMODULE += bitfield
    
      USEMODULE += random
    
      USEMODULE += posix
      USEMODULE += xtimer
    
    ifneq (,$(filter rtt_stdio,$(USEMODULE)))
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter uart_stdio,$(USEMODULE)))
    
      USEMODULE += isrpipe
    
      FEATURES_REQUIRED += periph_uart
    
    Kaspar Schleiser's avatar
    Kaspar Schleiser committed
    ifneq (,$(filter isrpipe,$(USEMODULE)))
      USEMODULE += tsrb
    endif
    
    
    ifneq (,$(filter shell_commands,$(USEMODULE)))
      ifneq (,$(filter fib,$(USEMODULE)))
        USEMODULE += posix
      endif
    
    ifneq (,$(filter posix_semaphore,$(USEMODULE)))
    
    Martine Lenders's avatar
    Martine Lenders committed
      USEMODULE += sema
    
      USEMODULE += xtimer
    
    ifneq (,$(filter posix_time,$(USEMODULE)))
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter lwip_sixlowpan,$(USEMODULE)))
      USEMODULE += lwip_ipv6_autoconfig
    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
    
    ifneq (,$(filter lwip_sock_tcp,$(USEMODULE)))
      USEMODULE += lwip_tcp
    
      USEMODULE += sock_tcp
    
    ifneq (,$(filter lwip_sock_udp,$(USEMODULE)))
      USEMODULE += lwip_udp
    
      USEMODULE += sock_udp
    
    ifneq (,$(filter lwip_%,$(USEMODULE)))
      USEMODULE += lwip
    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
    endif
    
    ifneq (,$(filter lwip_ppp,$(USEMODULE)))
      USEMODULE += lwip_polarssl
    
    ifneq (,$(filter lwip_contrib,$(USEMODULE)))
      USEMODULE += sema
    
      USEMODULE += xtimer
    
    Martine Lenders's avatar
    Martine Lenders committed
    ifneq (,$(filter sema,$(USEMODULE)))
    
    Martine Lenders's avatar
    Martine Lenders committed
      USEMODULE += xtimer
    
    ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))
    
      USEMODULE += libfixmath
    
    ifneq (,$(filter luid,$(USEMODULE)))
      FEATURES_OPTIONAL += periph_cpuid
    endif
    
    
    ifneq (,$(filter fib,$(USEMODULE)))
    
      USEMODULE += universal_address
    
      USEMODULE += xtimer
    
    ifneq (,$(filter oonf_rfc5444,$(USEMODULE)))
      USEMODULE += oonf_common
    endif
    
    
    ifneq (,$(filter oonf_common,$(USEMODULE)))
    
      USEPKG += oonf_api
    
      USEMODULE += posix_sockets
    
    # 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
    endif
    
    ifneq (,$(filter gnrc,$(USEMODULE)))
      USEMODULE += gnrc_netapi
      USEMODULE += gnrc_netreg
      USEMODULE += gnrc_netif
      USEMODULE += gnrc_netif_hdr
      USEMODULE += gnrc_pktbuf
    
    ifneq (,$(filter gnrc_pktbuf, $(USEMODULE)))
      ifeq (,$(filter gnrc_pktbuf_%, $(USEMODULE)))
        USEMODULE += gnrc_pktbuf_static
      endif
    
      USEMODULE += gnrc_pkt
    
    endif
    
    ifneq (,$(filter gnrc_pktbuf_%, $(USEMODULE)))
      USEMODULE += gnrc_pktbuf # make MODULE_GNRC_PKTBUF macro available for all implementations
    endif
    
    
    ifneq (,$(filter netstats_%, $(USEMODULE)))
      USEMODULE += netstats
    endif
    
    
    ifneq (,$(filter gnrc_lwmac,$(USEMODULE)))
    
      USEMODULE += gnrc_netif
    
      USEMODULE += gnrc_mac
      FEATURES_REQUIRED += periph_rtt
    endif
    
    
    ifneq (,$(filter pthread,$(USEMODULE)))
    
      USEMODULE += xtimer
      USEMODULE += timex
    
    
    ifneq (,$(filter schedstatistics,$(USEMODULE)))
    
    ifneq (,$(filter arduino,$(USEMODULE)))
    
      FEATURES_REQUIRED += arduino
      FEATURES_REQUIRED += cpp
      USEMODULE += xtimer
    
    ifneq (,$(filter xtimer,$(USEMODULE)))
    
      FEATURES_REQUIRED += periph_timer
      USEMODULE += div
    
    
    ifneq (,$(filter saul_reg,$(USEMODULE)))
      USEMODULE += saul
    endif
    
    ifneq (,$(filter saul_default,$(USEMODULE)))
      USEMODULE += saul
    
      USEMODULE += saul_reg
      USEMODULE += auto_init_saul
    
    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 phydat,$(USEMODULE)))
      USEMODULE += fmt
    endif
    
    ifneq (,$(filter evtimer,$(USEMODULE)))
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter can_linux,$(USEMODULE)))
    
      LINKFLAGS += -lsocketcan
    
    Vincent Dupont's avatar
    Vincent Dupont committed
    ifneq (,$(filter can,$(USEMODULE)))
      USEMODULE += can_raw
    
      USEMODULE += auto_init_can
    
    Vincent Dupont's avatar
    Vincent Dupont committed
      ifneq (,$(filter can_mbox,$(USEMODULE)))
        USEMODULE += core_mbox
      endif
      USEMODULE += gnrc_pktbuf_static
    endif
    
    
    Vincent Dupont's avatar
    Vincent Dupont committed
    ifneq (,$(filter can_isotp,$(USEMODULE)))
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter conn_can,$(USEMODULE)))
      USEMODULE += can
      USEMODULE += can_mbox
      USEMODULE += xtimer
    endif
    
    
    ifneq (,$(filter random,$(USEMODULE)))
    
      # select default prng
      ifeq (,$(filter prng_%,$(USEMODULE)))
        USEMODULE += prng_tinymt32
      endif
    
      ifneq (,$(filter prng_tinymt32,$(USEMODULE)))
        USEMODULE += tinymt32
      endif
    
    ifneq (,$(filter openthread_contrib,$(USEMODULE)))
      USEMODULE += openthread_contrib_netdev
      FEATURES_REQUIRED += cpp
    
    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)))
    
      ifeq (native, $(BOARD))
        USEMODULE += native_vfs
      endif
    
    ifneq (,$(filter sock_dns,$(USEMODULE)))
      USEMODULE += sock_util
    endif
    
    
    ifneq (,$(filter event_%,$(USEMODULE)))
      USEMODULE += event
    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
    
    ifneq (,$(filter l2filter_%,$(USEMODULE)))
      USEMODULE += l2filter
    endif
    
    
    ifneq (,$(filter gcoap,$(USEMODULE)))
    
      USEMODULE += nanocoap
      USEMODULE += gnrc_sock_udp
    
    ifneq (,$(filter luid,$(USEMODULE)))
      FEATURES_OPTIONAL += periph_cpuid
    endif
    
    
    ifneq (,$(filter nanocoap_%,$(USEMODULE)))
      USEMODULE += nanocoap
    endif
    
    
    ifneq (,$(filter ccn-lite,$(USEPKG)))
      USEMODULE += ccn-lite-utils
    endif
    
    
    ifneq (,$(filter fatfs_vfs,$(USEMODULE)))
        USEPKG += fatfs
        USEMODULE += vfs
    
        ifeq ($(BOARD),native)
          USEMODULE += fatfs_diskio_native
          FATFS_DISKIO_NATIVE_DEFAULT_FILE ?= \"riot_fatfs_disk.img\"
        else
          USEMODULE += fatfs_diskio_sdcard_spi
          USEMODULE += auto_init_storage
        endif
    
    endif
    
    
    # always select gpio (until explicit dependencies are sorted out)
    FEATURES_OPTIONAL += periph_gpio
    
    
    # always select power management if available
    FEATURES_OPTIONAL += periph_pm
    
    
    # include package dependencies
    -include $(USEPKG:%=$(RIOTPKG)/%/Makefile.dep)
    
    
    # remove required features from optional features
    FEATURES_OPTIONAL := $(filter-out $(FEATURES_REQUIRED),$(FEATURES_OPTIONAL))
    
    # add all optional but provided features to the list of used features
    FEATURES_USED := $(sort $(FEATURES_REQUIRED) $(filter $(FEATURES_OPTIONAL),$(FEATURES_PROVIDED)))
    
    # all periph features correspond to a periph submodule
    USEMODULE += $(filter periph_%,$(FEATURES_USED))
    
    
    # recursively catch transitive dependencies
    USEMODULE := $(sort $(USEMODULE))
    USEPKG := $(sort $(USEPKG))
    ifneq ($(OLD_USEMODULE) $(OLD_USEPKG),$(USEMODULE) $(USEPKG))
    
      include $(RIOTBASE)/Makefile.dep