ifneq ($(__target_inc),1)
__target_inc=1
+
# default device type
DEVICE_TYPE?=router
fstools \
libc \
libgcc \
- libustream-wolfssl \
+ libustream-mbedtls \
logd \
mtd \
netifd \
- opkg \
uci \
uclient-fetch \
urandom-seed \
urngd
-ifneq ($(CONFIG_SELINUX),)
-DEFAULT_PACKAGES+=busybox-selinux procd-selinux
-else
-DEFAULT_PACKAGES+=busybox procd
-endif
-
# For the basic set
DEFAULT_PACKAGES.basic:=
# For nas targets
# For router targets
DEFAULT_PACKAGES.router:=\
dnsmasq \
- firewall \
- ip6tables \
- iptables \
- kmod-ipt-offload \
+ firewall4 \
+ nftables \
+ kmod-nft-offload \
odhcp6c \
odhcpd-ipv6only \
ppp \
target_conf=$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
ifeq ($(DUMP),)
- PLATFORM_DIR:=$(TOPDIR)/target/linux/$(BOARD)
+ PLATFORM_DIR:=$(firstword $(wildcard $(TOPDIR)/target/linux/feeds/$(BOARD) $(TOPDIR)/target/linux/$(BOARD)))
SUBTARGET:=$(strip $(foreach subdir,$(patsubst $(PLATFORM_DIR)/%/target.mk,%,$(wildcard $(PLATFORM_DIR)/*/target.mk)),$(if $(CONFIG_TARGET_$(call target_conf,$(BOARD)_$(subdir))),$(subdir))))
else
PLATFORM_DIR:=${CURDIR}
endif
endif
+ifneq ($(DUMP),)
+ # Parse generic config that might be set before a .config is generated to modify the
+ # default package configuration
+ # Keep DYNAMIC_DEF_PKG_CONF in sync with toplevel.mk to reflect the same configs
+ DYNAMIC_DEF_PKG_CONF := CONFIG_USE_APK CONFIG_SELINUX CONFIG_SMALL_FLASH CONFIG_SECCOMP
+ $(foreach config, $(DYNAMIC_DEF_PKG_CONF), \
+ $(eval $(config) := $(shell grep "$(config)=y" $(TOPDIR)/.config 2>/dev/null)) \
+ )
+ # The config options that are enabled by default and where other default
+ # packages depends on needs to be set if they are missing in the .config.
+ ifeq ($(shell grep "CONFIG_SECCOMP" $(TOPDIR)/.config 2>/dev/null),)
+ ifeq ($(filter $(BOARD), uml),)
+ ifneq ($(filter $(ARCH), aarch64 arm armeb mips mipsel mips64 mips64el i386 powerpc x86_64),)
+ CONFIG_SECCOMP := y
+ endif
+ endif
+ endif
+endif
+
+ifneq ($(CONFIG_USE_APK),)
+DEFAULT_PACKAGES+=apk-mbedtls
+else
+DEFAULT_PACKAGES+=opkg
+endif
+
+ifneq ($(CONFIG_SELINUX),)
+DEFAULT_PACKAGES+=busybox-selinux procd-selinux
+else
+DEFAULT_PACKAGES+=busybox procd
+endif
+
+# include ujail on systems with enough storage
+ifeq ($(CONFIG_SMALL_FLASH),)
+DEFAULT_PACKAGES+=procd-ujail
+endif
+
+# include seccomp ld-preload hooks if kernel supports it
+ifneq ($(CONFIG_SECCOMP),)
+DEFAULT_PACKAGES+=procd-seccomp
+endif
+
# Add device specific packages (here below to allow device type set from subtarget)
DEFAULT_PACKAGES += $(DEFAULT_PACKAGES.$(DEVICE_TYPE))
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG)))
LINUX_RECONFIG_TARGET = $(if $(USE_SUBTARGET_CONFIG),$(LINUX_SUBTARGET_CONFIG),$(LINUX_TARGET_CONFIG))
+CFG_TARGET = $(CONFIG_TARGET)
+ifeq ($(CFG_TARGET),platform)
+ CFG_TARGET = target
+ $(warning Deprecation warning: use CONFIG_TARGET=target instead.)
+else ifeq ($(CFG_TARGET),subtarget_platform)
+ CFG_TARGET = subtarget_target
+ $(warning Deprecation warning: use CONFIG_TARGET=subtarget_target instead.)
+endif
+
# select the config file to be changed by kernel_menuconfig/kernel_oldconfig
-ifeq ($(CONFIG_TARGET),platform)
+ifeq ($(CFG_TARGET),target)
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG))
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
-endif
-ifeq ($(CONFIG_TARGET),subtarget)
+else ifeq ($(CFG_TARGET),subtarget)
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG))
LINUX_RECONFIG_TARGET = $(LINUX_SUBTARGET_CONFIG)
-endif
-ifeq ($(CONFIG_TARGET),subtarget_platform)
+else ifeq ($(CFG_TARGET),subtarget_target)
LINUX_RECONFIG_LIST = $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(LINUX_TARGET_CONFIG))
LINUX_RECONFIG_TARGET = $(LINUX_TARGET_CONFIG)
-endif
-ifeq ($(CONFIG_TARGET),env)
+else ifeq ($(CFG_TARGET),env)
LINUX_RECONFIG_LIST = $(LINUX_KCONFIG_LIST)
LINUX_RECONFIG_TARGET = $(TOPDIR)/env/kernel-config
+else ifneq ($(strip $(CFG_TARGET)),)
+ $(error CONFIG_TARGET=$(CFG_TARGET) is invalid. Valid: target|subtarget|subtarget_target|env)
endif
__linux_confcmd = $(2) $(patsubst %,+,$(wordlist 2,9999,$(1))) $(1)
ifeq ($(ARCH),powerpc)
CPU_CFLAGS_603e:=-mcpu=603e
CPU_CFLAGS_8540:=-mcpu=8540
+ CPU_CFLAGS_8548:=-mcpu=8548
CPU_CFLAGS_405:=-mcpu=405
CPU_CFLAGS_440:=-mcpu=440
CPU_CFLAGS_464fp:=-mcpu=464fp
endif
ifeq ($(ARCH),powerpc64)
CPU_TYPE ?= powerpc64
+ CPU_CFLAGS_e5500:=-mcpu=e5500
CPU_CFLAGS_powerpc64:=-mcpu=powerpc64
endif
ifeq ($(ARCH),sparc)
CPU_CFLAGS_arc700 = -mcpu=arc700
CPU_CFLAGS_archs = -mcpu=archs
endif
+ ifeq ($(ARCH),riscv64)
+ CPU_TYPE ?= riscv64
+ CPU_CFLAGS_riscv64:=-mabi=lp64d -march=rv64imafdc
+ endif
+ ifeq ($(ARCH),loongarch64)
+ CPU_TYPE ?= generic
+ CPU_CFLAGS := -O2 -pipe
+ CPU_CFLAGS_generic:=-march=loongarch64
+ endif
ifneq ($(CPU_TYPE),)
ifndef CPU_CFLAGS_$(CPU_TYPE)
$(warning CPU_TYPE "$(CPU_TYPE)" doesn't correspond to a known type)
ifneq ($(CONFIG_CPU_MIPS32_R2),)
FEATURES += mips16
endif
- FEATURES += $(foreach v,6 7,$(if $(CONFIG_CPU_V$(v)),arm_v$(v)))
+ ifneq ($(CONFIG_CPU_V6),)
+ FEATURES += arm_v6
+ endif
+ ifneq ($(CONFIG_CPU_V6K),)
+ FEATURES += arm_v6
+ endif
+ ifneq ($(CONFIG_CPU_V7),)
+ FEATURES += arm_v7
+ endif
# remove duplicates
FEATURES:=$(sort $(FEATURES))