blob: b02b51b97a4eb5a561899c650c23934e4118e96f [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
Shih-wei Liao77ed6142010-04-07 12:21:42 -070017LOCAL_PATH := $(call my-dir)
Logan Chien74396852011-07-12 15:50:26 +080018include $(LOCAL_PATH)/libbcc-config.mk
Logan35849002011-01-15 07:30:43 +080019
Shih-wei Liao77ed6142010-04-07 12:21:42 -070020
Logan Chien74396852011-07-12 15:50:26 +080021#=====================================================================
22# Whole Static Library to Be Linked In
23#=====================================================================
Logan35849002011-01-15 07:30:43 +080024
Logan Chienda5e0c32011-06-13 03:47:21 +080025ifeq ($(libbcc_USE_OLD_JIT),1)
Logan Chien74396852011-07-12 15:50:26 +080026libbcc_WHOLE_STATIC_LIBRARIES += libbccCodeGen
Logan Chienda5e0c32011-06-13 03:47:21 +080027endif
28
Logan Chien74396852011-07-12 15:50:26 +080029ifeq ($(libbcc_USE_DISASSEMBLER),1)
30libbcc_WHOLE_STATIC_LIBRARIES += libbccDisassembler
Logan35849002011-01-15 07:30:43 +080031endif
Logancf3e5212010-12-29 01:44:55 +080032
Logan Chien74396852011-07-12 15:50:26 +080033libbcc_WHOLE_STATIC_LIBRARIES += \
34 libbccExecutionEngine \
35 libbccHelper
Logan Chien8d3b5e12011-07-12 16:19:21 +080036
Logan Chien74396852011-07-12 15:50:26 +080037
38#=====================================================================
Joseph Wen2ca6e572011-06-24 14:12:23 -070039# Calculate SHA1 checksum for libbcc.so and libRS.so
Logan Chien74396852011-07-12 15:50:26 +080040#=====================================================================
41
Joseph Wen2ca6e572011-06-24 14:12:23 -070042include $(CLEAR_VARS)
Logan Chien74396852011-07-12 15:50:26 +080043
Ying Wang26fea102011-07-05 15:12:25 -070044LOCAL_MODULE := libbcc.so.sha1
Joseph Wen2ca6e572011-06-24 14:12:23 -070045LOCAL_MODULE_TAGS := optional
46LOCAL_MODULE_CLASS := SHARED_LIBRARIES
47
Ying Wang26fea102011-07-05 15:12:25 -070048include $(BUILD_SYSTEM)/base_rules.mk
Logan Chien74396852011-07-12 15:50:26 +080049libbcc_SHA1_SRCS := \
50 $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libbcc.so \
51 $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRS.so
Ying Wang0b486952011-07-01 13:37:01 -070052
Logan Chien6888aae2011-07-12 16:47:10 +080053libbcc_GEN_SHA1_STAMP := $(LOCAL_PATH)/tools/gen-sha1-stamp.py
54
Ying Wang26fea102011-07-05 15:12:25 -070055$(LOCAL_BUILT_MODULE): PRIVATE_SHA1_SRCS := $(libbcc_SHA1_SRCS)
Logan Chien6888aae2011-07-12 16:47:10 +080056$(LOCAL_BUILT_MODULE): $(libbcc_SHA1_SRCS) $(libbcc_GEN_SHA1_STAMP)
Ying Wang0b486952011-07-01 13:37:01 -070057 $(hide) mkdir -p $(dir $@) && \
Logan Chien74396852011-07-12 15:50:26 +080058 $(libbcc_GEN_SHA1_STAMP) $@ $(PRIVATE_SHA1_SRCS)
Joseph Wen2ca6e572011-06-24 14:12:23 -070059
Logan Chien74396852011-07-12 15:50:26 +080060
61#=====================================================================
62# Device Shared Library libbcc
63#=====================================================================
64
Shih-wei Liao77ed6142010-04-07 12:21:42 -070065include $(CLEAR_VARS)
Iliyan Malchev97bd44d2011-03-14 14:02:14 -070066
Shih-wei Liao77ed6142010-04-07 12:21:42 -070067LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +080068LOCAL_MODULE_TAGS := optional
Joseph Wen5de1adf2011-06-21 15:41:31 -070069LOCAL_MODULE_CLASS := SHARED_LIBRARIES
Shih-wei Liao77ed6142010-04-07 12:21:42 -070070
Logan Chienf68882e2011-07-18 19:11:39 +080071LOCAL_CFLAGS := $(libbcc_CFLAGS)
72LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
73
74LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp
75
Logan Chien21392f02011-11-26 20:32:01 +080076LOCAL_WHOLE_STATIC_LIBRARIES := $(libbcc_WHOLE_STATIC_LIBRARIES)
77
78ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm x86))
79LOCAL_WHOLE_STATIC_LIBRARIES += libbccCompilerRT
80endif
Kenny Root34678ab2011-02-07 10:56:27 -080081
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -070082ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -070083 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -070084endif
85
Logan35849002011-01-15 07:30:43 +080086ifeq ($(libbcc_USE_DISASSEMBLER),1)
Kenny Root34678ab2011-02-07 10:56:27 -080087 ifeq ($(TARGET_ARCH),arm)
88 LOCAL_STATIC_LIBRARIES += \
89 libLLVMARMDisassembler \
90 libLLVMARMAsmPrinter
91 else
Logan Chien21392f02011-11-26 20:32:01 +080092 ifeq ($(TARGET_ARCH),mips)
93 $(error "Disassembler is not available for MIPS architecture")
Kenny Root34678ab2011-02-07 10:56:27 -080094 else
Logan Chien21392f02011-11-26 20:32:01 +080095 ifeq ($(TARGET_ARCH),x86)
96 LOCAL_STATIC_LIBRARIES += \
97 libLLVMX86Disassembler
98 else
99 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
100 endif
Kenny Root34678ab2011-02-07 10:56:27 -0800101 endif
102 endif
Shih-wei Liaocd61af32010-04-29 00:02:57 -0700103endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700104
Logan Chien41cb7612011-07-12 16:12:03 +0800105ifeq ($(TARGET_ARCH),arm)
106 LOCAL_STATIC_LIBRARIES += \
107 libLLVMARMCodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700108 libLLVMARMDesc \
Logan Chien41cb7612011-07-12 16:12:03 +0800109 libLLVMARMInfo
110else
Logan Chien21392f02011-11-26 20:32:01 +0800111 ifeq ($(TARGET_ARCH), mips)
Logan Chien41cb7612011-07-12 16:12:03 +0800112 LOCAL_STATIC_LIBRARIES += \
Logan Chien21392f02011-11-26 20:32:01 +0800113 libLLVMMipsCodeGen \
114 libLLVMMipsAsmPrinter \
115 libLLVMMipsDesc \
116 libLLVMMipsInfo
Logan Chien41cb7612011-07-12 16:12:03 +0800117 else
Logan Chien21392f02011-11-26 20:32:01 +0800118 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
119 LOCAL_STATIC_LIBRARIES += \
120 libLLVMX86CodeGen \
121 libLLVMX86Desc \
122 libLLVMX86Info \
123 libLLVMX86Utils \
124 libLLVMX86AsmPrinter
125 else
126 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
127 endif
Logan Chien41cb7612011-07-12 16:12:03 +0800128 endif
129endif
130
131LOCAL_STATIC_LIBRARIES += \
132 libLLVMAsmPrinter \
133 libLLVMBitReader \
134 libLLVMSelectionDAG \
135 libLLVMCodeGen \
136 libLLVMLinker \
137 libLLVMJIT \
138 libLLVMScalarOpts \
139 libLLVMInstCombine \
140 libLLVMipo \
141 libLLVMipa \
142 libLLVMTransformUtils \
143 libLLVMAnalysis \
144 libLLVMTarget \
145 libLLVMMCParser \
146 libLLVMMC \
147 libLLVMCore \
148 libLLVMSupport
149
150LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
151
Logan Chien21392f02011-11-26 20:32:01 +0800152# Modules that need get installed if and only if the target libbcc.so is
153# installed.
Ying Wang26fea102011-07-05 15:12:25 -0700154LOCAL_REQUIRED_MODULES := libclcore.bc libbcc.so.sha1
Ying Wang3ae8c2a2011-01-14 10:50:53 -0800155
Logan Chien21392f02011-11-26 20:32:01 +0800156# Link-Time Optimization on libbcc.so
157#
158# -Wl,--exclude-libs=ALL only applies to library archives. It would hide most
159# of the symbols in this shared library. As a result, it reduced the size of
160# libbcc.so by about 800k in 2010.
161#
162# Note that libLLVMBitReader:libLLVMCore:libLLVMSupport are used by
163# pixelflinger2.
164
Shih-wei Liao9d9d6bd2011-10-19 01:34:29 -0700165LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMDesc:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
Shih-wei Liaob8b7f2d2011-01-14 04:38:39 -0800166
Logan Chien48dc01d2011-07-13 18:12:06 +0800167# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
168include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
169
Logan Chieneb567842011-07-14 19:58:42 +0800170include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700171include $(LLVM_ROOT_PATH)/llvm-device-build.mk
172include $(BUILD_SHARED_LIBRARY)
173
Logan Chien74396852011-07-12 15:50:26 +0800174
175#=====================================================================
176# Host Shared Library libbcc
177#=====================================================================
Logan Chien21392f02011-11-26 20:32:01 +0800178
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700179include $(CLEAR_VARS)
180
181LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +0800182LOCAL_MODULE_TAGS := optional
Joseph Wen5de1adf2011-06-21 15:41:31 -0700183LOCAL_MODULE_CLASS := SHARED_LIBRARIES
184LOCAL_IS_HOST_MODULE := true
Logan Chien74396852011-07-12 15:50:26 +0800185
Logan Chienf68882e2011-07-18 19:11:39 +0800186LOCAL_CFLAGS := $(libbcc_CFLAGS)
Andrew Hsieh1704c742011-11-20 20:43:36 -0800187LOCAL_CFLAGS += -D__HOST__
Logan Chienf68882e2011-07-18 19:11:39 +0800188LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
189
190LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp
191
Logan Chien74396852011-07-12 15:50:26 +0800192LOCAL_WHOLE_STATIC_LIBRARIES += $(libbcc_WHOLE_STATIC_LIBRARIES)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700193
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700194ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -0700195 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700196endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700197
Logan Chien41cb7612011-07-12 16:12:03 +0800198ifeq ($(libbcc_USE_DISASSEMBLER),1)
199 LOCAL_STATIC_LIBRARIES += \
200 libLLVMARMDisassembler \
201 libLLVMARMAsmPrinter \
202 libLLVMX86Disassembler \
203 libLLVMMCParser
204endif
205
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700206LOCAL_STATIC_LIBRARIES += \
Logan Chien41cb7612011-07-12 16:12:03 +0800207 libLLVMARMCodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700208 libLLVMARMDesc \
Logan Chien21392f02011-11-26 20:32:01 +0800209 libLLVMARMInfo
210
211LOCAL_STATIC_LIBRARIES += \
212 libLLVMMipsCodeGen \
213 libLLVMMipsAsmPrinter \
214 libLLVMMipsDesc \
215 libLLVMMipsInfo
216
217LOCAL_STATIC_LIBRARIES += \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700218 libLLVMX86CodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700219 libLLVMX86Desc \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700220 libLLVMX86AsmPrinter \
Logan Chien21392f02011-11-26 20:32:01 +0800221 libLLVMX86Info \
222 libLLVMX86Utils
223
224LOCAL_STATIC_LIBRARIES += \
Logan Chien41cb7612011-07-12 16:12:03 +0800225 libLLVMAsmPrinter \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700226 libLLVMBitReader \
227 libLLVMSelectionDAG \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700228 libLLVMCodeGen \
229 libLLVMLinker \
230 libLLVMJIT \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700231 libLLVMScalarOpts \
232 libLLVMInstCombine \
233 libLLVMipo \
234 libLLVMipa \
235 libLLVMTransformUtils \
Shih-wei Liao34499f42011-06-20 22:40:45 -0700236 libLLVMAnalysis \
Logan Chien41cb7612011-07-12 16:12:03 +0800237 libLLVMTarget \
238 libLLVMMCParser \
239 libLLVMMC \
240 libLLVMCore \
Shih-wei Liaoa8833142011-06-20 13:58:54 -0700241 libLLVMSupport
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700242
Logan Chien21392f02011-11-26 20:32:01 +0800243LOCAL_STATIC_LIBRARIES += \
244 libcutils \
245 libutils
246
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700247LOCAL_LDLIBS := -ldl -lpthread
248
Logan Chien48dc01d2011-07-13 18:12:06 +0800249# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
250include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
251
Logan Chieneb567842011-07-14 19:58:42 +0800252include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700253include $(LLVM_ROOT_PATH)/llvm-host-build.mk
254include $(BUILD_HOST_SHARED_LIBRARY)
255
Logan Chien74396852011-07-12 15:50:26 +0800256
257#=====================================================================
258# Include Subdirectories
259#=====================================================================
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700260include $(call all-makefiles-under,$(LOCAL_PATH))