Skip to content

Commit 27116ba

Browse files
maxwenDees-Troy
authored andcommitted
busybox: squashed commit of merging cm-12.1
With fixes to LOCAL_C_INCLUDES for libsepol in M and fixed some missing includes to enable building for 64 bit devices Conflicts: Android.mk android/libc/arch-x86/syscalls/swapoff.S android/libc/arch-x86/syscalls/swapon.S android/libc/arch-x86/syscalls/sysinfo.S android/librpc/pmap_rmt.c android/reboot.c include-full/copy-current.sh include-minimal/copy-current.sh include/platform.h networking/interface.c networking/nslookup.c Change-Id: If6092fa87f3d21190db1af4f70daa150eb462660
1 parent cd3f398 commit 27116ba

File tree

363 files changed

+7256
-22936
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

363 files changed

+7256
-22936
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Config.in
1313
# Never ignore these
1414
#
1515
!.gitignore
16-
!.config-*
16+
!.config*
1717

1818
#
1919
# Normal output

Android.mk

+74-89
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
LOCAL_PATH := $(call my-dir)
22
BB_PATH := $(LOCAL_PATH)
33

4-
# Bionic Branches Switches (CM7/AOSP/ICS)
5-
BIONIC_ICS := true
6-
4+
# Bionic Branches Switches (GB/ICS/L)
5+
BIONIC_ICS := false
6+
BIONIC_L := true
77

88
# Make a static library for regex.
99
include $(CLEAR_VARS)
10-
LOCAL_SRC_FILES := android/regex/regex.c
10+
LOCAL_SRC_FILES := android/regex/bb_regex.c
1111
LOCAL_C_INCLUDES := $(BB_PATH)/android/regex
1212
LOCAL_CFLAGS := -Wno-sign-compare
1313
LOCAL_MODULE := libclearsilverregex
@@ -19,52 +19,49 @@ LOCAL_SRC_FILES := $(shell cat $(BB_PATH)/android/librpc.sources)
1919
LOCAL_C_INCLUDES := $(BB_PATH)/android/librpc
2020
LOCAL_MODULE := libuclibcrpc
2121
LOCAL_CFLAGS += -fno-strict-aliasing
22+
ifeq ($(BIONIC_L),true)
23+
LOCAL_CFLAGS += -DBIONIC_ICS -DBIONIC_L
24+
endif
2225
include $(BUILD_STATIC_LIBRARY)
2326

27+
#####################################################################
28+
29+
# Execute make prepare for normal config & static lib (recovery)
2430

2531
LOCAL_PATH := $(BB_PATH)
2632
include $(CLEAR_VARS)
2733

28-
# Explicitly set an architecture specific CONFIG_CROSS_COMPILER_PREFIX
29-
ifeq ($(TARGET_ARCH),arm)
30-
BUSYBOX_CROSS_COMPILER_PREFIX := "arm-eabi-"
31-
endif
32-
ifeq ($(TARGET_ARCH),x86)
33-
BUSYBOX_CROSS_COMPILER_PREFIX := "i686-linux-android-"
34-
endif
34+
BUSYBOX_CROSS_COMPILER_PREFIX := $(abspath $(TARGET_TOOLS_PREFIX))
3535

36-
# Each profile require a compressed usage/config, outside the source tree for git history
37-
# We keep the uncompressed headers in local include-<profile> to track config changes.
38-
# TODO: generate includes in out/
36+
BB_PREPARE_FLAGS:=
37+
ifeq ($(HOST_OS),darwin)
38+
BB_HOSTCC := $(ANDROID_BUILD_TOP)/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1/bin/i686-apple-darwin11-gcc
39+
BB_PREPARE_FLAGS := HOSTCC=$(BB_HOSTCC)
40+
endif
3941

40-
# BB_INCLUDES_OUT := $(TARGET_OUT_INTERMEDIATES)/include
41-
# $(BB_INCLUDES_OUT):
42-
# mkdir -p $(ANDROID_BUILD_TOP)/$(BB_INCLUDES_OUT)
42+
# On aosp (master), path is relative, not on cm (kitkat)
43+
bb_gen := $(abspath $(TARGET_OUT_INTERMEDIATES)/busybox)
4344

