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