blob: dee67401d41f26c339df562659a6fc29b42c2513 [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 Pruvot6a06a102014-07-03 11:34:01 +02004# Bionic Branches Switches (GB/ICS/L)
Ricardo Cerqueiraedbd4642014-11-05 22:58:13 +00005BIONIC_ICS := false
6BIONIC_L := true
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)
Tanguy Pruvot3284a1d2014-05-16 20:01:11 +020010LOCAL_SRC_FILES := android/regex/bb_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
Tanguy Pruvot6a06a102014-07-03 11:34:01 +020022ifeq ($(BIONIC_L),true)
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +080023LOCAL_CFLAGS += -DBIONIC_ICS -DBIONIC_L
Tanguy Pruvot6a06a102014-07-03 11:34:01 +020024endif
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010025include $(BUILD_STATIC_LIBRARY)
26
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020027#####################################################################
28
29# Execute make prepare for normal config & static lib (recovery)
Tanguy Pruvot29d8ebe2011-10-29 15:15:34 +020030
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020031LOCAL_PATH := $(BB_PATH)
32include $(CLEAR_VARS)
33
Chih-Wei Huang51be78d2015-03-19 15:50:16 +010034BUSYBOX_CROSS_COMPILER_PREFIX := $(abspath $(TARGET_TOOLS_PREFIX))
Trevor Drake2b995262013-10-05 21:33:20 +010035
Tanguy Pruvotf6410612014-07-24 23:21:48 +020036# On aosp (master), path is relative, not on cm (kitkat)
37bb_gen := $(abspath $(TARGET_OUT_INTERMEDIATES)/busybox)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020038
Tanguy Pruvotf6410612014-07-24 23:21:48 +020039busybox_prepare_full := $(bb_gen)/full/.config
40$(busybox_prepare_full): $(BB_PATH)/busybox-full.config
41 @echo -e ${CL_YLW}"Prepare config for busybox binary"${CL_RST}
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020042 @rm -rf $(bb_gen)/full
Tanguy Pruvota20778a2014-08-10 13:24:35 +020043 @rm -f $(shell find $(abspath $(call intermediates-dir-for,EXECUTABLES,busybox)) -name "*.o")
Tanguy Pruvotf6410612014-07-24 23:21:48 +020044 @mkdir -p $(@D)
45 @cat $^ > $@ && echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $@
Humberto Borbafcdf9762016-08-30 12:22:34 -030046 make -C $(BB_PATH) prepare O=$(@D)
Tanguy Pruvot266892e2014-07-22 18:56:44 +020047
Tanguy Pruvotf6410612014-07-24 23:21:48 +020048busybox_prepare_minimal := $(bb_gen)/minimal/.config
49$(busybox_prepare_minimal): $(BB_PATH)/busybox-minimal.config
50 @echo -e ${CL_YLW}"Prepare config for libbusybox"${CL_RST}
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020051 @rm -rf $(bb_gen)/minimal
Tanguy Pruvotc9b3fd22014-08-07 01:10:32 +020052 @rm -f $(shell find $(abspath $(call intermediates-dir-for,STATIC_LIBRARIES,libbusybox)) -name "*.o")
Tanguy Pruvotf6410612014-07-24 23:21:48 +020053 @mkdir -p $(@D)
54 @cat $^ > $@ && echo "CONFIG_CROSS_COMPILER_PREFIX=\"$(BUSYBOX_CROSS_COMPILER_PREFIX)\"" >> $@
Humberto Borbafcdf9762016-08-30 12:22:34 -030055 make -C $(BB_PATH) prepare O=$(@D)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020056
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020057
58#####################################################################
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020059
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020060LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020061include $(CLEAR_VARS)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020062
Tanguy Pruvoteba45192011-07-15 20:38:12 +020063KERNEL_MODULES_DIR ?= /system/lib/modules
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020064
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020065SUBMAKE := make -s -C $(BB_PATH) CC=$(CC)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020066
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020067BUSYBOX_SRC_FILES = \
68 $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
Tanguy Pruvot37d7f5f2014-08-05 08:14:29 +020069 android/libc/mktemp.c \
Tanguy Pruvot477b2eb2014-07-31 05:49:11 +020070 android/libc/pty.c \
71 android/android.c
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020072
Tanguy Pruvotd4d81332014-08-06 15:38:40 +020073BUSYBOX_ASM_FILES =
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +080074ifneq ($(BIONIC_L),true)
Tanguy Pruvotd4d81332014-08-06 15:38:40 +020075 BUSYBOX_ASM_FILES += swapon.S swapoff.S sysinfo.S
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020076endif
77
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +080078ifneq ($(filter arm x86 mips,$(TARGET_ARCH)),)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +020079 BUSYBOX_SRC_FILES += \
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +080080 $(addprefix android/libc/arch-$(TARGET_ARCH)/syscalls/,$(BUSYBOX_ASM_FILES))
Rocky Zhang8f997da2011-10-03 21:11:37 +080081endif
82
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020083BUSYBOX_C_INCLUDES = \
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020084 $(BB_PATH)/include $(BB_PATH)/libbb \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020085 bionic/libc/private \
86 bionic/libm/include \
Tanguy Pruvot6a06a102014-07-03 11:34:01 +020087 bionic/libc \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020088 bionic/libm \
Tanguy Pruvot36efc942011-11-20 14:41:41 +010089 libc/kernel/common \
Tanguy Pruvot3284a1d2014-05-16 20:01:11 +020090 external/libselinux/include \
Iftekhar Rifatc8b9b322015-10-08 18:12:54 +060091 external/selinux/libsepol/include \
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +020092 $(BB_PATH)/android/regex \
93 $(BB_PATH)/android/librpc
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020094
95BUSYBOX_CFLAGS = \
Tanguy Pruvot1071f3e2014-07-31 05:51:18 +020096 -Werror=implicit -Wno-clobbered \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020097 -DNDEBUG \
Tanguy Pruvotc81b2cf2011-07-04 10:18:25 +020098 -DANDROID \
Evan McClain6e205db2012-11-15 22:26:23 -050099 -fno-strict-aliasing \
Tanguy Pruvotc1a6bc32014-05-29 15:47:17 +0200100 -fno-builtin-stpcpy \
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200101 -include $(bb_gen)/$(BUSYBOX_CONFIG)/include/autoconf.h \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200102 -D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR)"' \
103 -D'BB_VER="$(strip $(shell $(SUBMAKE) kernelversion)) $(BUSYBOX_SUFFIX)"' -DBB_BT=AUTOCONF_TIMESTAMP
104
Tanguy Pruvot6a06a102014-07-03 11:34:01 +0200105ifeq ($(BIONIC_L),true)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200106 BUSYBOX_CFLAGS += -DBIONIC_L
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +0800107 BUSYBOX_AFLAGS += -DBIONIC_L
108 # include changes for ICS/JB/KK
109 BIONIC_ICS := true
110endif
111
112ifeq ($(BIONIC_ICS),true)
113 BUSYBOX_CFLAGS += -DBIONIC_ICS
Tanguy Pruvot6a06a102014-07-03 11:34:01 +0200114endif
115
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200116
117# Build the static lib for the recovery tool
118
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200119BUSYBOX_CONFIG:=minimal
120BUSYBOX_SUFFIX:=static
121LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200122LOCAL_C_INCLUDES := $(bb_gen)/minimal/include $(BUSYBOX_C_INCLUDES)
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200123LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
124LOCAL_CFLAGS += \
Tanguy Pruvot3284a1d2014-05-16 20:01:11 +0200125 -DRECOVERY_VERSION \
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200126 -Dgetusershell=busybox_getusershell \
127 -Dsetusershell=busybox_setusershell \
128 -Dendusershell=busybox_endusershell \
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200129 -Dgetmntent=busybox_getmntent \
130 -Dgetmntent_r=busybox_getmntent_r \
131 -Dgenerate_uuid=busybox_generate_uuid
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +0800132LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200133LOCAL_MODULE := libbusybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200134LOCAL_MODULE_TAGS := eng debug
Tanguy Pruvotbf574362014-07-23 20:20:10 +0200135LOCAL_STATIC_LIBRARIES := libcutils libc libm libselinux
Tanguy Pruvotf6410612014-07-24 23:21:48 +0200136LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_minimal)
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200137include $(BUILD_STATIC_LIBRARY)
138
139
140# Bionic Busybox /system/xbin
141
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200142LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200143include $(CLEAR_VARS)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200144
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200145BUSYBOX_CONFIG:=full
146BUSYBOX_SUFFIX:=bionic
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100147LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200148LOCAL_C_INCLUDES := $(bb_gen)/full/include $(BUSYBOX_C_INCLUDES)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200149LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +0800150LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200151LOCAL_MODULE := busybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200152LOCAL_MODULE_TAGS := eng debug
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200153LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100154LOCAL_SHARED_LIBRARIES := libc libcutils libm
Tanguy Pruvotbf574362014-07-23 20:20:10 +0200155LOCAL_STATIC_LIBRARIES := libclearsilverregex libuclibcrpc libselinux
Tanguy Pruvotf6410612014-07-24 23:21:48 +0200156LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_full)
Steve Kondik91d27cb2015-11-01 04:23:38 -0800157LOCAL_CLANG := false
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200158include $(BUILD_EXECUTABLE)
159
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200160BUSYBOX_LINKS := $(shell cat $(BB_PATH)/busybox-$(BUSYBOX_CONFIG).links)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200161# nc is provided by external/netcat
162exclude := nc
163SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
164$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
165$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200166 @echo -e ${CL_CYN}"Symlink:"${CL_RST}" $@ -> $(BUSYBOX_BINARY)"
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200167 @mkdir -p $(dir $@)
168 @rm -rf $@
169 $(hide) ln -sf $(BUSYBOX_BINARY) $@
170
171ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
172
173# We need this so that the installed files could be picked up based on the
174# local module name
175ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
176 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
177
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200178
codeworkx258ba0c2011-09-08 21:25:43 +0200179# Static Busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200180
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200181LOCAL_PATH := $(BB_PATH)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200182include $(CLEAR_VARS)
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200183
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200184BUSYBOX_CONFIG:=full
185BUSYBOX_SUFFIX:=static
186LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
Tanguy Pruvot3862b5f2014-07-21 20:02:03 +0200187LOCAL_C_INCLUDES := $(bb_gen)/full/include $(BUSYBOX_C_INCLUDES)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200188LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
189LOCAL_CFLAGS += \
190 -Dgetusershell=busybox_getusershell \
191 -Dsetusershell=busybox_setusershell \
192 -Dendusershell=busybox_endusershell \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200193 -Dgetmntent=busybox_getmntent \
194 -Dgetmntent_r=busybox_getmntent_r \
195 -Dgenerate_uuid=busybox_generate_uuid
Chih-Wei Huang29cf8c22014-07-30 17:04:54 +0800196LOCAL_ASFLAGS := $(BUSYBOX_AFLAGS)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200197LOCAL_FORCE_STATIC_EXECUTABLE := true
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200198LOCAL_MODULE := static_busybox
Tanguy Pruvot8a6c2c22012-04-28 00:24:09 +0200199LOCAL_MODULE_STEM := busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200200LOCAL_MODULE_TAGS := optional
Tanguy Pruvotbf574362014-07-23 20:20:10 +0200201LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc libselinux
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200202LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
codeworkx258ba0c2011-09-08 21:25:43 +0200203LOCAL_MODULE_PATH := $(PRODUCT_OUT)/utilities
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200204LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
Tanguy Pruvotf6410612014-07-24 23:21:48 +0200205LOCAL_ADDITIONAL_DEPENDENCIES := $(busybox_prepare_full)
Iftekhar Rifatae4659e2015-10-08 20:03:22 +0600206LOCAL_PACK_MODULE_RELOCATIONS := false
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200207include $(BUILD_EXECUTABLE)