44-
# Execute make clean, make prepare and copy profiles required for normal & static lib (recovery)
45+
busybox_prepare_full := $(bb_gen)/full/.config
46+
$(busybox_prepare_full): $(BB_PATH)/busybox-full.config
47+
@echo -e ${CL_YLW}"Prepare config for busybox binary"${CL_RST}
48+
@rm -rf $(bb_gen)/full
49+
@rm -f $(shell find $(abspath $(call intermediates-dir-for,EXECUTABLES,busybox)) -name "*.o")
50+
@mkdir -p $(@D)
51+
@cat $^ > $@ && echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $@
52+
+make -C $(BB_PATH) prepare O=$(@D) $(BB_PREPARE_FLAGS)
4553

54+
busybox_prepare_minimal := $(bb_gen)/minimal/.config
55+
$(busybox_prepare_minimal): $(BB_PATH)/busybox-minimal.config
56+
@echo -e ${CL_YLW}"Prepare config for libbusybox"${CL_RST}
57+
@rm -rf $(bb_gen)/minimal
58+
@rm -f $(shell find $(abspath $(call intermediates-dir-for,STATIC_LIBRARIES,libbusybox)) -name "*.o")
59+
@mkdir -p $(@D)
60+
@cat $^ > $@ && echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $@
61+
+make -C $(BB_PATH) prepare O=$(@D) $(BB_PREPARE_FLAGS)
4662

