diff options
Diffstat (limited to 'package/busybox/busybox.mk')
-rw-r--r-- | package/busybox/busybox.mk | 234 |
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) |