Android.mk revision 77643ba4fb6e93037940294a03149e68c353b4fa
1227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#
2227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# Copyright (C) 2010 The Android Open Source Project
3227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#
4227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# Licensed under the Apache License, Version 2.0 (the "License");
5227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# you may not use this file except in compliance with the License.
6227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# You may obtain a copy of the License at
7227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#
8227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#      http://www.apache.org/licenses/LICENSE-2.0
9227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#
10227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# Unless required by applicable law or agreed to in writing, software
11227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# distributed under the License is distributed on an "AS IS" BASIS,
12227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# See the License for the specific language governing permissions and
14227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# limitations under the License.
15227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks#
16227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
17227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksifneq ($(TARGET_SIMULATOR),true)
18227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
19227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksLOCAL_PATH := $(call my-dir)
20227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
21227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksLLVM_ROOT_PATH := external/llvm
22227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
23227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks# Extract Configuration from Cache.h
24227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
25227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslibbcc_GET_CONFIG = $(shell cat "$(LOCAL_PATH)/Config.h" | \
26227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks                            grep "^\#define $1 [01]$$" | \
27227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks                            cut -d ' ' -f 3)
28227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
29227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslibbcc_USE_CACHE := $(call libbcc_GET_CONFIG,USE_CACHE)
30227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslibbcc_USE_DISASSEMBLER := $(call libbcc_GET_CONFIG,USE_DISASSEMBLER)
31227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslibbcc_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
47ifeq ($(libbcc_USE_CACHE),1)
48libbcc_SRC_FILES += \
49  lib/bcc/CacheReader.cpp \
50  lib/bcc/CacheWriter.cpp \
51  lib/bcc/ScriptCached.cpp \
52  lib/bcc/Sha1Helper.cpp \
53  helper/sha1.c
54endif
55
56#
57# Shared library for target
58# ========================================================
59include $(CLEAR_VARS)
60LOCAL_PRELINK_MODULE := false
61LOCAL_MODULE := libbcc
62LOCAL_MODULE_TAGS := optional
63LOCAL_SRC_FILES := \
64  $(libbcc_SRC_FILES) \
65  runtime/lib/arm/adddf3vfp.S \
66  runtime/lib/arm/addsf3vfp.S \
67  runtime/lib/arm/divdf3vfp.S \
68  runtime/lib/arm/divsf3vfp.S \
69  runtime/lib/arm/eqdf2vfp.S \
70  runtime/lib/arm/eqsf2vfp.S \
71  runtime/lib/arm/extendsfdf2vfp.S \
72  runtime/lib/arm/fixdfsivfp.S \
73  runtime/lib/arm/fixsfsivfp.S \
74  runtime/lib/arm/fixunsdfsivfp.S \
75  runtime/lib/arm/fixunssfsivfp.S \
76  runtime/lib/arm/floatsidfvfp.S \
77  runtime/lib/arm/floatsisfvfp.S \
78  runtime/lib/arm/floatunssidfvfp.S \
79  runtime/lib/arm/floatunssisfvfp.S \
80  runtime/lib/arm/gedf2vfp.S \
81  runtime/lib/arm/gesf2vfp.S \
82  runtime/lib/arm/gtdf2vfp.S \
83  runtime/lib/arm/gtsf2vfp.S \
84  runtime/lib/arm/ledf2vfp.S \
85  runtime/lib/arm/lesf2vfp.S \
86  runtime/lib/arm/ltdf2vfp.S \
87  runtime/lib/arm/ltsf2vfp.S \
88  runtime/lib/arm/muldf3vfp.S \
89  runtime/lib/arm/mulsf3vfp.S \
90  runtime/lib/arm/nedf2vfp.S \
91  runtime/lib/arm/negdf2vfp.S \
92  runtime/lib/arm/negsf2vfp.S \
93  runtime/lib/arm/nesf2vfp.S \
94  runtime/lib/arm/subdf3vfp.S \
95  runtime/lib/arm/subsf3vfp.S \
96  runtime/lib/arm/truncdfsf2vfp.S \
97  runtime/lib/arm/unorddf2vfp.S \
98  runtime/lib/arm/unordsf2vfp.S
99
100LOCAL_STATIC_LIBRARIES := \
101  libLLVMARMCodeGen \
102  libLLVMARMInfo \
103  libLLVMBitReader \
104  libLLVMSelectionDAG \
105  libLLVMAsmPrinter \
106  libLLVMCodeGen \
107  libLLVMLinker \
108  libLLVMJIT \
109  libLLVMTarget \
110  libLLVMMC \
111  libLLVMScalarOpts \
112  libLLVMInstCombine \
113  libLLVMipo \
114  libLLVMipa \
115  libLLVMTransformUtils \
116  libLLVMCore \
117  libLLVMSupport \
118  libLLVMSystem \
119  libLLVMAnalysis
120
121LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
122
123LOCAL_C_INCLUDES := \
124  $(LOCAL_PATH)/lib/bcc \
125  $(LOCAL_PATH)/lib/CodeGen \
126  $(LOCAL_PATH)/helper \
127  $(LOCAL_PATH)/include \
128  $(LOCAL_PATH)
129
130ifeq ($(libbcc_USE_DISASSEMBLER),1)
131LOCAL_STATIC_LIBRARIES := \
132  libLLVMARMDisassembler \
133  libLLVMARMAsmPrinter \
134  libLLVMMCParser \
135  $(LOCAL_STATIC_LIBRARIES)
136endif
137
138# This makes libclcore.bc get installed if and only if the target libbcc.so is installed.
139LOCAL_REQUIRED_MODULES := libclcore.bc
140
141# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library
142# and reduces the size of libbcc.so by about 800k.
143# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
144# use below instead.
145LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMSystem:libLLVMAnalysis
146
147include $(LLVM_ROOT_PATH)/llvm-device-build.mk
148include $(BUILD_SHARED_LIBRARY)
149
150# Shared library for host
151# ========================================================
152include $(CLEAR_VARS)
153
154LOCAL_MODULE := libbcc
155LOCAL_MODULE_TAGS := optional
156LOCAL_SRC_FILES := \
157  $(libbcc_SRC_FILES) \
158  helper/logd_write.c
159
160LOCAL_STATIC_LIBRARIES := \
161  libcutils \
162  libLLVMX86CodeGen \
163  libLLVMX86Info \
164  libLLVMARMCodeGen \
165  libLLVMARMInfo \
166  libLLVMBitReader \
167  libLLVMSelectionDAG \
168  libLLVMAsmPrinter \
169  libLLVMMCParser \
170  libLLVMCodeGen \
171  libLLVMLinker \
172  libLLVMJIT \
173  libLLVMTarget \
174  libLLVMMC \
175  libLLVMScalarOpts \
176  libLLVMInstCombine \
177  libLLVMipo \
178  libLLVMipa \
179  libLLVMTransformUtils \
180  libLLVMCore \
181  libLLVMSupport \
182  libLLVMSystem \
183  libLLVMAnalysis
184
185LOCAL_LDLIBS := -ldl -lpthread
186
187LOCAL_C_INCLUDES := \
188  $(LOCAL_PATH)/lib/bcc \
189  $(LOCAL_PATH)/lib/CodeGen \
190  $(LOCAL_PATH)/helper \
191  $(LOCAL_PATH)/include \
192  $(LOCAL_PATH)
193
194# definitions for LLVM
195LOCAL_CFLAGS += -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DFORCE_ARM_CODEGEN=1 -DDEBUG_CODEGEN=1
196
197ifeq ($(libbcc_USE_DISASSEMBLER),1)
198LOCAL_STATIC_LIBRARIES := \
199  libLLVMARMDisassembler \
200  libLLVMARMAsmPrinter \
201  libLLVMMCParser \
202  $(LOCAL_STATIC_LIBRARIES)
203endif
204
205include $(LLVM_ROOT_PATH)/llvm-host-build.mk
206include $(BUILD_HOST_SHARED_LIBRARY)
207
208# Build children
209# ========================================================
210include $(call all-makefiles-under,$(LOCAL_PATH))
211
212endif # TARGET_SIMULATOR != true
213