Android.mk revision c989dcec0385c20a9174a8ed536e0d304c29a2e2
1#
2# Copyright (C) 2010-2012 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
17LOCAL_PATH := $(call my-dir)
18include $(LOCAL_PATH)/libbcc-config.mk
19
20
21#=====================================================================
22# Whole Static Library to Be Linked In
23#=====================================================================
24
25ifeq ($(libbcc_USE_DISASSEMBLER),1)
26libbcc_WHOLE_STATIC_LIBRARIES += libbccDisassembler
27endif
28
29libbcc_WHOLE_STATIC_LIBRARIES += \
30  libbccExecutionEngine \
31  libbccHelper \
32  libbccTransforms
33
34
35#=====================================================================
36# Calculate SHA1 checksum for libbcc.so and libRS.so
37#=====================================================================
38
39include $(CLEAR_VARS)
40
41LOCAL_MODULE := libbcc.so.sha1
42LOCAL_MODULE_TAGS := optional
43LOCAL_MODULE_CLASS := SHARED_LIBRARIES
44
45include $(BUILD_SYSTEM)/base_rules.mk
46libbcc_SHA1_SRCS := \
47  $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libbcc.so \
48  $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRS.so
49
50libbcc_GEN_SHA1_STAMP := $(LOCAL_PATH)/tools/build/gen-sha1-stamp.py
51
52$(LOCAL_BUILT_MODULE): PRIVATE_SHA1_SRCS := $(libbcc_SHA1_SRCS)
53$(LOCAL_BUILT_MODULE): $(libbcc_SHA1_SRCS) $(libbcc_GEN_SHA1_STAMP)
54	$(hide) mkdir -p $(dir $@) && \
55	        $(libbcc_GEN_SHA1_STAMP) $@ $(PRIVATE_SHA1_SRCS)
56
57
58#=====================================================================
59# Device Shared Library libbcc
60#=====================================================================
61
62include $(CLEAR_VARS)
63
64LOCAL_MODULE := libbcc
65LOCAL_MODULE_TAGS := optional
66LOCAL_MODULE_CLASS := SHARED_LIBRARIES
67
68LOCAL_CFLAGS := $(libbcc_CFLAGS)
69LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
70
71LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp
72
73LOCAL_WHOLE_STATIC_LIBRARIES := $(libbcc_WHOLE_STATIC_LIBRARIES)
74
75ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm x86))
76LOCAL_WHOLE_STATIC_LIBRARIES += libbccCompilerRT
77endif
78
79LOCAL_STATIC_LIBRARIES += librsloader
80
81ifeq ($(libbcc_USE_DISASSEMBLER),1)
82  ifeq ($(TARGET_ARCH),arm)
83    LOCAL_STATIC_LIBRARIES += \
84      libLLVMARMDisassembler \
85      libLLVMARMAsmPrinter
86  else
87    ifeq ($(TARGET_ARCH),mips)
88	  $(error "Disassembler is not available for MIPS architecture")
89    else
90      ifeq ($(TARGET_ARCH),x86)
91        LOCAL_STATIC_LIBRARIES += \
92          libLLVMX86Disassembler
93      else
94        $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
95      endif
96    endif
97  endif
98endif
99
100ifeq ($(TARGET_ARCH),arm)
101  LOCAL_STATIC_LIBRARIES += \
102    libLLVMARMCodeGen \
103    libLLVMARMDesc \
104    libLLVMARMInfo
105else
106  ifeq ($(TARGET_ARCH), mips)
107    LOCAL_STATIC_LIBRARIES += \
108      libLLVMMipsCodeGen \
109      libLLVMMipsAsmPrinter \
110      libLLVMMipsDesc \
111      libLLVMMipsInfo
112  else
113    ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
114      LOCAL_STATIC_LIBRARIES += \
115        libLLVMX86CodeGen \
116        libLLVMX86Desc \
117        libLLVMX86Info \
118        libLLVMX86Utils \
119        libLLVMX86AsmPrinter
120    else
121      $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
122    endif
123  endif
124endif
125
126LOCAL_STATIC_LIBRARIES += \
127  libLLVMAsmPrinter \
128  libLLVMBitReader \
129  libLLVMSelectionDAG \
130  libLLVMCodeGen \
131  libLLVMLinker \
132  libLLVMScalarOpts \
133  libLLVMInstCombine \
134  libLLVMipo \
135  libLLVMipa \
136  libLLVMTransformUtils \
137  libLLVMAnalysis \
138  libLLVMTarget \
139  libLLVMMCParser \
140  libLLVMMC \
141  libLLVMCore \
142  libLLVMSupport
143
144LOCAL_SHARED_LIBRARIES := libbcinfo libdl libutils libcutils libstlport
145
146# Modules that need get installed if and only if the target libbcc.so is
147# installed.
148LOCAL_REQUIRED_MODULES := libclcore.bc libbcc.so.sha1
149
150# Link-Time Optimization on libbcc.so
151#
152# -Wl,--exclude-libs=ALL only applies to library archives. It would hide most
153# of the symbols in this shared library. As a result, it reduced the size of
154# libbcc.so by about 800k in 2010.
155#
156# Note that libLLVMBitReader:libLLVMCore:libLLVMSupport are used by
157# pixelflinger2.
158
159LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMDesc:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
160
161# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
162include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
163
164include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
165include $(LLVM_ROOT_PATH)/llvm-device-build.mk
166include $(BUILD_SHARED_LIBRARY)
167
168
169#=====================================================================
170# Host Shared Library libbcc
171#=====================================================================
172
173include $(CLEAR_VARS)
174
175LOCAL_MODULE := libbcc
176LOCAL_MODULE_TAGS := optional
177LOCAL_MODULE_CLASS := SHARED_LIBRARIES
178LOCAL_IS_HOST_MODULE := true
179
180LOCAL_CFLAGS := $(libbcc_CFLAGS)
181LOCAL_CFLAGS += -D__HOST__
182LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
183
184LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp
185
186LOCAL_WHOLE_STATIC_LIBRARIES += $(libbcc_WHOLE_STATIC_LIBRARIES)
187
188LOCAL_STATIC_LIBRARIES += librsloader
189
190ifeq ($(libbcc_USE_DISASSEMBLER),1)
191  LOCAL_STATIC_LIBRARIES += \
192    libLLVMARMDisassembler \
193    libLLVMARMAsmPrinter \
194    libLLVMX86Disassembler \
195    libLLVMMCParser
196endif
197
198LOCAL_STATIC_LIBRARIES += \
199  libLLVMARMCodeGen \
200  libLLVMARMDesc \
201  libLLVMARMInfo
202
203LOCAL_STATIC_LIBRARIES += \
204  libLLVMMipsCodeGen \
205  libLLVMMipsAsmPrinter \
206  libLLVMMipsDesc \
207  libLLVMMipsInfo
208
209LOCAL_STATIC_LIBRARIES += \
210  libLLVMX86CodeGen \
211  libLLVMX86Desc \
212  libLLVMX86AsmPrinter \
213  libLLVMX86Info \
214  libLLVMX86Utils
215
216LOCAL_STATIC_LIBRARIES += \
217  libLLVMAsmPrinter \
218  libLLVMBitReader \
219  libLLVMSelectionDAG \
220  libLLVMCodeGen \
221  libLLVMLinker \
222  libLLVMScalarOpts \
223  libLLVMInstCombine \
224  libLLVMipo \
225  libLLVMipa \
226  libLLVMTransformUtils \
227  libLLVMAnalysis \
228  libLLVMTarget \
229  libLLVMMCParser \
230  libLLVMMC \
231  libLLVMCore \
232  libLLVMSupport
233
234LOCAL_STATIC_LIBRARIES += \
235  libutils \
236  libcutils
237
238LOCAL_SHARED_LIBRARIES := libbcinfo
239
240LOCAL_LDLIBS := -ldl -lpthread
241
242# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
243include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
244
245include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
246include $(LLVM_ROOT_PATH)/llvm-host-build.mk
247include $(BUILD_HOST_SHARED_LIBRARY)
248
249
250#=====================================================================
251# Include Subdirectories
252#=====================================================================
253include $(call all-makefiles-under,$(LOCAL_PATH))
254