1
1
LOCAL_PATH := $(call my-dir)
2
2
BB_PATH := $(LOCAL_PATH )
3
3
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
7
7
8
8
# Make a static library for regex.
9
9
include $(CLEAR_VARS )
10
- LOCAL_SRC_FILES := android/regex/regex .c
10
+ LOCAL_SRC_FILES := android/regex/bb_regex .c
11
11
LOCAL_C_INCLUDES := $(BB_PATH ) /android/regex
12
12
LOCAL_CFLAGS := -Wno-sign-compare
13
13
LOCAL_MODULE := libclearsilverregex
@@ -19,52 +19,49 @@ LOCAL_SRC_FILES := $(shell cat $(BB_PATH)/android/librpc.sources)
19
19
LOCAL_C_INCLUDES := $(BB_PATH ) /android/librpc
20
20
LOCAL_MODULE := libuclibcrpc
21
21
LOCAL_CFLAGS += -fno-strict-aliasing
22
+ ifeq ($(BIONIC_L ) ,true)
23
+ LOCAL_CFLAGS += -DBIONIC_ICS -DBIONIC_L
24
+ endif
22
25
include $(BUILD_STATIC_LIBRARY )
23
26
27
+ # ####################################################################
28
+
29
+ # Execute make prepare for normal config & static lib (recovery)
24
30
25
31
LOCAL_PATH := $(BB_PATH )
26
32
include $(CLEAR_VARS )
27
33
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 ) )
35
35
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
39
41
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)
43
44
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 )
45
53
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 )
46
62
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 )
67
63
64
+ # ####################################################################
68
65
69
66
LOCAL_PATH := $(BB_PATH )
70
67
include $(CLEAR_VARS )
@@ -73,63 +70,53 @@ KERNEL_MODULES_DIR ?= /system/lib/modules
73
70
74
71
SUBMAKE := make -s -C $(BB_PATH ) CC=$(CC )
75
72
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
88
78
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
97
82
endif
98
83
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 ) )
107
87
endif
108
88
109
89
BUSYBOX_C_INCLUDES = \
110
- $(BB_PATH ) /include-$(BUSYBOX_CONFIG ) \
111
90
$(BB_PATH ) /include $(BB_PATH ) /libbb \
112
- bionic/libc \
113
91
bionic/libc/private \
114
- bionic/libc/dns/include \
115
92
bionic/libm/include \
93
+ bionic/libc \
116
94
bionic/libm \
117
95
libc/kernel/common \
96
+ external/libselinux/include \
97
+ external/selinux/libsepol/include \
118
98
$(BB_PATH ) /android/regex \
119
99
$(BB_PATH ) /android/librpc
120
100
121
101
BUSYBOX_CFLAGS = \
122
- -Werror=implicit \
102
+ -Werror=implicit -Wno-clobbered \
123
103
-DNDEBUG \
124
104
-DANDROID \
125
105
-fno-strict-aliasing \
126
- -include include-$(BUSYBOX_CONFIG ) /autoconf.h \
106
+ -fno-builtin-stpcpy \
107
+ -include $(bb_gen ) /$(BUSYBOX_CONFIG ) /include/autoconf.h \
127
108
-D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR ) "' \
128
109
-D'BB_VER="$(strip $(shell $(SUBMAKE ) kernelversion) ) $(BUSYBOX_SUFFIX ) "' -DBB_BT=AUTOCONF_TIMESTAMP
129
110
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
+
131
118
ifeq ($(BIONIC_ICS ) ,true)
132
- BUSYBOX_CFLAGS += -DBIONIC_ICS
119
+ BUSYBOX_CFLAGS += -DBIONIC_ICS
133
120
endif
134
121
135
122
@@ -138,20 +125,21 @@ endif
138
125
BUSYBOX_CONFIG: =minimal
139
126
BUSYBOX_SUFFIX: =static
140
127
LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES )
141
- LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES )
128
+ LOCAL_C_INCLUDES := $(bb_gen ) /minimal/include $( BUSYBOX_C_INCLUDES )
142
129
LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS )
143
130
LOCAL_CFLAGS += \
131
+ -DRECOVERY_VERSION \
144
132
-Dgetusershell=busybox_getusershell \
145
133
-Dsetusershell=busybox_setusershell \
146
134
-Dendusershell=busybox_endusershell \
147
- -Dttyname_r=busybox_ttyname_r \
148
135
-Dgetmntent=busybox_getmntent \
149
136
-Dgetmntent_r=busybox_getmntent_r \
150
137
-Dgenerate_uuid=busybox_generate_uuid
138
+ LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS )
151
139
LOCAL_MODULE := libbusybox
152
140
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 )
155
143
include $(BUILD_STATIC_LIBRARY )
156
144
157
145
@@ -163,18 +151,15 @@ include $(CLEAR_VARS)
163
151
BUSYBOX_CONFIG: =full
164
152
BUSYBOX_SUFFIX: =bionic
165
153
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 )
170
155
LOCAL_CFLAGS := $(BUSYBOX_CFLAGS )
171
- LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
156
+ LOCAL_ASFLAGS := $( BUSYBOX_AFLAGS )
172
157
LOCAL_MODULE := busybox
173
158
LOCAL_MODULE_TAGS := eng debug
174
159
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES )
175
160
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 )
178
163
include $(BUILD_EXECUTABLE )
179
164
180
165
BUSYBOX_LINKS := $(shell cat $(BB_PATH ) /busybox-$(BUSYBOX_CONFIG ) .links)
@@ -183,7 +168,7 @@ exclude := nc
183
168
SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES ) /,$(filter-out $(exclude ) ,$(notdir $(BUSYBOX_LINKS ) ) ) )
184
169
$(SYMLINKS ) : BUSYBOX_BINARY := $(LOCAL_MODULE )
185
170
$(SYMLINKS ) : $(LOCAL_INSTALLED_MODULE )
186
- @echo " Symlink: $@ -> $( BUSYBOX_BINARY) "
171
+ @echo -e ${CL_CYN} " Symlink:" ${CL_RST} " $@ -> $( BUSYBOX_BINARY) "
187
172
@mkdir -p $(dir $@ )
188
173
@rm -rf $@
189
174
$(hide ) ln -sf $(BUSYBOX_BINARY ) $@
@@ -204,25 +189,25 @@ include $(CLEAR_VARS)
204
189
BUSYBOX_CONFIG: =full
205
190
BUSYBOX_SUFFIX: =static
206
191
LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES )
207
- LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES )
192
+ LOCAL_C_INCLUDES := $(bb_gen ) /full/include $( BUSYBOX_C_INCLUDES )
208
193
LOCAL_CFLAGS := $(BUSYBOX_CFLAGS )
209
194
LOCAL_CFLAGS += \
210
195
-Dgetusershell=busybox_getusershell \
211
196
-Dsetusershell=busybox_setusershell \
212
197
-Dendusershell=busybox_endusershell \
213
- -Dttyname_r=busybox_ttyname_r \
214
198
-Dgetmntent=busybox_getmntent \
215
199
-Dgetmntent_r=busybox_getmntent_r \
216
200
-Dgenerate_uuid=busybox_generate_uuid
217
- LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
201
+ LOCAL_ASFLAGS := $( BUSYBOX_AFLAGS )
218
202
LOCAL_FORCE_STATIC_EXECUTABLE := true
219
203
LOCAL_MODULE := static_busybox
220
204
LOCAL_MODULE_STEM := busybox
221
205
LOCAL_MODULE_TAGS := optional
222
- LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc
206
+ LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc libselinux
223
207
LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
224
208
LOCAL_MODULE_PATH := $(PRODUCT_OUT ) /utilities
225
209
LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT ) /symbols/utilities
226
210
$(LOCAL_MODULE ) : busybox_prepare
227
211
LOCAL_PACK_MODULE_RELOCATIONS := false
212
+ LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_full )
228
213
include $(BUILD_EXECUTABLE )
0 commit comments