Android.mk revision 5e3e0ce19d80c9a42b89ca95f22d98fbbe6ffb14
1#
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
17ifneq ($(TARGET_SIMULATOR),true)
18
19local_cflags_for_libbcc := -Wall -Wno-unused-parameter -Werror
20ifneq ($(TARGET_BUILD_VARIANT),eng)
21local_cflags_for_libbcc += -D__DISABLE_ASSERTS
22endif
23
24LOCAL_PATH := $(call my-dir)
25
26LLVM_ROOT_PATH := external/llvm
27
28RSLOADER_ROOT_PATH := frameworks/compile/linkloader
29
30# Extract Configuration from Config.h
31
32libbcc_GET_CONFIG = $(shell cat "$(LOCAL_PATH)/Config.h" | \
33                            grep "^\#define $1 [01]$$" | \
34                            cut -d ' ' -f 3)
35
36libbcc_USE_OLD_JIT := $(call libbcc_GET_CONFIG,USE_OLD_JIT)
37libbcc_USE_MCJIT := $(call libbcc_GET_CONFIG,USE_MCJIT)
38libbcc_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
44
45libbcc_SRC_FILES := \
46  lib/ExecutionEngine/bcc.cpp \
47  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
55
56ifeq ($(libbcc_USE_OLD_JIT),1)
57libbcc_SRC_FILES += \
58  lib/CodeGen/CodeEmitter.cpp \
59  lib/CodeGen/CodeMemoryManager.cpp
60endif
61
62ifeq ($(libbcc_USE_CACHE),1)
63libbcc_SRC_FILES += \
64  lib/ExecutionEngine/CacheReader.cpp \
65  lib/ExecutionEngine/CacheWriter.cpp \
66  lib/ExecutionEngine/ScriptCached.cpp \
67  lib/ExecutionEngine/Sha1Helper.cpp \
68  lib/ExecutionEngine/MCCacheWriter.cpp \
69  lib/ExecutionEngine/MCCacheReader.cpp \
70  helper/sha1.c
71endif
72
73#
74# Shared library for target
75# ========================================================
76include $(CLEAR_VARS)
77
78LOCAL_MODULE := libbcc
79LOCAL_MODULE_TAGS := optional
80LOCAL_CFLAGS += $(local_cflags_for_libbcc)
81LOCAL_SRC_FILES := \
82  $(libbcc_SRC_FILES)
83
84ifeq ($(TARGET_ARCH),arm)
85  LOCAL_SRC_FILES += \
86    runtime/lib/arm/adddf3vfp.S \
87    runtime/lib/arm/addsf3vfp.S \
88    runtime/lib/arm/divdf3vfp.S \
89    runtime/lib/arm/divsf3vfp.S \
90    runtime/lib/arm/eqdf2vfp.S \
91    runtime/lib/arm/eqsf2vfp.S \
92    runtime/lib/arm/extendsfdf2vfp.S \
93    runtime/lib/arm/fixdfsivfp.S \
94    runtime/lib/arm/fixsfsivfp.S \
95    runtime/lib/arm/fixunsdfsivfp.S \
96    runtime/lib/arm/fixunssfsivfp.S \
97    runtime/lib/arm/floatsidfvfp.S \
98    runtime/lib/arm/floatsisfvfp.S \
99    runtime/lib/arm/floatunssidfvfp.S \
100    runtime/lib/arm/floatunssisfvfp.S \
101    runtime/lib/arm/gedf2vfp.S \
102    runtime/lib/arm/gesf2vfp.S \
103    runtime/lib/arm/gtdf2vfp.S \
104    runtime/lib/arm/gtsf2vfp.S \
105    runtime/lib/arm/ledf2vfp.S \
106    runtime/lib/arm/lesf2vfp.S \
107    runtime/lib/arm/ltdf2vfp.S \
108    runtime/lib/arm/ltsf2vfp.S \
109    runtime/lib/arm/muldf3vfp.S \
110    runtime/lib/arm/mulsf3vfp.S \
111    runtime/lib/arm/nedf2vfp.S \
112    runtime/lib/arm/negdf2vfp.S \
113    runtime/lib/arm/negsf2vfp.S \
114    runtime/lib/arm/nesf2vfp.S \
115    runtime/lib/arm/subdf3vfp.S \
116    runtime/lib/arm/subsf3vfp.S \
117    runtime/lib/arm/truncdfsf2vfp.S \
118    runtime/lib/arm/unorddf2vfp.S \
119    runtime/lib/arm/unordsf2vfp.S
120else
121  ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
122    LOCAL_SRC_FILES += \
123      runtime/lib/i386/ashldi3.S \
124      runtime/lib/i386/ashrdi3.S \
125      runtime/lib/i386/divdi3.S \
126      runtime/lib/i386/floatdidf.S \
127      runtime/lib/i386/floatdisf.S \
128      runtime/lib/i386/floatdixf.S \
129      runtime/lib/i386/floatundidf.S \
130      runtime/lib/i386/floatundisf.S \
131      runtime/lib/i386/floatundixf.S \
132      runtime/lib/i386/lshrdi3.S \
133      runtime/lib/i386/moddi3.S \
134      runtime/lib/i386/muldi3.S \
135      runtime/lib/i386/udivdi3.S \
136      runtime/lib/i386/umoddi3.S
137  else
138    $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
139  endif
140endif
141
142ifeq ($(TARGET_ARCH),arm)
143  LOCAL_STATIC_LIBRARIES := \
144    libLLVMARMCodeGen \
145    libLLVMARMInfo
146else
147  ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
148    LOCAL_STATIC_LIBRARIES := \
149      libLLVMX86CodeGen \
150      libLLVMX86Info \
151      libLLVMX86Utils
152  else
153    $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
154  endif
155endif
156
157LOCAL_STATIC_LIBRARIES += \
158  librsloader \
159  libLLVMBitReader \
160  libLLVMSelectionDAG \
161  libLLVMAsmPrinter \
162  libLLVMCodeGen \
163  libLLVMLinker \
164  libLLVMJIT \
165  libLLVMTarget \
166  libLLVMMC \
167  libLLVMScalarOpts \
168  libLLVMInstCombine \
169  libLLVMipo \
170  libLLVMipa \
171  libLLVMTransformUtils \
172  libLLVMCore \
173  libLLVMSupport \
174  libLLVMAnalysis
175
176LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
177
178LOCAL_C_INCLUDES := \
179  $(RSLOADER_ROOT_PATH)/android \
180  $(LOCAL_PATH)/lib/ExecutionEngine \
181  $(LOCAL_PATH)/lib/CodeGen \
182  $(LOCAL_PATH)/helper \
183  $(LOCAL_PATH)/include \
184  $(LOCAL_PATH)
185
186ifeq ($(libbcc_USE_DISASSEMBLER),1)
187  ifeq ($(TARGET_ARCH),arm)
188    LOCAL_STATIC_LIBRARIES += \
189      libLLVMARMDisassembler \
190      libLLVMARMAsmPrinter
191  else
192    ifeq ($(TARGET_ARCH),x86)
193      LOCAL_STATIC_LIBRARIES += \
194        libLLVMX86Disassembler \
195        libLLVMX86AsmPrinter
196    else
197      $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
198    endif
199  endif
200  LOCAL_STATIC_LIBRARIES += \
201    libLLVMMCParser \
202    $(LOCAL_STATIC_LIBRARIES)
203endif
204
205# This makes libclcore.bc get installed if and only if the target libbcc.so is installed.
206LOCAL_REQUIRED_MODULES := libclcore.bc
207
208# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library
209# and reduces the size of libbcc.so by about 800k.
210# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
211# use below instead.
212LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
213
214include $(LLVM_ROOT_PATH)/llvm-device-build.mk
215include $(BUILD_SHARED_LIBRARY)
216
217# Shared library for host
218# ========================================================
219include $(CLEAR_VARS)
220
221LOCAL_MODULE := libbcc
222LOCAL_MODULE_TAGS := optional
223LOCAL_CFLAGS += $(local_cflags_for_libbcc)
224LOCAL_SRC_FILES := \
225  $(libbcc_SRC_FILES) \
226  helper/DebugHelper.c
227
228LOCAL_STATIC_LIBRARIES := \
229  librsloader \
230  libcutils \
231  libutils \
232  libLLVMX86CodeGen \
233  libLLVMX86Info \
234  libLLVMX86Utils \
235  libLLVMX86AsmPrinter \
236  libLLVMARMCodeGen \
237  libLLVMARMInfo \
238  libLLVMBitReader \
239  libLLVMSelectionDAG \
240  libLLVMAsmPrinter \
241  libLLVMMCParser \
242  libLLVMCodeGen \
243  libLLVMLinker \
244  libLLVMJIT \
245  libLLVMMC \
246  libLLVMScalarOpts \
247  libLLVMInstCombine \
248  libLLVMipo \
249  libLLVMipa \
250  libLLVMTransformUtils \
251  libLLVMCore \
252  libLLVMTarget \
253  libLLVMSupport \
254  libLLVMAnalysis
255
256LOCAL_LDLIBS := -ldl -lpthread
257
258LOCAL_C_INCLUDES := \
259  $(RSLOADER_ROOT_PATH)/android \
260  $(LOCAL_PATH)/lib/ExecutionEngine \
261  $(LOCAL_PATH)/lib/CodeGen \
262  $(LOCAL_PATH)/helper \
263  $(LOCAL_PATH)/include \
264  $(LOCAL_PATH)
265
266# definitions for LLVM
267LOCAL_CFLAGS += -DDEBUG_CODEGEN=1
268
269ifeq ($(TARGET_ARCH),arm)
270  LOCAL_CFLAGS += -DFORCE_ARM_CODEGEN=1
271else
272  ifeq ($(TARGET_ARCH),x86)
273    LOCAL_CFLAGS += -DFORCE_X86_CODEGEN=1
274  else
275    $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
276  endif
277endif
278
279ifeq ($(libbcc_USE_DISASSEMBLER),1)
280LOCAL_STATIC_LIBRARIES := \
281  libLLVMARMDisassembler \
282  libLLVMARMAsmPrinter \
283  libLLVMX86Disassembler \
284  libLLVMMCParser \
285  $(LOCAL_STATIC_LIBRARIES)
286endif
287
288include $(LLVM_ROOT_PATH)/llvm-host-build.mk
289include $(BUILD_HOST_SHARED_LIBRARY)
290
291# Build children
292# ========================================================
293include $(call all-makefiles-under,$(LOCAL_PATH))
294
295endif # TARGET_SIMULATOR != true
296