blob: 9aad1cee599368f2e37e8b00d0b249786804a025 [file] [log] [blame]
Zonr Chang932648d2010-10-13 22:23:56 +08001#
2# Copyright (C) 2010 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
Carl Shapiro105a9d22010-04-13 17:53:26 -070017ifneq ($(TARGET_SIMULATOR),true)
18
Stephen Hines40b7fba2011-03-17 19:50:20 -070019local_cflags_for_libbcc := -Wall -Wno-unused-parameter -Werror
Stephen Hinesbbcef8a2011-05-04 19:40:10 -070020ifneq ($(TARGET_BUILD_VARIANT),eng)
21local_cflags_for_libbcc += -D__DISABLE_ASSERTS
22endif
Stephen Hines3b910a52011-03-11 15:54:03 -080023
Shih-wei Liao77ed6142010-04-07 12:21:42 -070024LOCAL_PATH := $(call my-dir)
Logan35849002011-01-15 07:30:43 +080025
Shih-wei Liao210a1ef2010-09-07 17:06:38 -070026LLVM_ROOT_PATH := external/llvm
Shih-wei Liao77ed6142010-04-07 12:21:42 -070027
Logan Chienda5e0c32011-06-13 03:47:21 +080028RSLOADER_ROOT_PATH := frameworks/compile/linkloader
29
Logan Chienf8d90122011-06-11 13:39:59 +080030# Extract Configuration from Config.h
Shih-wei Liaobc5ed672010-11-24 01:53:02 -080031
Logan35849002011-01-15 07:30:43 +080032libbcc_GET_CONFIG = $(shell cat "$(LOCAL_PATH)/Config.h" | \
33 grep "^\#define $1 [01]$$" | \
34 cut -d ' ' -f 3)
35
Logan Chienda5e0c32011-06-13 03:47:21 +080036libbcc_USE_OLD_JIT := $(call libbcc_GET_CONFIG,USE_OLD_JIT)
37libbcc_USE_MCJIT := $(call libbcc_GET_CONFIG,USE_MCJIT)
Logan35849002011-01-15 07:30:43 +080038libbcc_USE_CACHE := $(call libbcc_GET_CONFIG,USE_CACHE)
39libbcc_USE_DISASSEMBLER := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER)
40libbcc_USE_DISASSEMBLER_FILE := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER_FILE)
41libbcc_USE_LIBBCC_SHA1SUM := $(call libbcc_GET_CONFIG,USE_LIBBCC_SHA1SUM)
42
43# Source Files
Shih-wei Liaocd61af32010-04-29 00:02:57 -070044
Logancf3e5212010-12-29 01:44:55 +080045libbcc_SRC_FILES := \
Logan45e84be2011-02-28 05:40:11 +080046 lib/ExecutionEngine/bcc.cpp \
Logan45e84be2011-02-28 05:40:11 +080047 lib/ExecutionEngine/Compiler.cpp \
48 lib/ExecutionEngine/ContextManager.cpp \
49 lib/ExecutionEngine/FileHandle.cpp \
50 lib/ExecutionEngine/Runtime.c \
51 lib/ExecutionEngine/RuntimeStub.c \
52 lib/ExecutionEngine/Script.cpp \
53 lib/ExecutionEngine/ScriptCompiled.cpp \
54 lib/ExecutionEngine/SourceInfo.cpp
Logan35849002011-01-15 07:30:43 +080055
Logan Chienda5e0c32011-06-13 03:47:21 +080056ifeq ($(libbcc_USE_OLD_JIT),1)
57libbcc_SRC_FILES += \
58 lib/CodeGen/CodeEmitter.cpp \
59 lib/CodeGen/CodeMemoryManager.cpp
60endif
61
Logan35849002011-01-15 07:30:43 +080062ifeq ($(libbcc_USE_CACHE),1)
63libbcc_SRC_FILES += \
Logan45e84be2011-02-28 05:40:11 +080064 lib/ExecutionEngine/CacheReader.cpp \
65 lib/ExecutionEngine/CacheWriter.cpp \
66 lib/ExecutionEngine/ScriptCached.cpp \
67 lib/ExecutionEngine/Sha1Helper.cpp \
Shih-wei Liao5e3e0ce2011-06-17 13:59:46 -070068 lib/ExecutionEngine/MCCacheWriter.cpp \
69 lib/ExecutionEngine/MCCacheReader.cpp \
Logancf3e5212010-12-29 01:44:55 +080070 helper/sha1.c
Logan35849002011-01-15 07:30:43 +080071endif
Logancf3e5212010-12-29 01:44:55 +080072
Joseph Wen5de1adf2011-06-21 15:41:31 -070073FULL_PATH_libbcc_SRC_FILES := \
74 $(addprefix $(LOCAL_PATH)/, $(libbcc_SRC_FILES)) \
75 $(sort $(shell find $(LOCAL_PATH) -name "*.h"))
76
77# Build Host SHA1 Command Line
78# ========================================================
79include $(CLEAR_VARS)
80LOCAL_SRC_FILES := helper/sha1.c
81LOCAL_MODULE := sha1sum
82LOCAL_MODULE_TAGS := optional
83LOCAL_CFLAGS += -DCMDLINE
84include $(BUILD_HOST_EXECUTABLE)
85
Shih-wei Liao52fb1e92011-01-14 06:59:51 -080086#
Shih-wei Liao77ed6142010-04-07 12:21:42 -070087# Shared library for target
88# ========================================================
89include $(CLEAR_VARS)
Iliyan Malchev97bd44d2011-03-14 14:02:14 -070090
Shih-wei Liao77ed6142010-04-07 12:21:42 -070091LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +080092LOCAL_MODULE_TAGS := optional
Joseph Wen5de1adf2011-06-21 15:41:31 -070093LOCAL_MODULE_CLASS := SHARED_LIBRARIES
Stephen Hines3b910a52011-03-11 15:54:03 -080094LOCAL_CFLAGS += $(local_cflags_for_libbcc)
Logan61cb2302010-11-27 14:18:26 +080095LOCAL_SRC_FILES := \
Kenny Root34678ab2011-02-07 10:56:27 -080096 $(libbcc_SRC_FILES)
Shih-wei Liao77ed6142010-04-07 12:21:42 -070097
Joseph Wen5de1adf2011-06-21 15:41:31 -070098intermediates := $(local-intermediates-dir)
99libbcc_CHECKSUM_FILE := $(intermediates)/lib/bcc_checksum.c
100
101LOCAL_GENERATED_SOURCES += $(libbcc_CHECKSUM_FILE)
102
103$(libbcc_CHECKSUM_FILE):$(HOST_OUT_EXECUTABLES)/sha1sum $(FULL_PATH_libbcc_SRC_FILES)
104 @echo Generate SHA1
105 @echo -n "char const libbcc_build_checksum[41] = \"" > $@
106 @cat $(FULL_PATH_libbcc_SRC_FILES) | $(HOST_OUT_EXECUTABLES)/sha1sum >> $@
107 @echo "\";" >> $@
108
Kenny Root34678ab2011-02-07 10:56:27 -0800109ifeq ($(TARGET_ARCH),arm)
110 LOCAL_SRC_FILES += \
111 runtime/lib/arm/adddf3vfp.S \
112 runtime/lib/arm/addsf3vfp.S \
113 runtime/lib/arm/divdf3vfp.S \
114 runtime/lib/arm/divsf3vfp.S \
115 runtime/lib/arm/eqdf2vfp.S \
116 runtime/lib/arm/eqsf2vfp.S \
117 runtime/lib/arm/extendsfdf2vfp.S \
118 runtime/lib/arm/fixdfsivfp.S \
119 runtime/lib/arm/fixsfsivfp.S \
120 runtime/lib/arm/fixunsdfsivfp.S \
121 runtime/lib/arm/fixunssfsivfp.S \
122 runtime/lib/arm/floatsidfvfp.S \
123 runtime/lib/arm/floatsisfvfp.S \
124 runtime/lib/arm/floatunssidfvfp.S \
125 runtime/lib/arm/floatunssisfvfp.S \
126 runtime/lib/arm/gedf2vfp.S \
127 runtime/lib/arm/gesf2vfp.S \
128 runtime/lib/arm/gtdf2vfp.S \
129 runtime/lib/arm/gtsf2vfp.S \
130 runtime/lib/arm/ledf2vfp.S \
131 runtime/lib/arm/lesf2vfp.S \
132 runtime/lib/arm/ltdf2vfp.S \
133 runtime/lib/arm/ltsf2vfp.S \
134 runtime/lib/arm/muldf3vfp.S \
135 runtime/lib/arm/mulsf3vfp.S \
136 runtime/lib/arm/nedf2vfp.S \
137 runtime/lib/arm/negdf2vfp.S \
138 runtime/lib/arm/negsf2vfp.S \
139 runtime/lib/arm/nesf2vfp.S \
140 runtime/lib/arm/subdf3vfp.S \
141 runtime/lib/arm/subsf3vfp.S \
142 runtime/lib/arm/truncdfsf2vfp.S \
143 runtime/lib/arm/unorddf2vfp.S \
144 runtime/lib/arm/unordsf2vfp.S
145else
146 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
147 LOCAL_SRC_FILES += \
148 runtime/lib/i386/ashldi3.S \
149 runtime/lib/i386/ashrdi3.S \
150 runtime/lib/i386/divdi3.S \
151 runtime/lib/i386/floatdidf.S \
152 runtime/lib/i386/floatdisf.S \
153 runtime/lib/i386/floatdixf.S \
154 runtime/lib/i386/floatundidf.S \
155 runtime/lib/i386/floatundisf.S \
156 runtime/lib/i386/floatundixf.S \
157 runtime/lib/i386/lshrdi3.S \
158 runtime/lib/i386/moddi3.S \
159 runtime/lib/i386/muldi3.S \
160 runtime/lib/i386/udivdi3.S \
161 runtime/lib/i386/umoddi3.S
162 else
163 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
164 endif
165endif
166
167ifeq ($(TARGET_ARCH),arm)
168 LOCAL_STATIC_LIBRARIES := \
169 libLLVMARMCodeGen \
170 libLLVMARMInfo
171else
172 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
173 LOCAL_STATIC_LIBRARIES := \
174 libLLVMX86CodeGen \
Shih-wei Liaodbadbf42011-03-11 07:50:20 -0800175 libLLVMX86Info \
176 libLLVMX86Utils
Kenny Root34678ab2011-02-07 10:56:27 -0800177 else
178 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
179 endif
180endif
181
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -0700182ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -0700183 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -0700184endif
185
Kenny Root34678ab2011-02-07 10:56:27 -0800186LOCAL_STATIC_LIBRARIES += \
Logan61cb2302010-11-27 14:18:26 +0800187 libLLVMBitReader \
188 libLLVMSelectionDAG \
189 libLLVMAsmPrinter \
190 libLLVMCodeGen \
191 libLLVMLinker \
192 libLLVMJIT \
193 libLLVMTarget \
194 libLLVMMC \
195 libLLVMScalarOpts \
196 libLLVMInstCombine \
197 libLLVMipo \
198 libLLVMipa \
199 libLLVMTransformUtils \
200 libLLVMCore \
Shih-wei Liao34499f42011-06-20 22:40:45 -0700201 libLLVMAnalysis \
Shih-wei Liaoa8833142011-06-20 13:58:54 -0700202 libLLVMSupport
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700203
Shih-wei Liao7c5a5f72010-11-08 01:59:13 -0800204LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700205
Logan61cb2302010-11-27 14:18:26 +0800206LOCAL_C_INCLUDES := \
Logan Chienda5e0c32011-06-13 03:47:21 +0800207 $(RSLOADER_ROOT_PATH)/android \
Logan45e84be2011-02-28 05:40:11 +0800208 $(LOCAL_PATH)/lib/ExecutionEngine \
Shih-wei Liao67d8f372011-01-16 22:48:35 -0800209 $(LOCAL_PATH)/lib/CodeGen \
Logan8b77a772010-12-21 09:11:01 +0800210 $(LOCAL_PATH)/helper \
Loganc4395232010-11-27 18:54:17 +0800211 $(LOCAL_PATH)/include \
212 $(LOCAL_PATH)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700213
Logan35849002011-01-15 07:30:43 +0800214ifeq ($(libbcc_USE_DISASSEMBLER),1)
Kenny Root34678ab2011-02-07 10:56:27 -0800215 ifeq ($(TARGET_ARCH),arm)
216 LOCAL_STATIC_LIBRARIES += \
217 libLLVMARMDisassembler \
218 libLLVMARMAsmPrinter
219 else
220 ifeq ($(TARGET_ARCH),x86)
221 LOCAL_STATIC_LIBRARIES += \
222 libLLVMX86Disassembler \
Logan Chienc4ea07f2011-03-09 17:27:50 +0800223 libLLVMX86AsmPrinter
Kenny Root34678ab2011-02-07 10:56:27 -0800224 else
225 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
226 endif
227 endif
228 LOCAL_STATIC_LIBRARIES += \
229 libLLVMMCParser \
230 $(LOCAL_STATIC_LIBRARIES)
Shih-wei Liaocd61af32010-04-29 00:02:57 -0700231endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700232
Ying Wang77643ba2011-01-18 22:24:26 -0800233# This makes libclcore.bc get installed if and only if the target libbcc.so is installed.
234LOCAL_REQUIRED_MODULES := libclcore.bc
Ying Wang3ae8c2a2011-01-14 10:50:53 -0800235
Shih-wei Liaob8b7f2d2011-01-14 04:38:39 -0800236# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library
237# and reduces the size of libbcc.so by about 800k.
238# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
239# use below instead.
Logan Chienc4ea07f2011-03-09 17:27:50 +0800240LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
Shih-wei Liaob8b7f2d2011-01-14 04:38:39 -0800241
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700242include $(LLVM_ROOT_PATH)/llvm-device-build.mk
243include $(BUILD_SHARED_LIBRARY)
244
245# Shared library for host
246# ========================================================
247include $(CLEAR_VARS)
248
249LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +0800250LOCAL_MODULE_TAGS := optional
Joseph Wen5de1adf2011-06-21 15:41:31 -0700251LOCAL_MODULE_CLASS := SHARED_LIBRARIES
252LOCAL_IS_HOST_MODULE := true
Stephen Hines3b910a52011-03-11 15:54:03 -0800253LOCAL_CFLAGS += $(local_cflags_for_libbcc)
Logan61cb2302010-11-27 14:18:26 +0800254LOCAL_SRC_FILES := \
Logancf3e5212010-12-29 01:44:55 +0800255 $(libbcc_SRC_FILES) \
Logan2f789f32011-02-28 05:21:17 +0800256 helper/DebugHelper.c
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700257
Joseph Wen5de1adf2011-06-21 15:41:31 -0700258intermediates := $(local-intermediates-dir)
259libbcc_CHECKSUM_FILE := $(intermediates)/lib/bcc_checksum.c
260
261LOCAL_GENERATED_SOURCES += $(libbcc_CHECKSUM_FILE)
262
263$(libbcc_CHECKSUM_FILE):$(HOST_OUT_EXECUTABLES)/sha1sum $(FULL_PATH_libbcc_SRC_FILES)
264 @echo Generate SHA1
265 @echo -n "char const libbcc_build_checksum[41] = \"" > $@
266 @cat $(FULL_PATH_libbcc_SRC_FILES) | $(HOST_OUT_EXECUTABLES)/sha1sum >> $@
267 @echo "\";" >> $@
268
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700269ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -0700270 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700271endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700272
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700273LOCAL_STATIC_LIBRARIES += \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700274 libcutils \
275 libutils \
276 libLLVMX86CodeGen \
277 libLLVMX86Info \
278 libLLVMX86Utils \
279 libLLVMX86AsmPrinter \
280 libLLVMARMCodeGen \
281 libLLVMARMInfo \
282 libLLVMBitReader \
283 libLLVMSelectionDAG \
284 libLLVMAsmPrinter \
285 libLLVMMCParser \
286 libLLVMCodeGen \
287 libLLVMLinker \
288 libLLVMJIT \
289 libLLVMMC \
290 libLLVMScalarOpts \
291 libLLVMInstCombine \
292 libLLVMipo \
293 libLLVMipa \
294 libLLVMTransformUtils \
295 libLLVMCore \
296 libLLVMTarget \
Shih-wei Liao34499f42011-06-20 22:40:45 -0700297 libLLVMAnalysis \
Shih-wei Liaoa8833142011-06-20 13:58:54 -0700298 libLLVMSupport
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700299
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700300LOCAL_LDLIBS := -ldl -lpthread
301
Logan61cb2302010-11-27 14:18:26 +0800302LOCAL_C_INCLUDES := \
Logan Chienda5e0c32011-06-13 03:47:21 +0800303 $(RSLOADER_ROOT_PATH)/android \
Logan45e84be2011-02-28 05:40:11 +0800304 $(LOCAL_PATH)/lib/ExecutionEngine \
Shih-wei Liao67d8f372011-01-16 22:48:35 -0800305 $(LOCAL_PATH)/lib/CodeGen \
Logan8b77a772010-12-21 09:11:01 +0800306 $(LOCAL_PATH)/helper \
Loganc4395232010-11-27 18:54:17 +0800307 $(LOCAL_PATH)/include \
308 $(LOCAL_PATH)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700309
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700310# definitions for LLVM
Stephen Hines40b7fba2011-03-17 19:50:20 -0700311LOCAL_CFLAGS += -DDEBUG_CODEGEN=1
Kenny Root34678ab2011-02-07 10:56:27 -0800312
313ifeq ($(TARGET_ARCH),arm)
314 LOCAL_CFLAGS += -DFORCE_ARM_CODEGEN=1
315else
316 ifeq ($(TARGET_ARCH),x86)
317 LOCAL_CFLAGS += -DFORCE_X86_CODEGEN=1
318 else
319 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
320 endif
321endif
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700322
Logan35849002011-01-15 07:30:43 +0800323ifeq ($(libbcc_USE_DISASSEMBLER),1)
Logan61cb2302010-11-27 14:18:26 +0800324LOCAL_STATIC_LIBRARIES := \
325 libLLVMARMDisassembler \
326 libLLVMARMAsmPrinter \
Kenny Root34678ab2011-02-07 10:56:27 -0800327 libLLVMX86Disassembler \
Logan61cb2302010-11-27 14:18:26 +0800328 libLLVMMCParser \
329 $(LOCAL_STATIC_LIBRARIES)
Shih-wei Liaocd61af32010-04-29 00:02:57 -0700330endif
331
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700332include $(LLVM_ROOT_PATH)/llvm-host-build.mk
333include $(BUILD_HOST_SHARED_LIBRARY)
334
335# Build children
336# ========================================================
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700337include $(call all-makefiles-under,$(LOCAL_PATH))
Carl Shapiro105a9d22010-04-13 17:53:26 -0700338
Shih-wei Liao800e9c22010-04-18 16:08:16 -0700339endif # TARGET_SIMULATOR != true