Android.mk revision 474cbd2fde362e63375f7a5099ca38b5c67835cf
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_PATH := $(call my-dir)
20
21LLVM_ROOT_PATH := external/llvm
22
23# Extract Configuration from Cache.h
24
25libbcc_GET_CONFIG = $(shell cat "$(LOCAL_PATH)/Config.h" | \
26                            grep "^\#define $1 [01]$$" | \
27                            cut -d ' ' -f 3)
28
29libbcc_USE_CACHE := $(call libbcc_GET_CONFIG,USE_CACHE)
30libbcc_USE_DISASSEMBLER := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER)
31libbcc_USE_DISASSEMBLER_FILE := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER_FILE)
32libbcc_USE_LIBBCC_SHA1SUM := $(call libbcc_GET_CONFIG,USE_LIBBCC_SHA1SUM)
33
34# Source Files
35
36libbcc_SRC_FILES := \
37  lib/bcc/bcc.cpp \
38  lib/CodeGen/CodeEmitter.cpp \
39  lib/CodeGen/CodeMemoryManager.cpp \
40  lib/bcc/Compiler.cpp \
41  lib/bcc/ContextManager.cpp \
42  lib/bcc/FileHandle.cpp \
43  lib/bcc/Runtime.c \
44  lib/bcc/Script.cpp \
45  lib/bcc/ScriptCompiled.cpp \
46  lib/bcc/SourceInfo.cpp
47
48ifeq ($(libbcc_USE_CACHE),1)
49libbcc_SRC_FILES += \
50  lib/bcc/CacheReader.cpp \
51  lib/bcc/CacheWriter.cpp \
52  lib/bcc/ScriptCached.cpp \
53  lib/bcc/Sha1Helper.cpp \
54  helper/sha1.c
55endif
56
57#
58# Shared library for target
59# ========================================================
60include $(CLEAR_VARS)
61LOCAL_PRELINK_MODULE := false
62LOCAL_MODULE := libbcc
63LOCAL_MODULE_TAGS := optional
64LOCAL_SRC_FILES := \
65  $(libbcc_SRC_FILES) \
66  runtime/lib/arm/adddf3vfp.S \
67  runtime/lib/arm/addsf3vfp.S \
68  runtime/lib/arm/divdf3vfp.S \
69  runtime/lib/arm/divsf3vfp.S \
70  runtime/lib/arm/eqdf2vfp.S \
71  runtime/lib/arm/eqsf2vfp.S \
72  runtime/lib/arm/extendsfdf2vfp.S \
73  runtime/lib/arm/fixdfsivfp.S \
74  runtime/lib/arm/fixsfsivfp.S \
75  runtime/lib/arm/fixunsdfsivfp.S \
76  runtime/lib/arm/fixunssfsivfp.S \
77  runtime/lib/arm/floatsidfvfp.S \
78  runtime/lib/arm/floatsisfvfp.S \
79  runtime/lib/arm/floatunssidfvfp.S \
80  runtime/lib/arm/floatunssisfvfp.S \
81  runtime/lib/arm/gedf2vfp.S \
82  runtime/lib/arm/gesf2vfp.S \
83  runtime/lib/arm/gtdf2vfp.S \
84  runtime/lib/arm/gtsf2vfp.S \
85  runtime/lib/arm/ledf2vfp.S \
86  runtime/lib/arm/lesf2vfp.S \
87  runtime/lib/arm/ltdf2vfp.S \
88  runtime/lib/arm/ltsf2vfp.S \
89  runtime/lib/arm/muldf3vfp.S \
90  runtime/lib/arm/mulsf3vfp.S \
91  runtime/lib/arm/nedf2vfp.S \
92  runtime/lib/arm/negdf2vfp.S \
93  runtime/lib/arm/negsf2vfp.S \
94  runtime/lib/arm/nesf2vfp.S \
95  runtime/lib/arm/subdf3vfp.S \
96  runtime/lib/arm/subsf3vfp.S \
97  runtime/lib/arm/truncdfsf2vfp.S \
98  runtime/lib/arm/unorddf2vfp.S \
99  runtime/lib/arm/unordsf2vfp.S
100
101LOCAL_STATIC_LIBRARIES := \
102  libLLVMARMCodeGen \
103  libLLVMARMInfo \
104  libLLVMBitReader \
105  libLLVMSelectionDAG \
106  libLLVMAsmPrinter \
107  libLLVMCodeGen \
108  libLLVMLinker \
109  libLLVMJIT \
110  libLLVMTarget \
111  libLLVMMC \
112  libLLVMScalarOpts \
113  libLLVMInstCombine \
114  libLLVMipo \
115  libLLVMipa \
116  libLLVMTransformUtils \
117  libLLVMCore \
118  libLLVMSupport \
119  libLLVMSystem \
120  libLLVMAnalysis
121
122LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
123
124LOCAL_C_INCLUDES := \
125  $(LOCAL_PATH)/lib/bcc \
126  $(LOCAL_PATH)/lib/CodeGen \
127  $(LOCAL_PATH)/helper \
128  $(LOCAL_PATH)/include \
129  $(LOCAL_PATH)
130
131ifeq ($(libbcc_USE_DISASSEMBLER),1)
132LOCAL_STATIC_LIBRARIES := \
133  libLLVMARMDisassembler \
134  libLLVMARMAsmPrinter \
135  libLLVMMCParser \
136  $(LOCAL_STATIC_LIBRARIES)
137endif
138
139# This makes libclcore.bc get installed if and only if the target libbcc.so is installed.
140LOCAL_REQUIRED_MODULES := libclcore.bc
141
142# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library
143# and reduces the size of libbcc.so by about 800k.
144# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
145# use below instead.
146LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMSystem:libLLVMAnalysis
147
148include $(LLVM_ROOT_PATH)/llvm-device-build.mk
149include $(BUILD_SHARED_LIBRARY)
150
151# Shared library for host
152# ========================================================
153include $(CLEAR_VARS)
154
155LOCAL_MODULE := libbcc
156LOCAL_MODULE_TAGS := optional
157LOCAL_SRC_FILES := \
158  $(libbcc_SRC_FILES) \
159  helper/logd_write.c
160
161LOCAL_STATIC_LIBRARIES := \
162  libcutils \
163  libutils \
164  libLLVMX86CodeGen \
165  libLLVMX86Info \
166  libLLVMARMCodeGen \
167  libLLVMARMInfo \
168  libLLVMBitReader \
169  libLLVMSelectionDAG \
170  libLLVMAsmPrinter \
171  libLLVMMCParser \
172  libLLVMCodeGen \
173  libLLVMLinker \
174  libLLVMJIT \
175  libLLVMTarget \
176  libLLVMMC \
177  libLLVMScalarOpts \
178  libLLVMInstCombine \
179  libLLVMipo \
180  libLLVMipa \
181  libLLVMTransformUtils \
182  libLLVMCore \
183  libLLVMSupport \
184  libLLVMSystem \
185  libLLVMAnalysis
186
187LOCAL_LDLIBS := -ldl -lpthread
188
189LOCAL_C_INCLUDES := \
190  $(LOCAL_PATH)/lib/bcc \
191  $(LOCAL_PATH)/lib/CodeGen \
192  $(LOCAL_PATH)/helper \
193  $(LOCAL_PATH)/include \
194  $(LOCAL_PATH)
195
196# definitions for LLVM
197LOCAL_CFLAGS += -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DFORCE_ARM_CODEGEN=1 -DDEBUG_CODEGEN=1
198
199ifeq ($(libbcc_USE_DISASSEMBLER),1)
200LOCAL_STATIC_LIBRARIES := \
201  libLLVMARMDisassembler \
202  libLLVMARMAsmPrinter \
203  libLLVMMCParser \
204  $(LOCAL_STATIC_LIBRARIES)
205endif
206
207include $(LLVM_ROOT_PATH)/llvm-host-build.mk
208include $(BUILD_HOST_SHARED_LIBRARY)
209
210# Build children
211# ========================================================
212include $(call all-makefiles-under,$(LOCAL_PATH))
213
214endif # TARGET_SIMULATOR != true
215