blob: 4c4486da877007f0950c86af30740cbf60abe0fe [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
66include $(CLEAR_VARS)
67BUSYBOX_CONFIG:=full
68BUSYBOX_SUFFIX:=bionic
69LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
70LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
71LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
72LOCAL_MODULE := busybox
73LOCAL_MODULE_TAGS := eng
74LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
75LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex
76include $(BUILD_EXECUTABLE)
77
78BUSYBOX_LINKS := $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).links)
79# nc is provided by external/netcat
80exclude := nc
81SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
82$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
83$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
84 @echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
85 @mkdir -p $(dir $@)
86 @rm -rf $@
87 $(hide) ln -sf $(BUSYBOX_BINARY) $@
88
89ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
90
91# We need this so that the installed files could be picked up based on the
92# local module name
93ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
94 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
95
96# Build a static busybox for the recovery image
97include $(CLEAR_VARS)
98BUSYBOX_CONFIG:=minimal
99BUSYBOX_SUFFIX:=static
100LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
101LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
102LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
103LOCAL_CFLAGS += \
104 -Dgetusershell=busybox_getusershell \
105 -Dsetusershell=busybox_setusershell \
106 -Dendusershell=busybox_endusershell \
107 -Dttyname_r=busybox_ttyname_r \
108 -Dgetmntent=busybox_getmntent \
109 -Dgetmntent_r=busybox_getmntent_r \
110 -Dgenerate_uuid=busybox_generate_uuid
111LOCAL_MODULE := libbusybox
112LOCAL_MODULE_TAGS := eng
113LOCAL_STATIC_LIBRARIES += busybox_prepare libclearsilverregex libcutils libc libm
114include $(BUILD_STATIC_LIBRARY)
115
116
117# Build a static busybox (sample, no more used)
118ifeq (1,0)
119
120include $(CLEAR_VARS)
121BUSYBOX_CONFIG:=full
122BUSYBOX_SUFFIX:=static
123LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
124LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
125LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
126LOCAL_CFLAGS += \
127 -Dgetusershell=busybox_getusershell \
128 -Dsetusershell=busybox_setusershell \
129 -Dendusershell=busybox_endusershell \
130 -Dttyname_r=busybox_ttyname_r \
131 -Dgetmntent=busybox_getmntent \
132 -Dgetmntent_r=busybox_getmntent_r \
133 -Dgenerate_uuid=busybox_generate_uuid
134LOCAL_FORCE_STATIC_EXECUTABLE := true
135LOCAL_MODULE := bootmenu_busybox
136LOCAL_MODULE_TAGS := optional
137LOCAL_STATIC_LIBRARIES += libclearsilverregex libcutils libc libm
138LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
139LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/bootmenu/binary
140LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
141LOCAL_MODULE_STEM := busybox
142include $(BUILD_EXECUTABLE)
143
144endif