47-
KERNEL_MODULES_DIR ?= /system/lib/modules
48-
BUSYBOX_CONFIG := minimal full
49-
$(BUSYBOX_CONFIG):
50-
@echo -e ${CL_PFX}"prepare config for busybox $@ profile"${CL_RST}
51-
@cd $(BB_PATH) && make clean
52-
@cd $(BB_PATH) && git clean -f -- ./include-$@/
53-
cp $(BB_PATH)/.config-$@ $(BB_PATH)/.config
54-
echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $(BB_PATH)/.config
55-
cd $(BB_PATH) && make prepare
56-
@#cp $(BB_PATH)/.config $(BB_PATH)/.config-$@
57-
@mkdir -p $(BB_PATH)/include-$@
58-
cp $(BB_PATH)/include/*.h $(BB_PATH)/include-$@/
59-
@rm $(BB_PATH)/include/usage_compressed.h
60-
@rm $(BB_PATH)/include/autoconf.h
61-
@rm -f $(BB_PATH)/.config-old
62-
63-
busybox_prepare: $(BUSYBOX_CONFIG)
64-
LOCAL_MODULE := busybox_prepare
65-
LOCAL_MODULE_TAGS := eng debug
66-
include $(BUILD_STATIC_LIBRARY)
6763

64+
#####################################################################
6865

6966
LOCAL_PATH := $(BB_PATH)
7067
include $(CLEAR_VARS)
@@ -73,63 +70,53 @@ KERNEL_MODULES_DIR ?= /system/lib/modules
7370

7471
SUBMAKE := make -s -C $(BB_PATH) CC=$(CC)
7572

76-
BUSYBOX_SRC_FILES = $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
77-
libbb/android.c
78-
79-
ifeq ($(TARGET_ARCH),arm)
80-
BUSYBOX_SRC_FILES += \
81-
android/libc/arch-arm/syscalls/adjtimex.S \
82-
android/libc/arch-arm/syscalls/getsid.S \
83-
android/libc/arch-arm/syscalls/stime.S \
84-
android/libc/arch-arm/syscalls/swapon.S \
85-
android/libc/arch-arm/syscalls/swapoff.S \
86-
android/libc/arch-arm/syscalls/sysinfo.S
87-
endif
73+
BUSYBOX_SRC_FILES = \
74+
$(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
75+
android/libc/mktemp.c \
76+
android/libc/pty.c \
77+
android/android.c
8878

89-
ifeq ($(TARGET_ARCH),x86)
90-
BUSYBOX_SRC_FILES += \
91-
android/libc/arch-x86/syscalls/adjtimex.S \
92-
android/libc/arch-x86/syscalls/getsid.S \
93-
android/libc/arch-x86/syscalls/stime.S \
94-
android/libc/arch-x86/syscalls/swapon.S \
95-
android/libc/arch-x86/syscalls/swapoff.S \
96-
android/libc/arch-x86/syscalls/sysinfo.S
79+
BUSYBOX_ASM_FILES =
80+
ifneq ($(BIONIC_L),true)
81+
BUSYBOX_ASM_FILES += swapon.S swapoff.S sysinfo.S
9782
endif
9883

99-
ifeq ($(TARGET_ARCH),mips)
100-
BUSYBOX_SRC_FILES += \
101-
android/libc/arch-mips/syscalls/adjtimex.S \
102-
android/libc/arch-mips/syscalls/getsid.S \
103-
android/libc/arch-mips/syscalls/stime.S \
104-
android/libc/arch-mips/syscalls/swapon.S \
105-
android/libc/arch-mips/syscalls/swapoff.S \
106-
android/libc/arch-mips/syscalls/sysinfo.S
84+
ifneq ($(filter arm x86 mips,$(TARGET_ARCH)),)
85+
BUSYBOX_SRC_FILES += \
86+
$(addprefix android/libc/arch-$(TARGET_ARCH)/syscalls/,$(BUSYBOX_ASM_FILES))
10787
endif
10888

10989
BUSYBOX_C_INCLUDES = \
110-
$(BB_PATH)/include-$(BUSYBOX_CONFIG) \
11190
$(BB_PATH)/include $(BB_PATH)/libbb \
112-
bionic/libc \
11391
bionic/libc/private \
114-
bionic/libc/dns/include \
11592
bionic/libm/include \
93+
bionic/libc \
11694
bionic/libm \
11795
libc/kernel/common \
96+
external/libselinux/include \
97+
external/selinux/libsepol/include \
11898
$(BB_PATH)/android/regex \
11999
$(BB_PATH)/android/librpc
120100

121101
BUSYBOX_CFLAGS = \
122-
-Werror=implicit \
102+
-Werror=implicit -Wno-clobbered \
123103
-DNDEBUG \
124104
-DANDROID \
125105
-fno-strict-aliasing \
126-
-include include-$(BUSYBOX_CONFIG)/autoconf.h \
106+
-fno-builtin-stpcpy \
107+
-include $(bb_gen)/$(BUSYBOX_CONFIG)/include/autoconf.h \
127108
-D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR)"' \
128109
-D'BB_VER="$(strip $(shell $(SUBMAKE) kernelversion)) $(BUSYBOX_SUFFIX)"' -DBB_BT=AUTOCONF_TIMESTAMP
129110

130-
# to handle differences in ICS (ipv6)
111+
ifeq ($(BIONIC_L),true)
112+
BUSYBOX_CFLAGS += -DBIONIC_L
113+
BUSYBOX_AFLAGS += -DBIONIC_L
114+
# include changes for ICS/JB/KK
115+
BIONIC_ICS := true
116+
endif
117+
131118
ifeq ($(BIONIC_ICS),true)
132-
BUSYBOX_CFLAGS += -DBIONIC_ICS
119+
BUSYBOX_CFLAGS += -DBIONIC_ICS
133120
endif
134121

135122

@@ -138,20 +125,21 @@ endif
138125
BUSYBOX_CONFIG:=minimal
139126
BUSYBOX_SUFFIX:=static
140127
LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
141-
LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
128+
LOCAL_C_INCLUDES := $(bb_gen)/minimal/include $(BUSYBOX_C_INCLUDES)
142129
LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
143130
LOCAL_CFLAGS += \
131+
-DRECOVERY_VERSION \
144132
-Dgetusershell=busybox_getusershell \
145133
-Dsetusershell=busybox_setusershell \
146134
-Dendusershell=busybox_endusershell \
147-
-Dttyname_r=busybox_ttyname_r \
148135
-Dgetmntent=busybox_getmntent \
149136
-Dgetmntent_r=busybox_getmntent_r \
150137
-Dgenerate_uuid=busybox_generate_uuid
138+
LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
151139
LOCAL_MODULE := libbusybox
152140
LOCAL_MODULE_TAGS := eng debug
153-
LOCAL_STATIC_LIBRARIES := libcutils libc libm
154-
$(LOCAL_MODULE): busybox_prepare
141+
LOCAL_STATIC_LIBRARIES := libcutils libc libm libselinux
142+
LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_minimal)
155143
include $(BUILD_STATIC_LIBRARY)
156144

157145

@@ -163,18 +151,15 @@ include $(CLEAR_VARS)
163151
BUSYBOX_CONFIG:=full
164152
BUSYBOX_SUFFIX:=bionic
165153
LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
166-
ifeq ($(BIONIC_ICS),true)
167-
LOCAL_SRC_FILES += android/libc/__set_errno.c
168-
endif
169-
LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
154+
LOCAL_C_INCLUDES := $(bb_gen)/full/include $(BUSYBOX_C_INCLUDES)
170155
LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
171-
LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
156+
LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
172157
LOCAL_MODULE := busybox
173158
LOCAL_MODULE_TAGS := eng debug
174159
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
175160
LOCAL_SHARED_LIBRARIES := libc libcutils libm
176-
LOCAL_STATIC_LIBRARIES := libclearsilverregex libuclibcrpc
177-
$(LOCAL_MODULE): busybox_prepare
161+
LOCAL_STATIC_LIBRARIES := libclearsilverregex libuclibcrpc libselinux
162+
LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_full)
178163
include $(BUILD_EXECUTABLE)
179164

180165
BUSYBOX_LINKS := $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).links)
@@ -183,7 +168,7 @@ exclude := nc
183168
SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
184169
$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
185170
$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
186-
@echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
171+
@echo -e ${CL_CYN}"Symlink:"${CL_RST}" $@ -> $(BUSYBOX_BINARY)"
187172
@mkdir -p $(dir $@)
188173
@rm -rf $@
189174
$(hide) ln -sf $(BUSYBOX_BINARY) $@
@@ -204,25 +189,25 @@ include $(CLEAR_VARS)
204189
BUSYBOX_CONFIG:=full
205190
BUSYBOX_SUFFIX:=static
206191
LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
207-
LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
192+
LOCAL_C_INCLUDES := $(bb_gen)/full/include $(BUSYBOX_C_INCLUDES)
208193
LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
209194
LOCAL_CFLAGS += \
210195
-Dgetusershell=busybox_getusershell \
211196
-Dsetusershell=busybox_setusershell \
212197
-Dendusershell=busybox_endusershell \
213-
-Dttyname_r=busybox_ttyname_r \
214198
-Dgetmntent=busybox_getmntent \
215199
-Dgetmntent_r=busybox_getmntent_r \
216200
-Dgenerate_uuid=busybox_generate_uuid
217-
LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
201+
LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
218202
LOCAL_FORCE_STATIC_EXECUTABLE := true
219203
LOCAL_MODULE := static_busybox
220204
LOCAL_MODULE_STEM := busybox
221205
LOCAL_MODULE_TAGS := optional
222-
LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc
206+
LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc libselinux
223207
LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
224208
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/utilities
225209
LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
226210
$(LOCAL_MODULE): busybox_prepare
227211
LOCAL_PACK_MODULE_RELOCATIONS := false
212+
LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_full)
228213
include $(BUILD_EXECUTABLE)

CleanSpec.mk

+17-3
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,28 @@
3838
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
3939
# ************************************************
4040

41-
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/busybox_prepare_intermediates)
42-
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/include/busybox-*)
41+
# Note: this is not really required, but remember only the added lines
42+
# will be executed (see $OUT/clean_steps.mk value for the current line)
43+
44+
$(call add-clean-step, rm -f $(PRODUCT_OUT)/utilities/busybox)
45+
$(call add-clean-step, rm -f $(PRODUCT_OUT)/symbols/system/xbin/busybox)
4346

4447
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/busybox_intermediates)
4548
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libbusybox_intermediates)
4649
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/UTILITY_EXECUTABLES/static_busybox_intermediates)
4750

48-
$(call add-clean-step, rm $(PRODUCT_OUT)/symbols/system/xbin/busybox)
51+
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/busybox)
52+
53+
# remains from old build system */
54+
$(call add-clean-step, rm -f external/busybox/include/bbconfigopts.h)
55+
$(call add-clean-step, rm -f external/busybox/include/autoconf.h)
56+
$(call add-clean-step, rm -f external/busybox/include/applet_tables.h)
57+
$(call add-clean-step, rm -f external/busybox/include/applets.h)
58+
$(call add-clean-step, rm -f external/busybox/.config)
59+
60+
# force prepare
61+
$(call add-clean-step, touch external/busybox/busybox-minimal.config)
62+
$(call add-clean-step, touch external/busybox/busybox-full.config)
4963

