blob: 72723e8f32425109d0099e9eff42d0be74004edb [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 Chien74396852011-07-12 15:50:26 +080076LOCAL_WHOLE_STATIC_LIBRARIES += \
77 $(libbcc_WHOLE_STATIC_LIBRARIES) \
78 libbccCompilerRT
Kenny Root34678ab2011-02-07 10:56:27 -080079
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -070080ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -070081 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoddfd1ad2011-06-18 01:47:27 -070082endif
83
Logan35849002011-01-15 07:30:43 +080084ifeq ($(libbcc_USE_DISASSEMBLER),1)
Kenny Root34678ab2011-02-07 10:56:27 -080085 ifeq ($(TARGET_ARCH),arm)
86 LOCAL_STATIC_LIBRARIES += \
87 libLLVMARMDisassembler \
88 libLLVMARMAsmPrinter
89 else
90 ifeq ($(TARGET_ARCH),x86)
91 LOCAL_STATIC_LIBRARIES += \
Logan Chienbd485702011-07-18 09:16:28 +080092 libLLVMX86Disassembler
Kenny Root34678ab2011-02-07 10:56:27 -080093 else
94 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
95 endif
96 endif
Shih-wei Liaocd61af32010-04-29 00:02:57 -070097endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -070098
Logan Chien41cb7612011-07-12 16:12:03 +080099ifeq ($(TARGET_ARCH),arm)
100 LOCAL_STATIC_LIBRARIES += \
101 libLLVMARMCodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700102 libLLVMARMDesc \
Logan Chien41cb7612011-07-12 16:12:03 +0800103 libLLVMARMInfo
104else
105 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
106 LOCAL_STATIC_LIBRARIES += \
107 libLLVMX86CodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700108 libLLVMX86Desc \
Logan Chien41cb7612011-07-12 16:12:03 +0800109 libLLVMX86Info \
Logan Chienbd485702011-07-18 09:16:28 +0800110 libLLVMX86Utils \
111 libLLVMX86AsmPrinter
Logan Chien41cb7612011-07-12 16:12:03 +0800112 else
113 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
114 endif
115endif
116
117LOCAL_STATIC_LIBRARIES += \
118 libLLVMAsmPrinter \
119 libLLVMBitReader \
120 libLLVMSelectionDAG \
121 libLLVMCodeGen \
122 libLLVMLinker \
123 libLLVMJIT \
124 libLLVMScalarOpts \
125 libLLVMInstCombine \
126 libLLVMipo \
127 libLLVMipa \
128 libLLVMTransformUtils \
129 libLLVMAnalysis \
130 libLLVMTarget \
131 libLLVMMCParser \
132 libLLVMMC \
133 libLLVMCore \
134 libLLVMSupport
135
Stephen Hinesb67c9e72012-03-22 11:02:48 -0700136LOCAL_SHARED_LIBRARIES := libbcinfo libdl libcutils libutils libstlport
Logan Chien41cb7612011-07-12 16:12:03 +0800137
Ying Wang26fea102011-07-05 15:12:25 -0700138# Modules that need get installed if and only if the target libbcc.so is installed.
139LOCAL_REQUIRED_MODULES := libclcore.bc libbcc.so.sha1
Ying Wang3ae8c2a2011-01-14 10:50:53 -0800140
Shih-wei Liao6fb71c52011-10-13 11:26:25 -0700141# -Wl,--exclude-libs=ALL only applies to library archives. It would hide most of
Shih-wei Liao9d9d6bd2011-10-19 01:34:29 -0700142# the symbols in this shared library. As a result, it reduced the size of libbcc.so
143# by about 800k in 2010.
Shih-wei Liao6fb71c52011-10-13 11:26:25 -0700144# Note that libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2.
Shih-wei Liao9d9d6bd2011-10-19 01:34:29 -0700145LOCAL_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 -0800146
Logan Chien48dc01d2011-07-13 18:12:06 +0800147# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
148include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
149
Logan Chieneb567842011-07-14 19:58:42 +0800150include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700151include $(LLVM_ROOT_PATH)/llvm-device-build.mk
152include $(BUILD_SHARED_LIBRARY)
153
Logan Chien74396852011-07-12 15:50:26 +0800154
155#=====================================================================
156# Host Shared Library libbcc
157#=====================================================================
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700158include $(CLEAR_VARS)
159
160LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +0800161LOCAL_MODULE_TAGS := optional
Joseph Wen5de1adf2011-06-21 15:41:31 -0700162LOCAL_MODULE_CLASS := SHARED_LIBRARIES
163LOCAL_IS_HOST_MODULE := true
Logan Chien74396852011-07-12 15:50:26 +0800164
Logan Chienf68882e2011-07-18 19:11:39 +0800165LOCAL_CFLAGS := $(libbcc_CFLAGS)
166LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES)
167
168LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp
169
Logan Chien74396852011-07-12 15:50:26 +0800170LOCAL_WHOLE_STATIC_LIBRARIES += $(libbcc_WHOLE_STATIC_LIBRARIES)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700171
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700172ifeq ($(libbcc_USE_MCJIT),1)
Shih-wei Liaobe857c02011-06-19 11:51:17 -0700173 LOCAL_STATIC_LIBRARIES += librsloader
Shih-wei Liaoad39be42011-06-17 23:51:04 -0700174endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700175
Logan Chien41cb7612011-07-12 16:12:03 +0800176ifeq ($(libbcc_USE_DISASSEMBLER),1)
177 LOCAL_STATIC_LIBRARIES += \
178 libLLVMARMDisassembler \
179 libLLVMARMAsmPrinter \
180 libLLVMX86Disassembler \
181 libLLVMMCParser
182endif
183
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700184LOCAL_STATIC_LIBRARIES += \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700185 libcutils \
186 libutils \
Logan Chien41cb7612011-07-12 16:12:03 +0800187 libLLVMARMCodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700188 libLLVMARMDesc \
Logan Chien41cb7612011-07-12 16:12:03 +0800189 libLLVMARMInfo \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700190 libLLVMX86CodeGen \
Shih-wei Liaobb5df5c2011-07-19 05:15:11 -0700191 libLLVMX86Desc \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700192 libLLVMX86Info \
193 libLLVMX86Utils \
194 libLLVMX86AsmPrinter \
Logan Chien41cb7612011-07-12 16:12:03 +0800195 libLLVMAsmPrinter \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700196 libLLVMBitReader \
197 libLLVMSelectionDAG \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700198 libLLVMCodeGen \
199 libLLVMLinker \
200 libLLVMJIT \
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700201 libLLVMScalarOpts \
202 libLLVMInstCombine \
203 libLLVMipo \
204 libLLVMipa \
205 libLLVMTransformUtils \
Shih-wei Liao34499f42011-06-20 22:40:45 -0700206 libLLVMAnalysis \
Logan Chien41cb7612011-07-12 16:12:03 +0800207 libLLVMTarget \
208 libLLVMMCParser \
209 libLLVMMC \
210 libLLVMCore \
Shih-wei Liaoa8833142011-06-20 13:58:54 -0700211 libLLVMSupport
Shih-wei Liaoa6ced2a2011-06-18 00:50:55 -0700212
Stephen Hinesb67c9e72012-03-22 11:02:48 -0700213LOCAL_SHARED_LIBRARIES := libbcinfo
214
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700215LOCAL_LDLIBS := -ldl -lpthread
216
Logan Chien48dc01d2011-07-13 18:12:06 +0800217# Generate build stamp (Build time + Build git revision + Build Semi SHA1)
218include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk
219
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700220# definitions for LLVM
Stephen Hines40b7fba2011-03-17 19:50:20 -0700221LOCAL_CFLAGS += -DDEBUG_CODEGEN=1
Kenny Root34678ab2011-02-07 10:56:27 -0800222
223ifeq ($(TARGET_ARCH),arm)
224 LOCAL_CFLAGS += -DFORCE_ARM_CODEGEN=1
225else
226 ifeq ($(TARGET_ARCH),x86)
227 LOCAL_CFLAGS += -DFORCE_X86_CODEGEN=1
228 else
229 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
230 endif
231endif
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700232
Logan Chieneb567842011-07-14 19:58:42 +0800233include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700234include $(LLVM_ROOT_PATH)/llvm-host-build.mk
235include $(BUILD_HOST_SHARED_LIBRARY)
236
Logan Chien74396852011-07-12 15:50:26 +0800237
238#=====================================================================
239# Include Subdirectories
240#=====================================================================
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700241include $(call all-makefiles-under,$(LOCAL_PATH))