blob: 2995f5749bc2469844acad4797acdb825e530520 [file] [log] [blame]
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +02001LOCAL_PATH := $(call my-dir)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +02002BB_PATH := $(LOCAL_PATH)
Koushik Dutta129a7982011-11-16 18:27:02 -08003
Tanguy Pruvot36efc942011-11-20 14:41:41 +01004# Bionic Branches Switches (CM7/AOSP/ICS)
5BIONIC_ICS := true
Tanguy Pruvoteba45192011-07-15 20:38:12 +02006
Tanguy Pruvot29d8ebe2011-10-29 15:15:34 +02007
Tanguy Pruvot36efc942011-11-20 14:41:41 +01008# Make a static library for regex.
9include $(CLEAR_VARS)
10LOCAL_SRC_FILES := android/regex/regex.c
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020011LOCAL_C_INCLUDES := $(BB_PATH)/android/regex
Tanguy Pruvot6fef6a32012-05-05 15:26:43 +020012LOCAL_CFLAGS := -Wno-sign-compare
Tanguy Pruvot36efc942011-11-20 14:41:41 +010013LOCAL_MODULE := libclearsilverregex
14include $(BUILD_STATIC_LIBRARY)
15
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010016# Make a static library for RPC library (coming from uClibc).
17include $(CLEAR_VARS)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020018LOCAL_SRC_FILES := $(shell cat $(BB_PATH)/android/librpc.sources)
19LOCAL_C_INCLUDES := $(BB_PATH)/android/librpc
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010020LOCAL_MODULE := libuclibcrpc
Evan McClain6e205db2012-11-15 22:26:23 -050021LOCAL_CFLAGS += -fno-strict-aliasing
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010022include $(BUILD_STATIC_LIBRARY)
23
Tanguy Pruvot29d8ebe2011-10-29 15:15:34 +020024
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020025LOCAL_PATH := $(BB_PATH)
26include $(CLEAR_VARS)
27
Trevor Drake49ea11e2013-10-05 21:33:20 +010028# Explicitly set an architecture specific CONFIG_CROSS_COMPILER_PREFIX
29ifeq ($(TARGET_ARCH),arm)
30 BUSYBOX_CROSS_COMPILER_PREFIX := "arm-eabi-"
31endif
32ifeq ($(TARGET_ARCH),x86)
33 BUSYBOX_CROSS_COMPILER_PREFIX := "i686-linux-android-"
34endif
35
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020036# 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.
Tanguy Pruvot5ebcd532012-05-09 15:37:25 +020038# TODO: generate includes in out/
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020039
Tanguy Pruvot5ebcd532012-05-09 15:37:25 +020040# BB_INCLUDES_OUT := $(TARGET_OUT_INTERMEDIATES)/include
41# $(BB_INCLUDES_OUT):
42# mkdir -p $(ANDROID_BUILD_TOP)/$(BB_INCLUDES_OUT)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020043
Tanguy Pruvot5ebcd532012-05-09 15:37:25 +020044# Execute make clean, make prepare and copy profiles required for normal & static lib (recovery)
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020045
Trevor Drake49ea11e2013-10-05 21:33:20 +010046
Tanguy Pruvoteba45192011-07-15 20:38:12 +020047KERNEL_MODULES_DIR ?= /system/lib/modules
48BUSYBOX_CONFIG := minimal full
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020049$(BUSYBOX_CONFIG):
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020050 @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
Trevor Drake49ea11e2013-10-05 21:33:20 +010054 echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $(BB_PATH)/.config
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020055 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-$@/
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020059 @rm $(BB_PATH)/include/usage_compressed.h
60 @rm $(BB_PATH)/include/autoconf.h
61 @rm -f $(BB_PATH)/.config-old
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020062
63busybox_prepare: $(BUSYBOX_CONFIG)
64LOCAL_MODULE := busybox_prepare
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020065LOCAL_MODULE_TAGS := eng debug
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020066include $(BUILD_STATIC_LIBRARY)
67
68
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020069LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020070include $(CLEAR_VARS)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020071
Tanguy Pruvoteba45192011-07-15 20:38:12 +020072KERNEL_MODULES_DIR ?= /system/lib/modules
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020073
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020074SUBMAKE := make -s -C $(BB_PATH) CC=$(CC)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020075
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020076BUSYBOX_SRC_FILES = $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020077 libbb/android.c
78
79ifeq ($(TARGET_ARCH),arm)
80 BUSYBOX_SRC_FILES += \
Tanguy Pruvot36efc942011-11-20 14:41:41 +010081 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
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020087endif
88
Trevor Drake49ea11e2013-10-05 21:33:20 +010089ifeq ($(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
97endif
98
Rocky Zhang8f997da2011-10-03 21:11:37 +080099ifeq ($(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
107endif
108
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200109BUSYBOX_C_INCLUDES = \
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200110 $(BB_PATH)/include-$(BUSYBOX_CONFIG) \
111 $(BB_PATH)/include $(BB_PATH)/libbb \
Kyle Repinski67f9bd22014-10-21 05:12:38 -0500112 bionic/libc \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200113 bionic/libc/private \
Kyle Repinski67f9bd22014-10-21 05:12:38 -0500114 bionic/libc/dns/include \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200115 bionic/libm/include \
116 bionic/libm \
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100117 libc/kernel/common \
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200118 $(BB_PATH)/android/regex \
119 $(BB_PATH)/android/librpc
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200120
121BUSYBOX_CFLAGS = \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200122 -Werror=implicit \
123 -DNDEBUG \
Tanguy Pruvotc81b2cf2011-07-04 10:18:25 +0200124 -DANDROID \
Evan McClain6e205db2012-11-15 22:26:23 -0500125 -fno-strict-aliasing \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200126 -include include-$(BUSYBOX_CONFIG)/autoconf.h \
127 -D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR)"' \
128 -D'BB_VER="$(strip $(shell $(SUBMAKE) kernelversion)) $(BUSYBOX_SUFFIX)"' -DBB_BT=AUTOCONF_TIMESTAMP
129
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100130# to handle differences in ICS (ipv6)
131ifeq ($(BIONIC_ICS),true)
132BUSYBOX_CFLAGS += -DBIONIC_ICS
133endif
Tanguy Pruvot64baaf52011-07-04 09:41:45 +0200134
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200135
136# Build the static lib for the recovery tool
137
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200138BUSYBOX_CONFIG:=minimal
139BUSYBOX_SUFFIX:=static
140LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
141LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
142LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
143LOCAL_CFLAGS += \
144 -Dgetusershell=busybox_getusershell \
145 -Dsetusershell=busybox_setusershell \
146 -Dendusershell=busybox_endusershell \
147 -Dttyname_r=busybox_ttyname_r \
148 -Dgetmntent=busybox_getmntent \
149 -Dgetmntent_r=busybox_getmntent_r \
150 -Dgenerate_uuid=busybox_generate_uuid
151LOCAL_MODULE := libbusybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200152LOCAL_MODULE_TAGS := eng debug
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100153LOCAL_STATIC_LIBRARIES := libcutils libc libm
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200154$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200155include $(BUILD_STATIC_LIBRARY)
156
157
158# Bionic Busybox /system/xbin
159
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200160LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200161include $(CLEAR_VARS)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200162
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200163BUSYBOX_CONFIG:=full
164BUSYBOX_SUFFIX:=bionic
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100165LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
166ifeq ($(BIONIC_ICS),true)
167LOCAL_SRC_FILES += android/libc/__set_errno.c
168endif
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200169LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
170LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
Steven Luoececd8c2013-07-31 13:16:07 -0700171LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200172LOCAL_MODULE := busybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200173LOCAL_MODULE_TAGS := eng debug
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200174LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100175LOCAL_SHARED_LIBRARIES := libc libcutils libm
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +0100176LOCAL_STATIC_LIBRARIES := libclearsilverregex libuclibcrpc
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200177$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200178include $(BUILD_EXECUTABLE)
179
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200180BUSYBOX_LINKS := $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).links)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200181# nc is provided by external/netcat
182exclude := nc
183SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
184$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
185$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
186 @echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
187 @mkdir -p $(dir $@)
188 @rm -rf $@
189 $(hide) ln -sf $(BUSYBOX_BINARY) $@
190
191ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
192
193# We need this so that the installed files could be picked up based on the
194# local module name
195ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
196 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
197
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200198
codeworkx258ba0c2011-09-08 21:25:43 +0200199# Static Busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200200
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200201LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200202include $(CLEAR_VARS)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200203
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200204BUSYBOX_CONFIG:=full
205BUSYBOX_SUFFIX:=static
206LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
207LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
208LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
209LOCAL_CFLAGS += \
210 -Dgetusershell=busybox_getusershell \
211 -Dsetusershell=busybox_setusershell \
212 -Dendusershell=busybox_endusershell \
213 -Dttyname_r=busybox_ttyname_r \
214 -Dgetmntent=busybox_getmntent \
215 -Dgetmntent_r=busybox_getmntent_r \
216 -Dgenerate_uuid=busybox_generate_uuid
Steven Luoececd8c2013-07-31 13:16:07 -0700217LOCAL_LDFLAGS += -Wl,--no-fatal-warnings
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200218LOCAL_FORCE_STATIC_EXECUTABLE := true
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200219LOCAL_MODULE := static_busybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200220LOCAL_MODULE_STEM := busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200221LOCAL_MODULE_TAGS := optional
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +0100222LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200223LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
codeworkx258ba0c2011-09-08 21:25:43 +0200224LOCAL_MODULE_PATH := $(PRODUCT_OUT)/utilities
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200225LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200226$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200227include $(BUILD_EXECUTABLE)