summaryrefslogtreecommitdiff
path: root/package/busybox/busybox.mk
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox.mk')
-rw-r--r--package/busybox/busybox.mk234
1 files changed, 130 insertions, 104 deletions
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index e17d12a57..78bf21a40 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -4,149 +4,175 @@
#
#############################################################
-
ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y)
-# Be aware that this changes daily....
-BUSYBOX_DIR:=$(BUILD_DIR)/busybox
-BUSYBOX_SOURCE:=busybox-snapshot.tar.bz2
-BUSYBOX_SITE:=http://www.busybox.net/downloads/snapshots
+BUSYBOX_VERSION = snapshot
+BUSYBOX_SITE = http://www.busybox.net/downloads/snapshots
else
-BUSYBOX_VERSION=$(call qstrip,$(BR2_BUSYBOX_VERSION))
-BUSYBOX_DIR:=$(BUILD_DIR)/busybox-$(BUSYBOX_VERSION)
-BUSYBOX_SOURCE:=busybox-$(BUSYBOX_VERSION).tar.bz2
-BUSYBOX_SITE:=http://www.busybox.net/downloads
+BUSYBOX_VERSION = $(call qstrip,$(BR2_BUSYBOX_VERSION))
+BUSYBOX_SITE = http://www.busybox.net/downloads
endif
-
-BUSYBOX_UNZIP=$(BZCAT)
-BUSYBOX_CFLAGS=$(TARGET_CFLAGS) -I$(LINUX_HEADERS_DIR)/include
+BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2
+BUSYBOX_CFLAGS = "$(TARGET_CFLAGS) -I$(LINUX_HEADERS_DIR)/include"
+BUSYBOX_BUILD_CONFIG = $(BUSYBOX_DIR)/.config
ifndef BUSYBOX_CONFIG_FILE
-BUSYBOX_CONFIG_FILE=$(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
+ BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
endif
-$(DL_DIR)/$(BUSYBOX_SOURCE):
- $(call DOWNLOAD,$(BUSYBOX_SITE),$(BUSYBOX_SOURCE))
-
-$(BUSYBOX_DIR)/.unpacked: $(DL_DIR)/$(BUSYBOX_SOURCE)
- $(BUSYBOX_UNZIP) $(DL_DIR)/$(BUSYBOX_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+# If we have external syslogd, force busybox to use it
ifeq ($(BR2_PACKAGE_SYSKLOGD),y)
- # if we have external syslogd, force busybox to use it
- $(SED) "/#include.*busybox\.h/a#define CONFIG_SYSLOGD" $(BUSYBOX_DIR)/init/init.c
+define BUSYBOX_SET_SYSKLOGD
+ @$(SED) "/#include.*busybox\.h/a#define CONFIG_SYSLOGD" \
+ $(BUSYBOX_DIR)/init/init.c
+endef
endif
- # Allow busybox patches.
-ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y)
- toolchain/patch-kernel.sh $(BUSYBOX_DIR) package/busybox busybox.\*.patch
-else
- toolchain/patch-kernel.sh $(BUSYBOX_DIR) package/busybox busybox-$(BUSYBOX_VERSION)-\*.patch
-endif
- touch $@
-
-$(BUSYBOX_DIR)/.config: $(BUSYBOX_DIR)/.unpacked $(BUSYBOX_CONFIG_FILE)
- cp -f $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_DIR)/.config
- $(SED) s,^CONFIG_PREFIX=.*,CONFIG_PREFIX=\"$(TARGET_DIR)\", \
- $(BUSYBOX_DIR)/.config
- $(SED) 's,^CONFIG_EXTRA_CFLAGS=.*,CONFIG_EXTRA_CFLAGS=\"$(BUSYBOX_CFLAGS)\",' \
- $(BUSYBOX_DIR)/.config
+
# id applet breaks on >=1.13.0 with old uclibc unless the bb pwd routines are used
ifeq ($(BR2_BUSYBOX_VERSION_1_13_X)$(BR2_BUSYBOX_VERSION_1_14_X)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29),yy)
- if grep -q 'CONFIG_ID=y' $(BUSYBOX_DIR)/.config; \
+define BUSYBOX_SET_BB_PWD
+ if grep -q 'CONFIG_ID=y' $(BUSYBOX_BUILD_CONFIG); \
then \
echo 'warning: CONFIG_ID needs BB_PWD_GRP with old uclibc, enabling' >&2;\
- $(SED) "s/^.*CONFIG_USE_BB_PWD_GRP.*/CONFIG_USE_BB_PWD_GRP=y/;" $(BUSYBOX_DIR)/.config; \
+ $(SED) "s/^.*CONFIG_USE_BB_PWD_GRP.*/CONFIG_USE_BB_PWD_GRP=y/;" $(BUSYBOX_BUILD_CONFIG); \
fi
+endef
endif
-ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y)
- $(SED) s,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX=\"$(TARGET_CROSS)\", \
- $(BUSYBOX_DIR)/.config
- $(SED) s,^PREFIX=.*,CROSS_COMPILER_PREFIX=\"$(TARGET_CROSS)\", \
- $(BUSYBOX_DIR)/.config
-endif
+
ifeq ($(BR2_LARGEFILE),y)
- $(SED) "s/^.*CONFIG_LFS.*/CONFIG_LFS=y/;" $(BUSYBOX_DIR)/.config
- $(SED) "s/^.*CONFIG_FDISK_SUPPORT_LARGE_DISKS.*/CONFIG_FDISK_SUPPORT_LARGE_DISKS=y/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_LARGEFILE
+ $(call KCONFIG_ENABLE_OPT,CONFIG_LFS,$(BUSYBOX_BUILD_CONFIG))
+ $(call KCONFIG_ENABLE_OPT,CONFIG_FDISK_SUPPORT_LARGE_DISKS,$(BUSYBOX_BUILD_CONFIG))
+endef
else
- $(SED) "s/^.*CONFIG_LFS.*/CONFIG_LFS=n/;" $(BUSYBOX_DIR)/.config
- $(SED) "s/^.*FDISK_SUPPORT_LARGE_DISKS.*/CONFIG_FDISK_SUPPORT_LARGE_DISKS=n/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_LARGEFILE
+ $(call KCONFIG_DISABLE_OPT,CONFIG_LFS,$(BUSYBOX_BUILD_CONFIG))
+ $(call KCONFIG_DISABLE_OPT,CONFIG_FDISK_SUPPORT_LARGE_DISKS,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# If IPv6 is enabled then enable basic ifupdown support for it
ifeq ($(BR2_INET_IPV6),y)
- $(SED) "s/^.*CONFIG_FEATURE_IPV6.*/CONFIG_FEATURE_IPV6=y/;" $(BUSYBOX_DIR)/.config
- $(SED) "s/^.*CONFIG_FEATURE_IFUPDOWN_IPV6.*/CONFIG_FEATURE_IFUPDOWN_IPV6=y/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_IPV6
+ $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_IPV6,$(BUSYBOX_BUILD_CONFIG))
+ $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_IFUPDOWN_IPV6,$(BUSYBOX_BUILD_CONFIG))
+endef
else
- $(SED) "s/^.*CONFIG_FEATURE_IPV6.*/CONFIG_FEATURE_IPV6=n/;" $(BUSYBOX_DIR)/.config
- $(SED) "s/^.*CONFIG_FEATURE_IFUPDOWN_IPV6.*/CONFIG_FEATURE_IFUPDOWN_IPV6=n/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_IPV6
+ $(call KCONFIG_DISABLE_OPT,CONFIG_FEATURE_IPV6,$(BUSYBOX_BUILD_CONFIG))
+ $(call KCONFIG_DISABLE_OPT,CONFIG_FEATURE_IFUPDOWN_IPV6,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# If RPC is enabled then enable nfs mounts
ifeq ($(BR2_INET_RPC),y)
- $(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=y/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_RPC
+ $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MOUNT_NFS,$(BUSYBOX_BUILD_CONFIG))
+endef
else
- $(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=n/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SET_RPC
+ $(call KCONFIG_DISABLE_OPT,CONFIG_FEATURE_MOUNT_NFS,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# If we're using static libs do the same for busybox
ifeq ($(BR2_PREFER_STATIC_LIB),y)
- $(SED) "s/^.*CONFIG_STATIC.*/CONFIG_STATIC=y/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_PREFER_STATIC
+ $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(BUSYBOX_BUILD_CONFIG))
+endef
else
- $(SED) "s/^.*CONFIG_STATIC.*/CONFIG_STATIC=n/;" $(BUSYBOX_DIR)/.config
+define BUSYBOX_PREFER_STATIC
+ $(call KCONFIG_DISABLE_OPT,CONFIG_STATIC,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# Enable mdev for busybox skeleton
ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y)
- # force mdev on
- $(SED) "s/^.*CONFIG_MDEV.*/CONFIG_MDEV=y/" $(BUSYBOX_DIR)/.config
+define BUSYBOX_SKELETON
+ $(call KCONFIG_ENABLE_OPT,CONFIG_MDEV,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# Disable usage of inetd if netkit-base package is selected
ifeq ($(BR2_PACKAGE_NETKITBASE),y)
- # disable usage of inetd if netkit-base package is selected
- $(SED) "s/^.*CONFIG_INETD.*/CONFIG_INETD=n/;" $(BUSYBOX_DIR)/.config
- @echo "WARNING!! CONFIG_INETD option disabled!"
+define BUSYBOX_NETKITBASE
+ $(call KCONFIG_DISABLE_OPT,CONFIG_INETD,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
+
+# Disable usage of telnetd if netkit-telnetd package is selected
ifeq ($(BR2_PACKAGE_NETKITTELNET),y)
- # disable usage of telnetd if netkit-telnetd package is selected
- $(SED) "s/^.*CONFIG_TELNETD.*/CONFIG_TELNETD=n/;" $(BUSYBOX_DIR)/.config
- @echo "WARNING!! CONFIG_TELNETD option disabled!"
+define BUSYBOX_NETKITTELNET
+ $(call KCONFIG_DISABLE_OPT,CONFIG_TELNETD,$(BUSYBOX_BUILD_CONFIG))
+endef
endif
- yes "" | $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" \
- CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) oldconfig
- touch $@
+define BUSYBOX_COPY_CONFIG
+ cp -f $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_BUILD_CONFIG)
+endef
+
+# We do this here to avoid busting a modified .config in configure
+BUSYBOX_POST_EXTRACT_HOOKS += BUSYBOX_COPY_CONFIG
+
+define BUSYBOX_CONFIGURE_CMDS
+ $(BUSYBOX_SET_SYSKLOGD)
+ $(BUSYBOX_SET_BB_PWD)
+ $(BUSYBOX_SET_LARGEFILE)
+ $(BUSYBOX_SET_IPV6)
+ $(BUSYBOX_SET_RPC)
+ $(BUSYBOX_PREFER_STATIC)
+ $(BUSYBOX_SKELETON)
+ $(BUSYBOX_NETKITBASE)
+ $(BUSYBOX_NETKITTELNET)
+ @yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
+ -C $(@D) oldconfig
+endef
+
+define BUSYBOX_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ARCH=$(KERNEL_ARCH) \
+ PREFIX="$(TARGET_DIR)" EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" CFLAGS=$(BUSYBOX_CFLAGS) \
+ -C $(@D)
+endef
-$(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/.config
- $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" \
- CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
- EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
- ARCH=$(KERNEL_ARCH) -C $(BUSYBOX_DIR)
-
-$(TARGET_DIR)/bin/busybox: $(BUSYBOX_DIR)/busybox
ifeq ($(BR2_PACKAGE_BUSYBOX_FULLINSTALL),y)
- $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" \
- CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
- EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
- ARCH=$(KERNEL_ARCH) -C $(BUSYBOX_DIR) install
+define BUSYBOX_INSTALL_BINARY
+ $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ARCH=$(KERNEL_ARCH) \
+ PREFIX="$(TARGET_DIR)" EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" CFLAGS=$(BUSYBOX_CFLAGS) \
+ CONFIG_PREFIX="$(TARGET_DIR)" -C $(@D) install
+endef
else
+define BUSYBOX_INSTALL_BINARY
install -D -m 0755 $(BUSYBOX_DIR)/busybox $(TARGET_DIR)/bin/busybox
+endef
endif
- # Just in case
- -chmod a+x $(TARGET_DIR)/usr/share/udhcpc/default.script
-
-busybox: $(TARGET_DIR)/bin/busybox
-
-busybox-source: $(DL_DIR)/$(BUSYBOX_SOURCE)
-
-busybox-unpacked: host-sed $(BUILD_DIR) $(BUSYBOX_DIR)/.unpacked
-
-busybox-config: host-sed $(BUILD_DIR) $(BUSYBOX_DIR)/.config
-busybox-menuconfig: host-sed $(BUILD_DIR) busybox-source $(BUSYBOX_DIR)/.config
- $(MAKE) __TARGET_ARCH=$(ARCH) -C $(BUSYBOX_DIR) menuconfig
+define BUSYBOX_INSTALL_TARGET_CMDS
+ $(BUSYBOX_INSTALL_BINARY)
+ -chmod a+rx $(TARGET_DIR)/usr/share/udhcpc/default.script
+endef
+
+define BUSYBOX_UNINSTALL_TARGET_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ARCH=$(KERNEL_ARCH) \
+ PREFIX="$(TARGET_DIR)" EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" CFLAGS=$(BUSYBOX_CFLAGS) \
+ CONFIG_PREFIX="$(TARGET_DIR)" -C $(@D) uninstall
+endef
+
+define BUSYBOX_CLEAN_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ARCH=$(KERNEL_ARCH) \
+ PREFIX="$(TARGET_DIR)" EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" CFLAGS=$(BUSYBOX_CFLAGS) \
+ CONFIG_PREFIX="$(TARGET_DIR)" -C $(@D) clean
+endef
+
+$(eval $(call GENTARGETS,package,busybox))
+
+busybox-menuconfig: $(BUSYBOX_DIR)/.stamp_extracted
+ $(TARGET_MAKE_ENV) $(MAKE) ARCH=$(KERNEL_ARCH) \
+ CROSS_COMPILE="$(TARGET_CROSS)" -C $(BUSYBOX_DIR) menuconfig
+ rm -f $(BUSYBOX_DIR)/.stamp_built
+ rm -f $(BUSYBOX_DIR)/.stamp_target_installed
busybox-update:
- cp -f $(BUSYBOX_DIR)/.config $(BUSYBOX_CONFIG_FILE)
-
-busybox-clean:
- rm -f $(TARGET_DIR)/bin/busybox
- -$(MAKE) -C $(BUSYBOX_DIR) clean
-
-busybox-dirclean:
- rm -rf $(BUSYBOX_DIR)
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_BUSYBOX),y)
-TARGETS+=busybox
-endif
+ cp -f $(BUSYBOX_BUILD_CONFIG) $(BUSYBOX_CONFIG_FILE)