blob: 3c1f7244fdaec2b5a628266b98a34263367a5194 [file] [log] [blame]
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +02001LOCAL_PATH := $(call my-dir)
2
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +02003# Execute make clean, make prepare and copy profiles required for normal & static busybox (recovery)
4
5include $(CLEAR_VARS)
6BUSYBOX_CONFIG := full minimal
7$(BUSYBOX_CONFIG):
8 @echo GENERATE INCLUDES FOR BUSYBOX $@
9 @cd $(LOCAL_PATH) && make clean
10 cp $(LOCAL_PATH)/.config-$@ $(LOCAL_PATH)/.config
11 cd $(LOCAL_PATH) && make prepare
12 @#cp $(LOCAL_PATH)/.config $(LOCAL_PATH)/.config-$@
13 @mkdir -p $(LOCAL_PATH)/include-$@
14 cp $(LOCAL_PATH)/include/*.h $(LOCAL_PATH)/include-$@/
15 @rm $(LOCAL_PATH)/include/usage_compressed.h
16 @rm $(LOCAL_PATH)/.config
17
18busybox_prepare: $(BUSYBOX_CONFIG)
19LOCAL_MODULE := busybox_prepare
20LOCAL_MODULE_TAGS := eng
21include $(BUILD_STATIC_LIBRARY)
22
23
24
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020025# Make a static library for clearsilver's regex.
26# This prevents multiple symbol definition error....
27include $(CLEAR_VARS)
28LOCAL_SRC_FILES := ../clearsilver/util/regex/regex.c
29LOCAL_MODULE := libclearsilverregex
30LOCAL_C_INCLUDES := \
31 external/clearsilver \
32 external/clearsilver/util/regex
33include $(BUILD_STATIC_LIBRARY)
34
35
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020036
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020037SUBMAKE := make -s -C $(LOCAL_PATH) CC=$(CC)
38
39KERNEL_MODULES_DIR?=/system/lib/modules
40
41BUSYBOX_SRC_FILES = $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
42 libbb/android.c
43
44ifeq ($(TARGET_ARCH),arm)
45 BUSYBOX_SRC_FILES += \
46 android/libc/arch-arm/syscalls/adjtimex.S \
47 android/libc/arch-arm/syscalls/getsid.S \
48 android/libc/arch-arm/syscalls/stime.S \
49 android/libc/arch-arm/syscalls/swapon.S \
50 android/libc/arch-arm/syscalls/swapoff.S \
51 android/libc/arch-arm/syscalls/sysinfo.S
52endif
53
54BUSYBOX_C_INCLUDES = \
55 $(LOCAL_PATH)/include-$(BUSYBOX_CONFIG) \
56 $(LOCAL_PATH)/include $(LOCAL_PATH)/libbb \
57 external/clearsilver \
58 external/clearsilver/util/regex \
59 bionic/libc/private \
60 bionic/libm/include \
61 bionic/libm \
62 libc/kernel/common
63
64BUSYBOX_CFLAGS = \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020065 -Werror=implicit \
66 -DNDEBUG \
Tanguy Pruvotc81b2cf2011-07-04 10:18:25 +020067 -DANDROID \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020068 -include include-$(BUSYBOX_CONFIG)/autoconf.h \
69 -D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR)"' \
70 -D'BB_VER="$(strip $(shell $(SUBMAKE) kernelversion)) $(BUSYBOX_SUFFIX)"' -DBB_BT=AUTOCONF_TIMESTAMP
71
Tanguy Pruvot64baaf52011-07-04 09:41:45 +020072
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +020073
74# Build the static lib for the recovery tool
75
76include $(CLEAR_VARS)
77BUSYBOX_CONFIG:=minimal
78BUSYBOX_SUFFIX:=static
79LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
80LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
81LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
82LOCAL_CFLAGS += \
83 -Dgetusershell=busybox_getusershell \
84 -Dsetusershell=busybox_setusershell \
85 -Dendusershell=busybox_endusershell \
86 -Dttyname_r=busybox_ttyname_r \
87 -Dgetmntent=busybox_getmntent \
88 -Dgetmntent_r=busybox_getmntent_r \
89 -Dgenerate_uuid=busybox_generate_uuid
90LOCAL_MODULE := libbusybox
91LOCAL_MODULE_TAGS := eng
92LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex libcutils libc libm
93include $(BUILD_STATIC_LIBRARY)
94
95
96# Bionic Busybox /system/xbin
97
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020098include $(CLEAR_VARS)
99BUSYBOX_CONFIG:=full
100BUSYBOX_SUFFIX:=bionic
101LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
102LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
103LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
104LOCAL_MODULE := busybox
105LOCAL_MODULE_TAGS := eng
106LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
107LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex
108include $(BUILD_EXECUTABLE)
109
110BUSYBOX_LINKS := $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).links)
111# nc is provided by external/netcat
112exclude := nc
113SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
114$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
115$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
116 @echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
117 @mkdir -p $(dir $@)
118 @rm -rf $@
119 $(hide) ln -sf $(BUSYBOX_BINARY) $@
120
121ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
122
123# We need this so that the installed files could be picked up based on the
124# local module name
125ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
126 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
127
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200128
129# Build a static busybox (sample, no more used)
130ifeq (1,0)
131
132include $(CLEAR_VARS)
133BUSYBOX_CONFIG:=full
134BUSYBOX_SUFFIX:=static
135LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
136LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
137LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
138LOCAL_CFLAGS += \
139 -Dgetusershell=busybox_getusershell \
140 -Dsetusershell=busybox_setusershell \
141 -Dendusershell=busybox_endusershell \
142 -Dttyname_r=busybox_ttyname_r \
143 -Dgetmntent=busybox_getmntent \
144 -Dgetmntent_r=busybox_getmntent_r \
145 -Dgenerate_uuid=busybox_generate_uuid
146LOCAL_FORCE_STATIC_EXECUTABLE := true
147LOCAL_MODULE := bootmenu_busybox
148LOCAL_MODULE_TAGS := optional
149LOCAL_STATIC_LIBRARIES += libclearsilverregex libcutils libc libm
150LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200151# LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/bootmenu/binary
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200152LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
153LOCAL_MODULE_STEM := busybox
154include $(BUILD_EXECUTABLE)
155
156endif
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200157