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