blob: 8924b124cb0cee226acad66d78c0728a9a539424 [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 \
34 external/clearsilver \
35 external/clearsilver/util/regex \
36 bionic/libc/private \
37 bionic/libm/include \
38 bionic/libm \
39 libc/kernel/common
40
41BUSYBOX_CFLAGS = \
42 -std=gnu99 \
43 -Werror=implicit \
44 -DNDEBUG \
45 -DANDROID_CHANGES \
46 -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
50# execute make clean, make prepare and copy profiles required for normal & static busybox (recovery)
51include $(CLEAR_VARS)
52BUSYBOX_CONFIG := full minimal
53$(BUSYBOX_CONFIG):
54 @echo GENERATE INCLUDES FOR BUSYBOX $@
55 @cd $(LOCAL_PATH) && make clean
56 cp $(LOCAL_PATH)/.config-$@ $(LOCAL_PATH)/.config
57 cd $(LOCAL_PATH) && make prepare
58 cd $(LOCAL_PATH)/include-$@ && ./copy-current.sh
59 cd $(LOCAL_PATH)/include && rm usage_compressed.h
60 cd $(LOCAL_PATH)
61busybox_prepare: $(BUSYBOX_CONFIG)
62LOCAL_MODULE := busybox_prepare
63LOCAL_MODULE_TAGS := eng
64include $(BUILD_STATIC_LIBRARY)
65
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +020066
67# Build the static lib for the recovery tool
68
69include $(CLEAR_VARS)
70BUSYBOX_CONFIG:=minimal
71BUSYBOX_SUFFIX:=static
72LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
73LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
74LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
75LOCAL_CFLAGS += \
76 -Dgetusershell=busybox_getusershell \
77 -Dsetusershell=busybox_setusershell \
78 -Dendusershell=busybox_endusershell \
79 -Dttyname_r=busybox_ttyname_r \
80 -Dgetmntent=busybox_getmntent \
81 -Dgetmntent_r=busybox_getmntent_r \
82 -Dgenerate_uuid=busybox_generate_uuid
83LOCAL_MODULE := libbusybox
84LOCAL_MODULE_TAGS := eng
85LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex libcutils libc libm
86include $(BUILD_STATIC_LIBRARY)
87
88
89# Bionic Busybox /system/xbin
90
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020091include $(CLEAR_VARS)
92BUSYBOX_CONFIG:=full
93BUSYBOX_SUFFIX:=bionic
94LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
95LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
96LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
97LOCAL_MODULE := busybox
98LOCAL_MODULE_TAGS := eng
99LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
100LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex
101include $(BUILD_EXECUTABLE)
102
103BUSYBOX_LINKS := $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).links)
104# nc is provided by external/netcat
105exclude := nc
106SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
107$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
108$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
109 @echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
110 @mkdir -p $(dir $@)
111 @rm -rf $@
112 $(hide) ln -sf $(BUSYBOX_BINARY) $@
113
114ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
115
116# We need this so that the installed files could be picked up based on the
117# local module name
118ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
119 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
120
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200121
122# Build a static busybox (sample, no more used)
123ifeq (1,0)
124
125include $(CLEAR_VARS)
126BUSYBOX_CONFIG:=full
127BUSYBOX_SUFFIX:=static
128LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
129LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
130LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
131LOCAL_CFLAGS += \
132 -Dgetusershell=busybox_getusershell \
133 -Dsetusershell=busybox_setusershell \
134 -Dendusershell=busybox_endusershell \
135 -Dttyname_r=busybox_ttyname_r \
136 -Dgetmntent=busybox_getmntent \
137 -Dgetmntent_r=busybox_getmntent_r \
138 -Dgenerate_uuid=busybox_generate_uuid
139LOCAL_FORCE_STATIC_EXECUTABLE := true
140LOCAL_MODULE := bootmenu_busybox
141LOCAL_MODULE_TAGS := optional
142LOCAL_STATIC_LIBRARIES += libclearsilverregex libcutils libc libm
143LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200144# LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/bootmenu/binary
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200145LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
146LOCAL_MODULE_STEM := busybox
147include $(BUILD_EXECUTABLE)
148
149endif
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200150