blob: 2e6a184ef06a6847df59cf099404cb62263ac5f4 [file] [log] [blame]
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +02001LOCAL_PATH := $(call my-dir)
2
Koushik Dutta129a7982011-11-16 18:27:02 -08003
Tanguy Pruvot36efc942011-11-20 14:41:41 +01004# Bionic Branches Switches (CM7/AOSP/ICS)
5BIONIC_ICS := true
Tanguy Pruvoteba45192011-07-15 20:38:12 +02006
Tanguy Pruvot29d8ebe2011-10-29 15:15:34 +02007
Tanguy Pruvot36efc942011-11-20 14:41:41 +01008# Make a static library for regex.
9include $(CLEAR_VARS)
10LOCAL_SRC_FILES := android/regex/regex.c
11LOCAL_C_INCLUDES := android/regex
12LOCAL_MODULE := libclearsilverregex
13include $(BUILD_STATIC_LIBRARY)
14
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010015# Make a static library for RPC library (coming from uClibc).
16include $(CLEAR_VARS)
17LOCAL_SRC_FILES := $(shell cat $(LOCAL_PATH)/android/librpc.sources)
18LOCAL_C_INCLUDES := $(LOCAL_PATH)/android/librpc
19LOCAL_MODULE := libuclibcrpc
20include $(BUILD_STATIC_LIBRARY)
21
Tanguy Pruvot29d8ebe2011-10-29 15:15:34 +020022
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020023# Execute make clean, make prepare and copy profiles required for normal & static busybox (recovery)
24
25include $(CLEAR_VARS)
Tanguy Pruvoteba45192011-07-15 20:38:12 +020026KERNEL_MODULES_DIR ?= /system/lib/modules
27BUSYBOX_CONFIG := minimal full
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020028$(BUSYBOX_CONFIG):
29 @echo GENERATE INCLUDES FOR BUSYBOX $@
30 @cd $(LOCAL_PATH) && make clean
31 cp $(LOCAL_PATH)/.config-$@ $(LOCAL_PATH)/.config
32 cd $(LOCAL_PATH) && make prepare
33 @#cp $(LOCAL_PATH)/.config $(LOCAL_PATH)/.config-$@
34 @mkdir -p $(LOCAL_PATH)/include-$@
35 cp $(LOCAL_PATH)/include/*.h $(LOCAL_PATH)/include-$@/
36 @rm $(LOCAL_PATH)/include/usage_compressed.h
Tanguy Pruvoteba45192011-07-15 20:38:12 +020037 @rm -f $(LOCAL_PATH)/.config-old
Tanguy Pruvotb2ccaf32011-07-05 18:22:26 +020038
39busybox_prepare: $(BUSYBOX_CONFIG)
40LOCAL_MODULE := busybox_prepare
41LOCAL_MODULE_TAGS := eng
42include $(BUILD_STATIC_LIBRARY)
43
44
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020045include $(CLEAR_VARS)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020046
Tanguy Pruvoteba45192011-07-15 20:38:12 +020047KERNEL_MODULES_DIR ?= /system/lib/modules
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020048
Tanguy Pruvoteba45192011-07-15 20:38:12 +020049SUBMAKE := make -s -C $(LOCAL_PATH) CC=$(CC)
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020050
51BUSYBOX_SRC_FILES = $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).sources) \
52 libbb/android.c
53
54ifeq ($(TARGET_ARCH),arm)
55 BUSYBOX_SRC_FILES += \
Tanguy Pruvot36efc942011-11-20 14:41:41 +010056 android/libc/arch-arm/syscalls/adjtimex.S \
57 android/libc/arch-arm/syscalls/getsid.S \
58 android/libc/arch-arm/syscalls/stime.S \
59 android/libc/arch-arm/syscalls/swapon.S \
60 android/libc/arch-arm/syscalls/swapoff.S \
61 android/libc/arch-arm/syscalls/sysinfo.S
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020062endif
63
Rocky Zhang8f997da2011-10-03 21:11:37 +080064ifeq ($(TARGET_ARCH),mips)
65 BUSYBOX_SRC_FILES += \
66 android/libc/arch-mips/syscalls/adjtimex.S \
67 android/libc/arch-mips/syscalls/getsid.S \
68 android/libc/arch-mips/syscalls/stime.S \
69 android/libc/arch-mips/syscalls/swapon.S \
70 android/libc/arch-mips/syscalls/swapoff.S \
71 android/libc/arch-mips/syscalls/sysinfo.S
72endif
73
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020074BUSYBOX_C_INCLUDES = \
75 $(LOCAL_PATH)/include-$(BUSYBOX_CONFIG) \
76 $(LOCAL_PATH)/include $(LOCAL_PATH)/libbb \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020077 bionic/libc/private \
78 bionic/libm/include \
79 bionic/libm \
Tanguy Pruvot36efc942011-11-20 14:41:41 +010080 libc/kernel/common \
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +010081 $(LOCAL_PATH)/android/regex \
82 $(LOCAL_PATH)/android/librpc
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020083
84BUSYBOX_CFLAGS = \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020085 -Werror=implicit \
86 -DNDEBUG \
Tanguy Pruvotc81b2cf2011-07-04 10:18:25 +020087 -DANDROID \
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +020088 -include include-$(BUSYBOX_CONFIG)/autoconf.h \
89 -D'CONFIG_DEFAULT_MODULES_DIR="$(KERNEL_MODULES_DIR)"' \
90 -D'BB_VER="$(strip $(shell $(SUBMAKE) kernelversion)) $(BUSYBOX_SUFFIX)"' -DBB_BT=AUTOCONF_TIMESTAMP
91
Tanguy Pruvot36efc942011-11-20 14:41:41 +010092# to handle differences in ICS (ipv6)
93ifeq ($(BIONIC_ICS),true)
94BUSYBOX_CFLAGS += -DBIONIC_ICS
95endif
Tanguy Pruvot64baaf52011-07-04 09:41:45 +020096
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +020097
98# Build the static lib for the recovery tool
99
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200100BUSYBOX_CONFIG:=minimal
101BUSYBOX_SUFFIX:=static
102LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
103LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
104LOCAL_CFLAGS := -Dmain=busybox_driver $(BUSYBOX_CFLAGS)
105LOCAL_CFLAGS += \
106 -Dgetusershell=busybox_getusershell \
107 -Dsetusershell=busybox_setusershell \
108 -Dendusershell=busybox_endusershell \
109 -Dttyname_r=busybox_ttyname_r \
110 -Dgetmntent=busybox_getmntent \
111 -Dgetmntent_r=busybox_getmntent_r \
112 -Dgenerate_uuid=busybox_generate_uuid
113LOCAL_MODULE := libbusybox
114LOCAL_MODULE_TAGS := eng
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100115LOCAL_STATIC_LIBRARIES := libcutils libc libm
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200116$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvotd0fce6d2011-07-04 04:46:06 +0200117include $(BUILD_STATIC_LIBRARY)
118
119
120# Bionic Busybox /system/xbin
121
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200122include $(CLEAR_VARS)
123BUSYBOX_CONFIG:=full
124BUSYBOX_SUFFIX:=bionic
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100125LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
126ifeq ($(BIONIC_ICS),true)
127LOCAL_SRC_FILES += android/libc/__set_errno.c
128endif
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200129LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
130LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
131LOCAL_MODULE := busybox
132LOCAL_MODULE_TAGS := eng
133LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
Tanguy Pruvot36efc942011-11-20 14:41:41 +0100134LOCAL_SHARED_LIBRARIES := libc libcutils libm
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +0100135LOCAL_STATIC_LIBRARIES := libclearsilverregex libuclibcrpc
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200136$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200137include $(BUILD_EXECUTABLE)
138
139BUSYBOX_LINKS := $(shell cat $(LOCAL_PATH)/busybox-$(BUSYBOX_CONFIG).links)
140# nc is provided by external/netcat
141exclude := nc
142SYMLINKS := $(addprefix $(TARGET_OUT_OPTIONAL_EXECUTABLES)/,$(filter-out $(exclude),$(notdir $(BUSYBOX_LINKS))))
143$(SYMLINKS): BUSYBOX_BINARY := $(LOCAL_MODULE)
144$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
145 @echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
146 @mkdir -p $(dir $@)
147 @rm -rf $@
148 $(hide) ln -sf $(BUSYBOX_BINARY) $@
149
150ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
151
152# We need this so that the installed files could be picked up based on the
153# local module name
154ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
155 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
156
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200157
codeworkx258ba0c2011-09-08 21:25:43 +0200158# Static Busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200159
160include $(CLEAR_VARS)
161BUSYBOX_CONFIG:=full
162BUSYBOX_SUFFIX:=static
163LOCAL_SRC_FILES := $(BUSYBOX_SRC_FILES)
164LOCAL_C_INCLUDES := $(BUSYBOX_C_INCLUDES)
165LOCAL_CFLAGS := $(BUSYBOX_CFLAGS)
166LOCAL_CFLAGS += \
167 -Dgetusershell=busybox_getusershell \
168 -Dsetusershell=busybox_setusershell \
169 -Dendusershell=busybox_endusershell \
170 -Dttyname_r=busybox_ttyname_r \
171 -Dgetmntent=busybox_getmntent \
172 -Dgetmntent_r=busybox_getmntent_r \
173 -Dgenerate_uuid=busybox_generate_uuid
174LOCAL_FORCE_STATIC_EXECUTABLE := true
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200175LOCAL_MODULE := static_busybox
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200176LOCAL_MODULE_TAGS := optional
Patrick Schaaf2dd59ef2012-02-27 22:27:31 +0100177LOCAL_STATIC_LIBRARIES := libclearsilverregex libc libcutils libm libuclibcrpc
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200178LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES
codeworkx258ba0c2011-09-08 21:25:43 +0200179LOCAL_MODULE_PATH := $(PRODUCT_OUT)/utilities
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200180LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities
181LOCAL_MODULE_STEM := busybox
Tanguy Pruvot985c4112011-10-10 21:28:29 +0200182$(LOCAL_MODULE): busybox_prepare
Tanguy Pruvot8aeb3712011-06-30 08:59:26 +0200183include $(BUILD_EXECUTABLE)