5064
# ************************************************
5165
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST

Config.in

+3-2
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,13 @@ config UNICODE_USING_LOCALE
161161
Internal implementation is smaller.
162162

163163
config FEATURE_CHECK_UNICODE_IN_ENV
164-
bool "Check $LANG environment variable"
164+
bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
165165
default n
166166
depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
167167
help
168168
With this option on, Unicode support is activated
169-
only if LANG variable has the value of the form "xxxx.utf8"
169+
only if locale-related variables have the value of the form
170+
"xxxx.utf8"
170171

171172
Otherwise, Unicode support will be always enabled and active.
172173

Makefile

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
VERSION = 1
2-
PATCHLEVEL = 21
2+
PATCHLEVEL = 22
33
SUBLEVEL = 1
4-
EXTRAVERSION = -jb
4+
EXTRAVERSION =
55
NAME = bionic
66

7+
# prevent local tree builds in bionic,
8+
# but allow initial version check (SUBMAKE)
9+
ifeq (,$(filter s, $(MAKEFLAGS)))
10+
KBUILD_OUTPUT ?= $(OUT)/obj/busybox
11+
endif
12+
713
# *DOCUMENTATION*
814
# To see a list of typical targets execute "make help"
915
# More info can be located in ./README
@@ -104,7 +110,8 @@ ifneq ($(KBUILD_OUTPUT),)
104110
saved-output := $(KBUILD_OUTPUT)
105111
KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
106112
$(if $(KBUILD_OUTPUT),, \
107-
$(error output directory "$(saved-output)" does not exist))
113+
$(warning output directory "$(saved-output)" does not exist) \
114+
$(error On AOSP repo, type 'mma' to build or set O=out/<folder> ))
108115

109116
PHONY += $(MAKECMDGOALS)
110117

Makefile.custom

+10-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
# ==========================================================================
44

55
busybox.links: $(srctree)/applets/busybox.mkll $(objtree)/include/autoconf.h include/applets.h
6-
$(Q)-$(SHELL) $^ >$@
6+
$(Q)-$(SHELL) $^ > $@
7+
8+
busybox.cfg.suid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
9+
$(Q)-SUID="yes" $(SHELL) $^ > $@
10+
busybox.cfg.nosuid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
11+
$(Q)-SUID="DROP" $(SHELL) $^ > $@
712

813
.PHONY: install
914
ifeq ($(CONFIG_INSTALL_APPLET_SYMLINKS),y)
@@ -68,6 +73,10 @@ release: distclean
6873
-name .git \
6974
-print \
7075
-exec rm -r -f {} \; ; \
76+
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
77+
-name .gitignore \
78+
-print \
79+
-exec rm -f {} \; ; \
7180
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
7281
-name .\#* \
7382
-print \

0 commit comments

Comments
 (0)