1 ################################################################################
5 ################################################################################
7 BUSYBOX_VERSION
= 1.25.1
8 BUSYBOX_SITE
= http
://www.busybox.net
/downloads
9 BUSYBOX_SOURCE
= busybox-
$(BUSYBOX_VERSION
).
tar.bz2
10 BUSYBOX_LICENSE
= GPLv2
11 BUSYBOX_LICENSE_FILES
= LICENSE
13 define BUSYBOX_HELP_CMDS
14 @echo
' busybox-menuconfig - Run BusyBox menuconfig'
23 # Link against libtirpc if available so that we can leverage its RPC
24 # support for NFS mounting with BusyBox
25 ifeq ($(BR2_PACKAGE_LIBTIRPC
),y
)
26 BUSYBOX_DEPENDENCIES
+= libtirpc host-pkgconf
27 BUSYBOX_CFLAGS
+= "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`"
28 # Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for
29 # the non-final link of modules as well.
30 BUSYBOX_CFLAGS_busybox
+= "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`"
33 BUSYBOX_BUILD_CONFIG
= $(BUSYBOX_DIR
)/.config
34 # Allows the build system to tweak CFLAGS
37 CFLAGS
="$(BUSYBOX_CFLAGS)" \
38 CFLAGS_busybox
="$(BUSYBOX_CFLAGS_busybox)"
42 PREFIX
="$(TARGET_DIR)" \
43 EXTRA_LDFLAGS
="$(BUSYBOX_LDFLAGS)" \
44 CROSS_COMPILE
="$(TARGET_CROSS)" \
45 CONFIG_PREFIX
="$(TARGET_DIR)" \
48 ifndef BUSYBOX_CONFIG_FILE
49 BUSYBOX_CONFIG_FILE
= $(call qstrip
,$(BR2_PACKAGE_BUSYBOX_CONFIG
))
52 BUSYBOX_KCONFIG_FILE
= $(BUSYBOX_CONFIG_FILE
)
53 BUSYBOX_KCONFIG_FRAGMENT_FILES
= $(call qstrip
,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES
))
54 BUSYBOX_KCONFIG_EDITORS
= menuconfig xconfig gconfig
55 BUSYBOX_KCONFIG_OPTS
= $(BUSYBOX_MAKE_OPTS
)
57 define BUSYBOX_PERMISSIONS
58 /bin
/busybox f
4755 0 0 - - - - -
61 # If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d
62 ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
),y
)
63 define BUSYBOX_INSTALL_MDEV_SCRIPT
64 $(INSTALL
) -D
-m
0755 package
/busybox
/S10mdev \
65 $(TARGET_DIR
)/etc
/init.d
/S10mdev
67 define BUSYBOX_INSTALL_MDEV_CONF
68 $(INSTALL
) -D
-m
0644 package
/busybox
/mdev.conf \
69 $(TARGET_DIR
)/etc
/mdev.conf
71 define BUSYBOX_SET_MDEV
72 $(call KCONFIG_ENABLE_OPT
,CONFIG_MDEV
,$(BUSYBOX_BUILD_CONFIG
))
73 $(call KCONFIG_ENABLE_OPT
,CONFIG_FEATURE_MDEV_CONF
,$(BUSYBOX_BUILD_CONFIG
))
74 $(call KCONFIG_ENABLE_OPT
,CONFIG_FEATURE_MDEV_EXEC
,$(BUSYBOX_BUILD_CONFIG
))
75 $(call KCONFIG_ENABLE_OPT
,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
,$(BUSYBOX_BUILD_CONFIG
))
79 # sha passwords need USE_BB_CRYPT_SHA
80 ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256
)$(BR2_TARGET_GENERIC_PASSWD_SHA512
),y
)
81 define BUSYBOX_SET_CRYPT_SHA
82 $(call KCONFIG_ENABLE_OPT
,CONFIG_USE_BB_CRYPT_SHA
,$(BUSYBOX_BUILD_CONFIG
))
86 ifeq ($(BR2_USE_MMU
),y
)
87 define BUSYBOX_SET_MMU
88 $(call KCONFIG_DISABLE_OPT
,CONFIG_NOMMU
,$(BUSYBOX_BUILD_CONFIG
))
91 define BUSYBOX_SET_MMU
92 $(call KCONFIG_ENABLE_OPT
,CONFIG_NOMMU
,$(BUSYBOX_BUILD_CONFIG
))
93 $(call KCONFIG_DISABLE_OPT
,CONFIG_SWAPONOFF
,$(BUSYBOX_BUILD_CONFIG
))
94 $(call KCONFIG_DISABLE_OPT
,CONFIG_ASH
,$(BUSYBOX_BUILD_CONFIG
))
95 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH
,$(BUSYBOX_BUILD_CONFIG
))
96 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_BASH_COMPAT
,$(BUSYBOX_BUILD_CONFIG
))
97 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_BRACE_EXPANSION
,$(BUSYBOX_BUILD_CONFIG
))
98 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_HELP
,$(BUSYBOX_BUILD_CONFIG
))
99 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_INTERACTIVE
,$(BUSYBOX_BUILD_CONFIG
))
100 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_SAVEHISTORY
,$(BUSYBOX_BUILD_CONFIG
))
101 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_JOB
,$(BUSYBOX_BUILD_CONFIG
))
102 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_TICK
,$(BUSYBOX_BUILD_CONFIG
))
103 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_IF
,$(BUSYBOX_BUILD_CONFIG
))
104 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_LOOPS
,$(BUSYBOX_BUILD_CONFIG
))
105 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_CASE
,$(BUSYBOX_BUILD_CONFIG
))
106 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_FUNCTIONS
,$(BUSYBOX_BUILD_CONFIG
))
107 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_LOCAL
,$(BUSYBOX_BUILD_CONFIG
))
108 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_RANDOM_SUPPORT
,$(BUSYBOX_BUILD_CONFIG
))
109 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_EXPORT_N
,$(BUSYBOX_BUILD_CONFIG
))
110 $(call KCONFIG_ENABLE_OPT
,CONFIG_HUSH_MODE_X
,$(BUSYBOX_BUILD_CONFIG
))
114 # If we're using static libs do the same for busybox
115 ifeq ($(BR2_STATIC_LIBS
),y
)
116 define BUSYBOX_PREFER_STATIC
117 $(call KCONFIG_ENABLE_OPT
,CONFIG_STATIC
,$(BUSYBOX_BUILD_CONFIG
))
121 # Disable shadow passwords support if unsupported by the C library
122 ifeq ($(BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
),)
123 define BUSYBOX_INTERNAL_SHADOW_PASSWORDS
124 $(call KCONFIG_ENABLE_OPT
,CONFIG_USE_BB_PWD_GRP
,$(BUSYBOX_BUILD_CONFIG
))
125 $(call KCONFIG_ENABLE_OPT
,CONFIG_USE_BB_SHADOW
,$(BUSYBOX_BUILD_CONFIG
))
129 # We also need to use internal shadow password functions when using
130 # the musl C library, since some of them are not yet implemented by
133 # Do not use utmp/wmtp support. wmtp support is not available in musl,
134 # and utmp support is not sufficient for Busybox.
135 ifeq ($(BR2_TOOLCHAIN_USES_MUSL
),y
)
136 define BUSYBOX_MUSL_TWEAKS
137 $(call KCONFIG_ENABLE_OPT
,CONFIG_USE_BB_PWD_GRP
,$(BUSYBOX_BUILD_CONFIG
))
138 $(call KCONFIG_ENABLE_OPT
,CONFIG_USE_BB_SHADOW
,$(BUSYBOX_BUILD_CONFIG
))
139 $(call KCONFIG_DISABLE_OPT
,CONFIG_FEATURE_UTMP
,$(BUSYBOX_BUILD_CONFIG
))
140 $(call KCONFIG_DISABLE_OPT
,CONFIG_FEATURE_WTMP
,$(BUSYBOX_BUILD_CONFIG
))
144 define BUSYBOX_INSTALL_UDHCPC_SCRIPT
145 if grep
-q CONFIG_UDHCPC
=y
$(@D
)/.config
; then \
146 $(INSTALL
) -m
0755 -D package
/busybox
/udhcpc.script \
147 $(TARGET_DIR
)/usr
/share
/udhcpc
/default.script
; \
148 $(INSTALL
) -m
0755 -d \
149 $(TARGET_DIR
)/usr
/share
/udhcpc
/default.script.d
; \
153 ifeq ($(BR2_INIT_BUSYBOX
),y
)
154 define BUSYBOX_SET_INIT
155 $(call KCONFIG_ENABLE_OPT
,CONFIG_INIT
,$(BUSYBOX_BUILD_CONFIG
))
159 ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX
),y
)
160 BUSYBOX_DEPENDENCIES
+= host-pkgconf libselinux libsepol
161 define BUSYBOX_SET_SELINUX
162 $(call KCONFIG_ENABLE_OPT
,CONFIG_SELINUX
,$(BUSYBOX_BUILD_CONFIG
))
163 $(call KCONFIG_ENABLE_OPT
,CONFIG_SELINUXENABLED
,$(BUSYBOX_BUILD_CONFIG
))
167 define BUSYBOX_INSTALL_LOGGING_SCRIPT
168 if grep
-q CONFIG_SYSLOGD
=y
$(@D
)/.config
; then \
169 $(INSTALL
) -m
0755 -D package
/busybox
/S01logging \
170 $(TARGET_DIR
)/etc
/init.d
/S01logging
; \
171 else rm -f
$(TARGET_DIR
)/etc
/init.d
/S01logging
; fi
174 ifeq ($(BR2_INIT_BUSYBOX
),y
)
175 define BUSYBOX_INSTALL_INITTAB
176 $(INSTALL
) -D
-m
0644 package
/busybox
/inittab
$(TARGET_DIR
)/etc
/inittab
180 ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG
),y
)
181 define BUSYBOX_SET_WATCHDOG
182 $(call KCONFIG_ENABLE_OPT
,CONFIG_WATCHDOG
,$(BUSYBOX_BUILD_CONFIG
))
184 define BUSYBOX_INSTALL_WATCHDOG_SCRIPT
185 $(INSTALL
) -D
-m
0755 package
/busybox
/S15watchdog \
186 $(TARGET_DIR
)/etc
/init.d
/S15watchdog
187 $(SED
) s
/PERIOD
/$(call qstrip
,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD
))/ \
188 $(TARGET_DIR
)/etc
/init.d
/S15watchdog
192 # PAM support requires thread support in the toolchain
193 ifeq ($(BR2_PACKAGE_LINUX_PAM
)$(BR2_TOOLCHAIN_HAS_THREADS
),yy
)
194 define BUSYBOX_LINUX_PAM
195 $(call KCONFIG_ENABLE_OPT
,CONFIG_PAM
,$(BUSYBOX_BUILD_CONFIG
))
197 BUSYBOX_DEPENDENCIES
+= linux-pam
201 define BUSYBOX_INSTALL_TELNET_SCRIPT
202 if grep
-q CONFIG_FEATURE_TELNETD_STANDALONE
=y
$(@D
)/.config
; then \
203 $(INSTALL
) -m
0755 -D package
/busybox
/S50telnet \
204 $(TARGET_DIR
)/etc
/init.d
/S50telnet
; \
208 # Enable "noclobber" in install.sh, to prevent BusyBox from overwriting any
209 # full-blown versions of apps installed by other packages with sym/hard links.
210 define BUSYBOX_NOCLOBBER_INSTALL
211 $(SED
) 's/^noclobber="0"$$/noclobber="1"/' $(@D
)/applets
/install.sh
214 define BUSYBOX_KCONFIG_FIXUP_CMDS
216 $(BUSYBOX_PREFER_STATIC
)
218 $(BUSYBOX_SET_CRYPT_SHA
)
220 $(BUSYBOX_INTERNAL_SHADOW_PASSWORDS
)
222 $(BUSYBOX_SET_WATCHDOG
)
223 $(BUSYBOX_SET_SELINUX
)
224 $(BUSYBOX_MUSL_TWEAKS
)
227 define BUSYBOX_CONFIGURE_CMDS
228 $(BUSYBOX_NOCLOBBER_INSTALL
)
231 define BUSYBOX_BUILD_CMDS
232 $(BUSYBOX_MAKE_ENV
) $(MAKE
) $(BUSYBOX_MAKE_OPTS
) -C
$(@D
)
235 define BUSYBOX_INSTALL_TARGET_CMDS
236 $(BUSYBOX_MAKE_ENV
) $(MAKE
) $(BUSYBOX_MAKE_OPTS
) -C
$(@D
) install
237 $(BUSYBOX_INSTALL_INITTAB
)
238 $(BUSYBOX_INSTALL_UDHCPC_SCRIPT
)
239 $(BUSYBOX_INSTALL_MDEV_CONF
)
242 define BUSYBOX_INSTALL_INIT_SYSV
243 $(BUSYBOX_INSTALL_MDEV_SCRIPT
)
244 $(BUSYBOX_INSTALL_LOGGING_SCRIPT
)
245 $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT
)
246 $(BUSYBOX_INSTALL_TELNET_SCRIPT
)
249 # Checks to give errors that the user can understand
250 # Must be before we call to kconfig-package
251 ifeq ($(BR2_PACKAGE_BUSYBOX
)$(BR_BUILDING
),yy
)
252 ifeq ($(call qstrip
,$(BR2_PACKAGE_BUSYBOX_CONFIG
)),)
253 $(error No BusyBox configuration file specified
, check your BR2_PACKAGE_BUSYBOX_CONFIG setting
)
257 $(eval
$(kconfig-package
))