1################################################################################ 2# 3# busybox 4# 5################################################################################ 6 7BUSYBOX_VERSION = 1.36.0 8BUSYBOX_SITE = https://www.busybox.net/downloads 9BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 10BUSYBOX_LICENSE = GPL-2.0, bzip2-1.0.4 11BUSYBOX_LICENSE_FILES = LICENSE archival/libarchive/bz/LICENSE 12BUSYBOX_CPE_ID_VENDOR = busybox 13 14# 0003-libbb-sockaddr2str-ensure-only-printable-characters-.patch 15# 0004-nslookup-sanitize-all-printed-strings-with-printable.patch 16BUSYBOX_IGNORE_CVES += CVE-2022-28391 17 18BUSYBOX_CFLAGS = \ 19 $(TARGET_CFLAGS) 20 21BUSYBOX_LDFLAGS = \ 22 $(TARGET_LDFLAGS) 23 24# Packages that provide commands that may also be busybox applets: 25BUSYBOX_DEPENDENCIES = \ 26 $(if $(BR2_PACKAGE_ATTR),attr) \ 27 $(if $(BR2_PACKAGE_BASH),bash) \ 28 $(if $(BR2_PACKAGE_BC),bc) \ 29 $(if $(BR2_PACKAGE_BINUTILS),binutils) \ 30 $(if $(BR2_PACKAGE_COREUTILS),coreutils) \ 31 $(if $(BR2_PACKAGE_CPIO),cpio) \ 32 $(if $(BR2_PACKAGE_DCRON),dcron) \ 33 $(if $(BR2_PACKAGE_DEBIANUTILS),debianutils) \ 34 $(if $(BR2_PACKAGE_DIFFUTILS),diffutils) \ 35 $(if $(BR2_PACKAGE_DOS2UNIX),dos2unix) \ 36 $(if $(BR2_PACKAGE_DOSFSTOOLS),dosfstools) \ 37 $(if $(BR2_PACKAGE_E2FSPROGS),e2fsprogs) \ 38 $(if $(BR2_PACKAGE_FBSET),fbset) \ 39 $(if $(BR2_PACKAGE_GAWK),gawk) \ 40 $(if $(BR2_PACKAGE_GREP),grep) \ 41 $(if $(BR2_PACKAGE_GZIP),gzip) \ 42 $(if $(BR2_PACKAGE_I2C_TOOLS),i2c-tools) \ 43 $(if $(BR2_PACKAGE_IFENSLAVE),ifenslave) \ 44 $(if $(BR2_PACKAGE_IFPLUGD),ifplugd) \ 45 $(if $(BR2_PACKAGE_IFUPDOWN),ifupdown) \ 46 $(if $(BR2_PACKAGE_IPCALC),ipcalc) \ 47 $(if $(BR2_PACKAGE_IPROUTE2),iproute2) \ 48 $(if $(BR2_PACKAGE_IPUTILS),iputils) \ 49 $(if $(BR2_PACKAGE_KMOD),kmod) \ 50 $(if $(BR2_PACKAGE_LESS),less) \ 51 $(if $(BR2_PACKAGE_LSOF),lsof) \ 52 $(if $(BR2_PACKAGE_MTD),mtd) \ 53 $(if $(BR2_PACKAGE_NET_TOOLS),net-tools) \ 54 $(if $(BR2_PACKAGE_NETCAT),netcat) \ 55 $(if $(BR2_PACKAGE_NETCAT_OPENBSD),netcat-openbsd) \ 56 $(if $(BR2_PACKAGE_NMAP),nmap) \ 57 $(if $(BR2_PACKAGE_NTP),ntp) \ 58 $(if $(BR2_PACKAGE_PCIUTILS),pciutils) \ 59 $(if $(BR2_PACKAGE_PROCPS_NG),procps-ng) \ 60 $(if $(BR2_PACKAGE_PSMISC),psmisc) \ 61 $(if $(BR2_PACKAGE_START_STOP_DAEMON),start-stop-daemon) \ 62 $(if $(BR2_PACKAGE_SYSKLOGD),sysklogd) \ 63 $(if $(BR2_PACKAGE_SYSTEMD),systemd) \ 64 $(if $(BR2_PACKAGE_SYSVINIT),sysvinit) \ 65 $(if $(BR2_PACKAGE_TAR),tar) \ 66 $(if $(BR2_PACKAGE_TFTPD),tftpd) \ 67 $(if $(BR2_PACKAGE_TRACEROUTE),traceroute) \ 68 $(if $(BR2_PACKAGE_UNZIP),unzip) \ 69 $(if $(BR2_PACKAGE_USBUTILS),usbutils) \ 70 $(if $(BR2_PACKAGE_UTIL_LINUX),util-linux) \ 71 $(if $(BR2_PACKAGE_VIM),vim) \ 72 $(if $(BR2_PACKAGE_WATCHDOG),watchdog) \ 73 $(if $(BR2_PACKAGE_WGET),wget) \ 74 $(if $(BR2_PACKAGE_WHOIS),whois) 75 76# Link against libtirpc if available so that we can leverage its RPC 77# support for NFS mounting with BusyBox 78ifeq ($(BR2_PACKAGE_LIBTIRPC),y) 79ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_BUSYBOX_STATIC),) 80BUSYBOX_DEPENDENCIES += libtirpc host-pkgconf 81BUSYBOX_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" 82# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for 83# the non-final link of modules as well. 84BUSYBOX_CFLAGS_busybox += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" 85endif 86endif 87 88# Allows the build system to tweak CFLAGS 89BUSYBOX_MAKE_ENV = \ 90 $(TARGET_MAKE_ENV) \ 91 CFLAGS="$(BUSYBOX_CFLAGS)" \ 92 CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)" 93 94ifeq ($(BR2_REPRODUCIBLE),y) 95BUSYBOX_MAKE_ENV += \ 96 KCONFIG_NOTIMESTAMP=1 97endif 98 99BUSYBOX_MAKE_OPTS = \ 100 AR="$(TARGET_AR)" \ 101 NM="$(TARGET_NM)" \ 102 RANLIB="$(TARGET_RANLIB)" \ 103 CC="$(TARGET_CC)" \ 104 ARCH=$(NORMALIZED_ARCH) \ 105 PREFIX="$(TARGET_DIR)" \ 106 EXTRA_LDFLAGS="$(BUSYBOX_LDFLAGS)" \ 107 CROSS_COMPILE="$(TARGET_CROSS)" \ 108 CONFIG_PREFIX="$(TARGET_DIR)" \ 109 SKIP_STRIP=y 110 111# specifying BUSYBOX_CONFIG_FILE on the command-line overrides the .config 112# setting. 113# check-package disable Ifdef 114ifndef BUSYBOX_CONFIG_FILE 115BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)) 116endif 117 118BUSYBOX_KCONFIG_SUPPORTS_DEFCONFIG = NO 119BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE) 120BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES)) 121BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig 122BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS) 123 124ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) 125define BUSYBOX_PERMISSIONS 126# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE. 127# 12 Applets are pulled from applets.h using grep command : 128# grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \ 129# $(@D)/include/applets.h 130# These applets are added to the device table and the makedev file 131# ignores the files with type 'F' ( optional files). 132 /usr/bin/wall F 4755 0 0 - - - - - 133 /bin/ping F 4755 0 0 - - - - - 134 /bin/ping6 F 4755 0 0 - - - - - 135 /usr/bin/crontab F 4755 0 0 - - - - - 136 /sbin/findfs F 4755 0 0 - - - - - 137 /bin/login F 4755 0 0 - - - - - 138 /bin/mount F 4755 0 0 - - - - - 139 /usr/bin/passwd F 4755 0 0 - - - - - 140 /bin/su F 4755 0 0 - - - - - 141 /usr/bin/traceroute F 4755 0 0 - - - - - 142 /usr/bin/traceroute6 F 4755 0 0 - - - - - 143 /usr/bin/vlock F 4755 0 0 - - - - - 144endef 145else 146define BUSYBOX_PERMISSIONS 147 /bin/busybox f 4755 0 0 - - - - - 148endef 149endif 150 151# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d 152ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y) 153define BUSYBOX_INSTALL_MDEV_SCRIPT 154 $(INSTALL) -D -m 0755 package/busybox/S10mdev \ 155 $(TARGET_DIR)/etc/init.d/S10mdev 156endef 157define BUSYBOX_INSTALL_MDEV_CONF 158 $(INSTALL) -D -m 0644 package/busybox/mdev.conf \ 159 $(TARGET_DIR)/etc/mdev.conf 160endef 161define BUSYBOX_SET_MDEV 162 $(call KCONFIG_ENABLE_OPT,CONFIG_MDEV) 163 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF) 164 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC) 165 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE) 166endef 167endif 168 169# sha passwords need USE_BB_CRYPT_SHA 170ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y) 171define BUSYBOX_SET_CRYPT_SHA 172 $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA) 173endef 174endif 175 176ifeq ($(BR2_USE_MMU),y) 177define BUSYBOX_SET_MMU 178 $(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU) 179endef 180else 181define BUSYBOX_SET_MMU 182 $(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU) 183 $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON) 184 $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF) 185 $(call KCONFIG_DISABLE_OPT,CONFIG_ASH) 186 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH) 187 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT) 188 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION) 189 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP) 190 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE) 191 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY) 192 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB) 193 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK) 194 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF) 195 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS) 196 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE) 197 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS) 198 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL) 199 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT) 200 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N) 201 $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X) 202endef 203endif 204 205ifneq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_BUSYBOX_STATIC),) 206define BUSYBOX_SET_STATIC 207 $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC) 208endef 209else 210define BUSYBOX_SET_STATIC 211 $(call KCONFIG_DISABLE_OPT,CONFIG_STATIC) 212endef 213endif 214 215define BUSYBOX_INSTALL_UDHCPC_SCRIPT 216 if grep -q CONFIG_UDHCPC=y $(@D)/.config; then \ 217 $(INSTALL) -m 0755 -D package/busybox/udhcpc.script \ 218 $(TARGET_DIR)/usr/share/udhcpc/default.script; \ 219 $(INSTALL) -m 0755 -d \ 220 $(TARGET_DIR)/usr/share/udhcpc/default.script.d; \ 221 fi 222endef 223 224define BUSYBOX_INSTALL_ZCIP_SCRIPT 225 if grep -q CONFIG_ZCIP=y $(@D)/.config; then \ 226 $(INSTALL) -m 0755 -D $(@D)/examples/zcip.script \ 227 $(TARGET_DIR)/usr/share/zcip/default.script; \ 228 fi 229endef 230 231ifeq ($(BR2_INIT_BUSYBOX),y) 232 233define BUSYBOX_SET_INIT 234 $(call KCONFIG_ENABLE_OPT,CONFIG_INIT) 235endef 236 237ifeq ($(BR2_TARGET_SERIAL_SHELL_GETTY),y) 238BUSYBOX_SERIAL_SHELL = "$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM)" 239else 240ifeq ($(BR2_TARGET_SERIAL_SHELL_SH),y) 241BUSYBOX_SERIAL_SHELL = "::respawn:-/bin/sh" 242else ifeq ($(BR2_TARGET_SERIAL_SHELL_LOGIN),y) 243BUSYBOX_SERIAL_SHELL = "::respawn:-/bin/login" 244else 245BUSYBOX_SERIAL_SHELL = 246endif 247 248BUSYBOX_SERIAL_SHELL += " \# ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" 249endif # BR2_TARGET_GENERIC_GETTY 250 251define BUSYBOX_SET_GETTY 252 $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(call qstrip,$(BUSYBOX_SERIAL_SHELL)) #~' \ 253 $(TARGET_DIR)/etc/inittab 254endef 255BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY 256 257BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB 258 259endif # BR2_INIT_BUSYBOX 260 261ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y) 262BUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol 263define BUSYBOX_SET_SELINUX 264 $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX) 265 $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED) 266endef 267endif 268 269# enable relevant options to allow the Busybox less applet to be used 270# as a systemd pager 271ifeq ($(BR2_PACKAGE_SYSTEMD):$(BR2_PACKAGE_LESS),y:) 272define BUSYBOX_SET_LESS_FLAGS 273 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_DASHCMD) 274 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_RAW) 275 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_TRUNCATE) 276 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_FLAGS) 277 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_ENV) 278endef 279endif 280 281ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) 282define BUSYBOX_SET_INDIVIDUAL_BINARIES 283 $(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX) 284 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL) 285endef 286 287define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES 288 rm -f $(TARGET_DIR)/bin/busybox 289endef 290endif 291 292ifeq ($(BR2_PACKAGE_BUSYBOX_UNICODE),y) 293ifneq ($(qstrip $(BR2_GENERATE_LOCALE)),) 294define BUSYBOX_SET_LOCALE 295 $(call KCONFIG_ENABLE_OPT,CONFIG_UNICODE_USING_LOCALE) 296endef 297else 298define BUSYBOX_SET_LOCALE 299 $(call KCONFIG_DISABLE_OPT,CONFIG_UNICODE_USING_LOCALE) 300 $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_CHECK_UNICODE_IN_ENV) 301endef 302endif 303 304define BUSYBOX_SET_UNICODE 305 $(call KCONFIG_ENABLE_OPT,CONFIG_LOCALE_SUPPORT) 306 $(call KCONFIG_ENABLE_OPT,CONFIG_UNICODE_SUPPORT) 307 $(call KCONFIG_SET_OPT,CONFIG_LAST_SUPPORTED_WCHAR,0) 308 $(call KCONFIG_ENABLE_OPT,CONFIG_UNICODE_WIDE_WCHARS) 309 $(BUSYBOX_SET_LOCALE) 310endef 311endif 312 313ifeq ($(BR2_PACKAGE_BUSYBOX_UNICODE_BYPASS),y) 314define BUSYBOX_SET_UNICODE_BYPASS 315 $(call KCONFIG_ENABLE_OPT,CONFIG_UNICODE_BYPASS) 316endef 317else 318define BUSYBOX_SET_UNICODE_BYPASS 319 $(call KCONFIG_DISABLE_OPT,CONFIG_UNICODE_BYPASS) 320endef 321endif 322 323# Only install our logging scripts if no other package does it. 324ifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),) 325define BUSYBOX_INSTALL_LOGGING_SCRIPT 326 if grep -q CONFIG_SYSLOGD=y $(@D)/.config; \ 327 then \ 328 $(INSTALL) -m 0755 -D package/busybox/S01syslogd \ 329 $(TARGET_DIR)/etc/init.d/S01syslogd; \ 330 fi; \ 331 if grep -q CONFIG_KLOGD=y $(@D)/.config; \ 332 then \ 333 $(INSTALL) -m 0755 -D package/busybox/S02klogd \ 334 $(TARGET_DIR)/etc/init.d/S02klogd; \ 335 fi 336endef 337endif 338 339# Only install our sysctl scripts if no other package does it. 340ifeq ($(BR2_PACKAGE_PROCPS_NG),) 341define BUSYBOX_INSTALL_SYSCTL_SCRIPT 342 if grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \ 343 then \ 344 $(INSTALL) -m 0755 -D package/busybox/S02sysctl \ 345 $(TARGET_DIR)/etc/init.d/S02sysctl ; \ 346 fi 347endef 348endif 349 350ifeq ($(BR2_INIT_BUSYBOX),y) 351define BUSYBOX_INSTALL_INITTAB 352 if test ! -e $(TARGET_DIR)/etc/inittab; then \ 353 $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab; \ 354 fi 355endef 356endif 357 358ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y) 359define BUSYBOX_SET_WATCHDOG 360 $(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG) 361endef 362define BUSYBOX_INSTALL_WATCHDOG_SCRIPT 363 $(INSTALL) -D -m 0755 package/busybox/S15watchdog \ 364 $(TARGET_DIR)/etc/init.d/S15watchdog 365 $(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \ 366 $(TARGET_DIR)/etc/init.d/S15watchdog 367endef 368endif 369 370# PAM support requires thread support in the toolchain 371ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy) 372define BUSYBOX_LINUX_PAM 373 $(call KCONFIG_ENABLE_OPT,CONFIG_PAM) 374endef 375BUSYBOX_DEPENDENCIES += linux-pam 376else 377define BUSYBOX_LINUX_PAM 378 $(call KCONFIG_DISABLE_OPT,CONFIG_PAM) 379endef 380endif 381 382# Telnet support 383define BUSYBOX_INSTALL_TELNET_SCRIPT 384 if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ 385 $(INSTALL) -m 0755 -D package/busybox/S50telnet \ 386 $(TARGET_DIR)/etc/init.d/S50telnet ; \ 387 fi 388endef 389define BUSYBOX_INSTALL_TELNET_SERVICE 390 if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ 391 $(INSTALL) -D -m 0644 package/busybox/telnetd.service \ 392 $(TARGET_DIR)/usr/lib/systemd/system/telnetd.service ; \ 393 fi 394endef 395 396# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear 397# can reject the user connection. See man shells. 398define BUSYBOX_INSTALL_ADD_TO_SHELLS 399 if grep -q CONFIG_ASH=y $(BUSYBOX_DIR)/.config; then \ 400 grep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \ 401 || echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \ 402 fi 403 if grep -q CONFIG_HUSH=y $(BUSYBOX_DIR)/.config; then \ 404 grep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \ 405 || echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \ 406 fi 407endef 408BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS 409 410define BUSYBOX_KCONFIG_FIXUP_CMDS 411 $(BUSYBOX_SET_MMU) 412 $(BUSYBOX_SET_STATIC) 413 $(BUSYBOX_SET_MDEV) 414 $(BUSYBOX_SET_CRYPT_SHA) 415 $(BUSYBOX_LINUX_PAM) 416 $(BUSYBOX_SET_INIT) 417 $(BUSYBOX_SET_WATCHDOG) 418 $(BUSYBOX_SET_SELINUX) 419 $(BUSYBOX_SET_LESS_FLAGS) 420 $(BUSYBOX_SET_INDIVIDUAL_BINARIES) 421 $(BUSYBOX_SET_UNICODE) 422 $(BUSYBOX_SET_UNICODE_BYPASS) 423endef 424 425define BUSYBOX_BUILD_CMDS 426 $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) 427endef 428 429define BUSYBOX_INSTALL_TARGET_CMDS 430 # Use the 'noclobber' install rule, to prevent BusyBox from overwriting 431 # any full-blown versions of apps installed by other packages. 432 $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install-noclobber 433 $(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES) 434 $(BUSYBOX_INSTALL_INITTAB) 435 $(BUSYBOX_INSTALL_UDHCPC_SCRIPT) 436 $(BUSYBOX_INSTALL_ZCIP_SCRIPT) 437 $(BUSYBOX_INSTALL_MDEV_CONF) 438endef 439 440# Install the sysvinit scripts, for the moment, but not those that already 441# have a corresponding one in openrc. 442define BUSYBOX_INSTALL_INIT_OPENRC 443 $(BUSYBOX_INSTALL_MDEV_SCRIPT) 444 $(BUSYBOX_INSTALL_LOGGING_SCRIPT) 445 $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) 446 $(BUSYBOX_INSTALL_TELNET_SCRIPT) 447endef 448 449define BUSYBOX_INSTALL_INIT_SYSTEMD 450 $(BUSYBOX_INSTALL_TELNET_SERVICE) 451endef 452 453define BUSYBOX_INSTALL_INIT_SYSV 454 $(BUSYBOX_INSTALL_MDEV_SCRIPT) 455 $(BUSYBOX_INSTALL_LOGGING_SCRIPT) 456 $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) 457 $(BUSYBOX_INSTALL_SYSCTL_SCRIPT) 458 $(BUSYBOX_INSTALL_TELNET_SCRIPT) 459endef 460 461# Checks to give errors that the user can understand 462# Must be before we call to kconfig-package 463ifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy) 464ifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),) 465$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting) 466endif 467endif 468 469$(eval $(kconfig-package)) 470