#
# Copyright (C) 2006-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
ifeq ($(CONFIG_PACKAGE_BUSYBOX_VERSION),"1.36.1")
PKG_VERSION:=1.36.1
PKG_MD5SUM:=0fc591bc9f4e365dfd9ade0014f32561
else
PKG_VERSION:=1.19.4
PKG_MD5SUM:=9c0cae5a0379228e7b55e5b29528df8e
endif
PKG_RELEASE:=6
PKG_FLAGS:=essential
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
http://distfiles.gentoo.org/distfiles/
PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_FEATURE_HAVE_RPC:librpc
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | md5s)
endif
ifeq ($(CONFIG_PACKAGE_lp5523ctrl),y)
LP5523_SUPPORT="y"
endif
ifeq ($(CONFIG_PACKAGE_wireless-schedule),y)
WIRELESS_SCHEDULE_SUPPORT="y"
endif
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
BB_MAKE_VERBOSE := V=1
else
BB_MAKE_VERBOSE :=
endif
init-y :=
init-$(CONFIG_BUSYBOX_CONFIG_HTTPD) += httpd
init-$(CONFIG_BUSYBOX_CONFIG_CROND) += cron
init-$(CONFIG_BUSYBOX_CONFIG_TELNETD) += telnet
define Package/busybox
SECTION:=TP-LINK
CATEGORY:=TP-LINK iplatform apps
MAINTAINER:=Nicolas Thill <nico@openwrt.org>
TITLE:=Core utilities for embedded Linux
URL:=http://busybox.net/
DEPENDS:=+BUSYBOX_CONFIG_FEATURE_HAVE_RPC:librpc +common +PACKAGE_$(PKG_NAME)_UGLY_LOG:liblog
MENU:=1
endef
define Package/busybox/description
The Swiss Army Knife of embedded Linux.
It slices, it dices, it makes Julian Fries.
endef
define Package/busybox/config
ifeq ($(CONFIG_PACKAGE_BUSYBOX_VERSION),"1.36.1")
source "$(SOURCE)/Config_1_36_1.in"
else
source "$(SOURCE)/Config.in"
endif
config PACKAGE_$(PKG_NAME)_UGLY_LOG
bool "Enable ugly log"
default y
endef
define Build/Configure
rm -f $(PKG_BUILD_DIR)/.configured*
grep 'CONFIG_BUSYBOX_' $(TOPDIR)/.config | sed -e "s,\\(# \)\\?CONFIG_BUSYBOX_\\(.*\\),\\1\\2,g" > $(PKG_BUILD_DIR)/.config
yes '' | $(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
KBUILD_HAVE_NLS=no \
ARCH="$(ARCH)" \
$(BB_MAKE_VERBOSE) \
oldconfig
endef
ifdef CONFIG_GCC_VERSION_LLVM
TARGET_CFLAGS += -fnested-functions
endif
LDLIBS:=m crypt
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
export LDFLAGS=$(TARGET_LDFLAGS)
ifdef CONFIG_BUSYBOX_CONFIG_FEATURE_HAVE_RPC
LDLIBS += rpc
endif
ifneq ($(CONFIG_PACKAGE_$(PKG_NAME)_UGLY_LOG),)
TARGET_CFLAGS += -DCONFIG_UGLY_LOG=1
LDLIBS += log
endif
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
ifeq ($(CONFIG_PACKAGE_BUSYBOX_VERSION),"1.36.1")
$(CP) ./src_1_36_1/* $(PKG_BUILD_DIR)
$(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),)
else
$(CP) ./src/* $(PKG_BUILD_DIR)
endif
endef
ifdef CONFIG_LINUX_KERNEL_INCLUDE_PATH
TARGET_CFLAGS += -I$(LINUX_DIR)/../$(CONFIG_LINUX_KERNEL_INCLUDE_PATH)
endif
define Build/Compile
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
KBUILD_HAVE_NLS=no \
EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
ARCH="$(ARCH)" \
SKIP_STRIP=y \
LDLIBS="$(LDLIBS)" \
$(BB_MAKE_VERBOSE) \
LP5523_SUPPORT="$(LP5523_SUPPORT)" \
WIRELESS_SCHEDULE_SUPPORT="$(WIRELESS_SCHEDULE_SUPPORT)" \
BUSYBOX_DHCP_OPTION66="$(CONFIG_BUSYBOX_DHCP_OPTION66)" \
BUSYBOX_DHCP_OPTION43="$(CONFIG_BUSYBOX_DHCP_OPTION43)" \
all
rm -rf $(PKG_INSTALL_DIR)
$(FIND) $(PKG_BUILD_DIR) -lname "*busybox" -exec rm \{\} \;
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
ARCH="$(ARCH)" \
CONFIG_PREFIX="$(PKG_INSTALL_DIR)" \
LDLIBS="$(LDLIBS)" \
$(BB_MAKE_VERBOSE) \
LP5523_SUPPORT="$(LP5523_SUPPORT)" \
WIRELESS_SCHEDULE_SUPPORT="$(WIRELESS_SCHEDULE_SUPPORT)" \
BUSYBOX_DHCP_OPTION66="$(CONFIG_BUSYBOX_DHCP_OPTION66)" \
BUSYBOX_DHCP_OPTION43="$(CONFIG_BUSYBOX_DHCP_OPTION43)" \
install
endef
define Package/busybox/install
$(INSTALL_DIR) $(1)/etc/init.d
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
$(INSTALL_DIR) $(1)/etc/crontabs
touch $(1)/etc/crontabs/root
for tmp in $(init-y); do \
$(INSTALL_BIN) ./filesystem/$$$$tmp $(1)/etc/init.d/$$$$tmp; \
done
-rm -rf $(1)/lib64
endef
$(eval $(call BuildPackage,busybox))此Makefile编译正常,对比下面这个Makefile出现编译卡住的问题# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (C) 2006-2021 OpenWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.35.0
PKG_RELEASE:=1
PKG_FLAGS:=essential
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.busybox.net/downloads \
http://sources.buildroot.net
PKG_HASH:=faeeb244c35a348a334f4a59e44626ee870fb07b6884d68c10ae8bc19f83a694
PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
PKG_BUILD_PARALLEL:=1
PKG_CHECK_FORMAT_SECURITY:=0
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=LICENSE archival/libarchive/bz/LICENSE
PKG_CPE_ID:=cpe:/a:busybox:busybox
BUSYBOX_SYM=$(if $(CONFIG_BUSYBOX_CUSTOM),CONFIG,DEFAULT)
BUSYBOX_IF_ENABLED=$(if $(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_$(1)),$(2))
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_SUID),)
PKG_FILE_MODES:=/bin/busybox:root:root:4755
endif
include $(TOPDIR)/platform/include/local-development.mk
include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | $(MKHASH) md5)
endif
# All files provided by busybox will serve as fallback alternatives by opkg.
# There should be no need to enumerate ALTERNATIVES entries here
define Package/busybox/Default
SECTION:=base
CATEGORY:=Base system
MAINTAINER:=Felix Fietkau <nbd@nbd.name>
TITLE:=Core utilities for embedded Linux
URL:=http://busybox.net/
DEPENDS:=+BUSYBOX_CONFIG_PAM:libpam +BUSYBOX_CONFIG_NTPD:jsonfilter
USERID:=ntp=123:ntp=123
endef
define Package/busybox
$(call Package/busybox/Default)
CONFLICTS:=busybox-selinux
VARIANT:=default
endef
define Package/busybox-selinux
$(call Package/busybox/Default)
TITLE += with SELinux support
DEPENDS += +libselinux
VARIANT:=selinux
PROVIDES:=busybox
endef
define Package/busybox/description
The Swiss Army Knife of embedded Linux.
It slices, it dices, it makes Julian Fries.
endef
define Package/busybox/config
source "$(SOURCE)/Config.in"
endef
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_SYSLOG)$(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_SYSLOGD_CFG),)
define Package/busybox/conffiles/syslog
/etc/syslog.conf
endef
endif
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_CROND),)
define Package/busybox/conffiles/crond
/etc/crontabs/
endef
endif
define Package/busybox/conffiles
$(Package/busybox/conffiles/syslog)
$(Package/busybox/conffiles/crond)
endef
Package/busybox-selinux/conffiles = $(Package/busybox/conffiles)
ifndef CONFIG_USE_MUSL
LDLIBS:=m crypt
endif
LDLIBS += $(call BUSYBOX_IF_ENABLED,PAM,pam pam_misc pthread)
ifeq ($(CONFIG_USE_GLIBC),y)
LDLIBS += $(call BUSYBOX_IF_ENABLED,NSLOOKUP,resolv)
endif
ifeq ($(BUILD_VARIANT),selinux)
LDLIBS += selinux sepol
endif
TARGET_CFLAGS += -flto
TARGET_LDFLAGS += -flto=jobserver -fuse-linker-plugin
MAKE_VARS :=
MAKE_FLAGS += \
EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
LDLIBS="$(LDLIBS)" \
LD="$(TARGET_CC)" \
SKIP_STRIP=y
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
MAKE_FLAGS += V=1
endif
define Build/Configure
rm -f $(PKG_BUILD_DIR)/.config
touch $(PKG_BUILD_DIR)/.config
ifeq ($(DEVICE_TYPE),nas)
echo "CONFIG_HDPARM=y" >> $(PKG_BUILD_DIR)/.config
endif
ifeq ($(BUILD_VARIANT),selinux)
cat $(TOPDIR)/$(SOURCE)/selinux.config >> $(PKG_BUILD_DIR)/.config
endif
grep 'CONFIG_BUSYBOX_$(BUSYBOX_SYM)' $(TOPDIR)/.config | sed -e "s,\\(# \)\\?CONFIG_BUSYBOX_$(BUSYBOX_SYM)_\\(.*\\),\\1CONFIG_\\2,g" >> $(PKG_BUILD_DIR)/.config
yes 'n' | $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) oldconfig
endef
define Build/Compile
$(call Build/Compile/Default, \
CONFIG_PREFIX="$(PKG_INSTALL_DIR)" \
all install \
)
endef
define Package/busybox/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_SYSLOG)$(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_SYSLOGD_CFG),)
touch $(1)/etc/syslog.conf
endif
ifneq ($(CONFIG_BUSYBOX_CONFIG_SYSLOGD),)
$(INSTALL_BIN) ./files/syslogd.init $(1)/etc/init.d/syslogd
ifeq ($(CONFIG_BUSYBOX_CONFIG_LOGREAD)$(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_FEATURE_IPC_SYSLOG),)
$(INSTALL_BIN) ./files/logread $(1)/sbin
endif
endif
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_CROND),)
$(INSTALL_BIN) ./files/cron $(1)/etc/init.d/cron
$(INSTALL_DIR) $(1)/etc/crontabs
endif
ifneq ($(CONFIG_BUSYBOX_$(BUSYBOX_SYM)_NTPD),)
$(INSTALL_BIN) ./files/sysntpd $(1)/etc/init.d/sysntpd
$(INSTALL_BIN) ./files/ntpd-hotplug $(1)/usr/sbin/ntpd-hotplug
$(INSTALL_DIR) $(1)/etc/capabilities $(1)/usr/share/acl.d
$(INSTALL_DATA) ./files/ntpd.capabilities $(1)/etc/capabilities/ntpd.json
$(INSTALL_DATA) ./files/ntpd_acl.json $(1)/usr/share/acl.d/ntpd.json
endif
-rm -rf $(1)/lib64
endef
Package/busybox-selinux/install = $(Package/busybox/install)
$(eval $(call BuildPackage,busybox))
$(eval $(call BuildPackage,busybox-selinux))