blob: 621616f061acd6c73e01215a0388ce4523be64ca [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
Carl Shapiro105a9d22010-04-13 17:53:26 -070017ifneq ($(TARGET_SIMULATOR),true)
18
Shih-wei Liao77ed6142010-04-07 12:21:42 -070019LOCAL_PATH := $(call my-dir)
Logan35849002011-01-15 07:30:43 +080020
Shih-wei Liao210a1ef2010-09-07 17:06:38 -070021LLVM_ROOT_PATH := external/llvm
Shih-wei Liao77ed6142010-04-07 12:21:42 -070022
Logan35849002011-01-15 07:30:43 +080023# Extract Configuration from Cache.h
Shih-wei Liaobc5ed672010-11-24 01:53:02 -080024
Logan35849002011-01-15 07:30:43 +080025libbcc_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
Shih-wei Liaocd61af32010-04-29 00:02:57 -070035
Logancf3e5212010-12-29 01:44:55 +080036libbcc_SRC_FILES := \
Logan45e84be2011-02-28 05:40:11 +080037 lib/ExecutionEngine/bcc.cpp \
Shih-wei Liao67d8f372011-01-16 22:48:35 -080038 lib/CodeGen/CodeEmitter.cpp \
39 lib/CodeGen/CodeMemoryManager.cpp \
Logan45e84be2011-02-28 05:40:11 +080040 lib/ExecutionEngine/Compiler.cpp \
41 lib/ExecutionEngine/ContextManager.cpp \
42 lib/ExecutionEngine/FileHandle.cpp \
43 lib/ExecutionEngine/Runtime.c \
44 lib/ExecutionEngine/RuntimeStub.c \
45 lib/ExecutionEngine/Script.cpp \
46 lib/ExecutionEngine/ScriptCompiled.cpp \
47 lib/ExecutionEngine/SourceInfo.cpp
Logan35849002011-01-15 07:30:43 +080048
49ifeq ($(libbcc_USE_CACHE),1)
50libbcc_SRC_FILES += \
Logan45e84be2011-02-28 05:40:11 +080051 lib/ExecutionEngine/CacheReader.cpp \
52 lib/ExecutionEngine/CacheWriter.cpp \
53 lib/ExecutionEngine/ScriptCached.cpp \
54 lib/ExecutionEngine/Sha1Helper.cpp \
Logancf3e5212010-12-29 01:44:55 +080055 helper/sha1.c
Logan35849002011-01-15 07:30:43 +080056endif
Logancf3e5212010-12-29 01:44:55 +080057
Shih-wei Liao52fb1e92011-01-14 06:59:51 -080058#
Shih-wei Liao77ed6142010-04-07 12:21:42 -070059# Shared library for target
60# ========================================================
61include $(CLEAR_VARS)
Iliyan Malchev97bd44d2011-03-14 14:02:14 -070062
Shih-wei Liao77ed6142010-04-07 12:21:42 -070063LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +080064LOCAL_MODULE_TAGS := optional
Logan61cb2302010-11-27 14:18:26 +080065LOCAL_SRC_FILES := \
Kenny Root34678ab2011-02-07 10:56:27 -080066 $(libbcc_SRC_FILES)
Shih-wei Liao77ed6142010-04-07 12:21:42 -070067
Kenny Root34678ab2011-02-07 10:56:27 -080068ifeq ($(TARGET_ARCH),arm)
69 LOCAL_SRC_FILES += \
70 runtime/lib/arm/adddf3vfp.S \
71 runtime/lib/arm/addsf3vfp.S \
72 runtime/lib/arm/divdf3vfp.S \
73 runtime/lib/arm/divsf3vfp.S \
74 runtime/lib/arm/eqdf2vfp.S \
75 runtime/lib/arm/eqsf2vfp.S \
76 runtime/lib/arm/extendsfdf2vfp.S \
77 runtime/lib/arm/fixdfsivfp.S \
78 runtime/lib/arm/fixsfsivfp.S \
79 runtime/lib/arm/fixunsdfsivfp.S \
80 runtime/lib/arm/fixunssfsivfp.S \
81 runtime/lib/arm/floatsidfvfp.S \
82 runtime/lib/arm/floatsisfvfp.S \
83 runtime/lib/arm/floatunssidfvfp.S \
84 runtime/lib/arm/floatunssisfvfp.S \
85 runtime/lib/arm/gedf2vfp.S \
86 runtime/lib/arm/gesf2vfp.S \
87 runtime/lib/arm/gtdf2vfp.S \
88 runtime/lib/arm/gtsf2vfp.S \
89 runtime/lib/arm/ledf2vfp.S \
90 runtime/lib/arm/lesf2vfp.S \
91 runtime/lib/arm/ltdf2vfp.S \
92 runtime/lib/arm/ltsf2vfp.S \
93 runtime/lib/arm/muldf3vfp.S \
94 runtime/lib/arm/mulsf3vfp.S \
95 runtime/lib/arm/nedf2vfp.S \
96 runtime/lib/arm/negdf2vfp.S \
97 runtime/lib/arm/negsf2vfp.S \
98 runtime/lib/arm/nesf2vfp.S \
99 runtime/lib/arm/subdf3vfp.S \
100 runtime/lib/arm/subsf3vfp.S \
101 runtime/lib/arm/truncdfsf2vfp.S \
102 runtime/lib/arm/unorddf2vfp.S \
103 runtime/lib/arm/unordsf2vfp.S
104else
105 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
106 LOCAL_SRC_FILES += \
107 runtime/lib/i386/ashldi3.S \
108 runtime/lib/i386/ashrdi3.S \
109 runtime/lib/i386/divdi3.S \
110 runtime/lib/i386/floatdidf.S \
111 runtime/lib/i386/floatdisf.S \
112 runtime/lib/i386/floatdixf.S \
113 runtime/lib/i386/floatundidf.S \
114 runtime/lib/i386/floatundisf.S \
115 runtime/lib/i386/floatundixf.S \
116 runtime/lib/i386/lshrdi3.S \
117 runtime/lib/i386/moddi3.S \
118 runtime/lib/i386/muldi3.S \
119 runtime/lib/i386/udivdi3.S \
120 runtime/lib/i386/umoddi3.S
121 else
122 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
123 endif
124endif
125
126ifeq ($(TARGET_ARCH),arm)
127 LOCAL_STATIC_LIBRARIES := \
128 libLLVMARMCodeGen \
129 libLLVMARMInfo
130else
131 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now
132 LOCAL_STATIC_LIBRARIES := \
133 libLLVMX86CodeGen \
Shih-wei Liaodbadbf42011-03-11 07:50:20 -0800134 libLLVMX86Info \
135 libLLVMX86Utils
Kenny Root34678ab2011-02-07 10:56:27 -0800136 else
137 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
138 endif
139endif
140
141LOCAL_STATIC_LIBRARIES += \
Logan61cb2302010-11-27 14:18:26 +0800142 libLLVMBitReader \
143 libLLVMSelectionDAG \
144 libLLVMAsmPrinter \
145 libLLVMCodeGen \
146 libLLVMLinker \
147 libLLVMJIT \
148 libLLVMTarget \
149 libLLVMMC \
150 libLLVMScalarOpts \
151 libLLVMInstCombine \
152 libLLVMipo \
153 libLLVMipa \
154 libLLVMTransformUtils \
155 libLLVMCore \
156 libLLVMSupport \
Logan61cb2302010-11-27 14:18:26 +0800157 libLLVMAnalysis
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700158
Shih-wei Liao7c5a5f72010-11-08 01:59:13 -0800159LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700160
Logan61cb2302010-11-27 14:18:26 +0800161LOCAL_C_INCLUDES := \
Logan45e84be2011-02-28 05:40:11 +0800162 $(LOCAL_PATH)/lib/ExecutionEngine \
Shih-wei Liao67d8f372011-01-16 22:48:35 -0800163 $(LOCAL_PATH)/lib/CodeGen \
Logan8b77a772010-12-21 09:11:01 +0800164 $(LOCAL_PATH)/helper \
Loganc4395232010-11-27 18:54:17 +0800165 $(LOCAL_PATH)/include \
166 $(LOCAL_PATH)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700167
Logan35849002011-01-15 07:30:43 +0800168ifeq ($(libbcc_USE_DISASSEMBLER),1)
Kenny Root34678ab2011-02-07 10:56:27 -0800169 ifeq ($(TARGET_ARCH),arm)
170 LOCAL_STATIC_LIBRARIES += \
171 libLLVMARMDisassembler \
172 libLLVMARMAsmPrinter
173 else
174 ifeq ($(TARGET_ARCH),x86)
175 LOCAL_STATIC_LIBRARIES += \
176 libLLVMX86Disassembler \
Logan Chienc4ea07f2011-03-09 17:27:50 +0800177 libLLVMX86AsmPrinter
Kenny Root34678ab2011-02-07 10:56:27 -0800178 else
179 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
180 endif
181 endif
182 LOCAL_STATIC_LIBRARIES += \
183 libLLVMMCParser \
184 $(LOCAL_STATIC_LIBRARIES)
Shih-wei Liaocd61af32010-04-29 00:02:57 -0700185endif
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700186
Ying Wang77643ba2011-01-18 22:24:26 -0800187# This makes libclcore.bc get installed if and only if the target libbcc.so is installed.
188LOCAL_REQUIRED_MODULES := libclcore.bc
Ying Wang3ae8c2a2011-01-14 10:50:53 -0800189
Shih-wei Liaob8b7f2d2011-01-14 04:38:39 -0800190# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library
191# and reduces the size of libbcc.so by about 800k.
192# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2,
193# use below instead.
Logan Chienc4ea07f2011-03-09 17:27:50 +0800194LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMX86Disassembler:libLLVMX86AsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMAnalysis
Shih-wei Liaob8b7f2d2011-01-14 04:38:39 -0800195
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700196include $(LLVM_ROOT_PATH)/llvm-device-build.mk
197include $(BUILD_SHARED_LIBRARY)
198
199# Shared library for host
200# ========================================================
201include $(CLEAR_VARS)
202
203LOCAL_MODULE := libbcc
Zonr Chang932648d2010-10-13 22:23:56 +0800204LOCAL_MODULE_TAGS := optional
Logan61cb2302010-11-27 14:18:26 +0800205LOCAL_SRC_FILES := \
Logancf3e5212010-12-29 01:44:55 +0800206 $(libbcc_SRC_FILES) \
Logan2f789f32011-02-28 05:21:17 +0800207 helper/DebugHelper.c
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700208
Logan61cb2302010-11-27 14:18:26 +0800209LOCAL_STATIC_LIBRARIES := \
210 libcutils \
Jeff Brown937a0bc2011-01-26 23:20:14 -0800211 libutils \
Logan61cb2302010-11-27 14:18:26 +0800212 libLLVMX86CodeGen \
213 libLLVMX86Info \
Shih-wei Liao6228f9d2011-03-11 10:09:48 -0800214 libLLVMX86Utils \
Shih-wei Liao9b96b182011-03-11 11:15:17 -0800215 libLLVMX86AsmPrinter \
Logan61cb2302010-11-27 14:18:26 +0800216 libLLVMARMCodeGen \
217 libLLVMARMInfo \
218 libLLVMBitReader \
219 libLLVMSelectionDAG \
220 libLLVMAsmPrinter \
221 libLLVMMCParser \
222 libLLVMCodeGen \
223 libLLVMLinker \
224 libLLVMJIT \
225 libLLVMTarget \
226 libLLVMMC \
227 libLLVMScalarOpts \
228 libLLVMInstCombine \
229 libLLVMipo \
230 libLLVMipa \
231 libLLVMTransformUtils \
232 libLLVMCore \
233 libLLVMSupport \
Logan61cb2302010-11-27 14:18:26 +0800234 libLLVMAnalysis
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700235
236LOCAL_LDLIBS := -ldl -lpthread
237
Logan61cb2302010-11-27 14:18:26 +0800238LOCAL_C_INCLUDES := \
Logan45e84be2011-02-28 05:40:11 +0800239 $(LOCAL_PATH)/lib/ExecutionEngine \
Shih-wei Liao67d8f372011-01-16 22:48:35 -0800240 $(LOCAL_PATH)/lib/CodeGen \
Logan8b77a772010-12-21 09:11:01 +0800241 $(LOCAL_PATH)/helper \
Loganc4395232010-11-27 18:54:17 +0800242 $(LOCAL_PATH)/include \
243 $(LOCAL_PATH)
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700244
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700245# definitions for LLVM
Kenny Root34678ab2011-02-07 10:56:27 -0800246LOCAL_CFLAGS += -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DDEBUG_CODEGEN=1
247
248ifeq ($(TARGET_ARCH),arm)
249 LOCAL_CFLAGS += -DFORCE_ARM_CODEGEN=1
250else
251 ifeq ($(TARGET_ARCH),x86)
252 LOCAL_CFLAGS += -DFORCE_X86_CODEGEN=1
253 else
254 $(error Unsupported TARGET_ARCH $(TARGET_ARCH))
255 endif
256endif
Shih-wei Liaoe64c2872010-10-25 13:44:53 -0700257
Logan35849002011-01-15 07:30:43 +0800258ifeq ($(libbcc_USE_DISASSEMBLER),1)
Logan61cb2302010-11-27 14:18:26 +0800259LOCAL_STATIC_LIBRARIES := \
260 libLLVMARMDisassembler \
261 libLLVMARMAsmPrinter \
Kenny Root34678ab2011-02-07 10:56:27 -0800262 libLLVMX86Disassembler \
Logan61cb2302010-11-27 14:18:26 +0800263 libLLVMMCParser \
264 $(LOCAL_STATIC_LIBRARIES)
Shih-wei Liaocd61af32010-04-29 00:02:57 -0700265endif
266
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700267include $(LLVM_ROOT_PATH)/llvm-host-build.mk
268include $(BUILD_HOST_SHARED_LIBRARY)
269
270# Build children
271# ========================================================
Shih-wei Liao77ed6142010-04-07 12:21:42 -0700272include $(call all-makefiles-under,$(LOCAL_PATH))
Carl Shapiro105a9d22010-04-13 17:53:26 -0700273
Shih-wei Liao800e9c22010-04-18 16:08:16 -0700274endif # TARGET_SIMULATOR != true