1# 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 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_OLD_JIT),1) 26libbcc_WHOLE_STATIC_LIBRARIES += libbccCodeGen 27endif 28 29ifeq ($(libbcc_USE_DISASSEMBLER),1) 30libbcc_WHOLE_STATIC_LIBRARIES += libbccDisassembler 31endif 32 33libbcc_WHOLE_STATIC_LIBRARIES += \ 34 libbccExecutionEngine \ 35 libbccHelper 36 37 38#===================================================================== 39# Calculate SHA1 checksum for libbcc.so and libRS.so 40#===================================================================== 41 42include $(CLEAR_VARS) 43 44LOCAL_MODULE := libbcc.so.sha1 45LOCAL_MODULE_TAGS := optional 46LOCAL_MODULE_CLASS := SHARED_LIBRARIES 47 48include $(BUILD_SYSTEM)/base_rules.mk 49libbcc_SHA1_SRCS := \ 50 $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libbcc.so \ 51 $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRS.so 52 53libbcc_GEN_SHA1_STAMP := $(LOCAL_PATH)/tools/gen-sha1-stamp.py 54 55$(LOCAL_BUILT_MODULE): PRIVATE_SHA1_SRCS := $(libbcc_SHA1_SRCS) 56$(LOCAL_BUILT_MODULE): $(libbcc_SHA1_SRCS) $(libbcc_GEN_SHA1_STAMP) 57 $(hide) mkdir -p $(dir $@) && \ 58 $(libbcc_GEN_SHA1_STAMP) $@ $(PRIVATE_SHA1_SRCS) 59 60 61#===================================================================== 62# Device Shared Library libbcc 63#===================================================================== 64 65include $(CLEAR_VARS) 66 67LOCAL_MODULE := libbcc 68LOCAL_MODULE_TAGS := optional 69LOCAL_MODULE_CLASS := SHARED_LIBRARIES 70 71LOCAL_CFLAGS := $(libbcc_CFLAGS) 72LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES) 73 74LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp 75 76LOCAL_WHOLE_STATIC_LIBRARIES += \ 77 $(libbcc_WHOLE_STATIC_LIBRARIES) \ 78 libbccCompilerRT 79 80ifeq ($(libbcc_USE_MCJIT),1) 81 LOCAL_STATIC_LIBRARIES += librsloader 82endif 83 84ifeq ($(libbcc_USE_DISASSEMBLER),1) 85 ifeq ($(TARGET_ARCH),arm) 86 LOCAL_STATIC_LIBRARIES += \ 87 libLLVMARMDisassembler \ 88 libLLVMARMAsmPrinter 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 97endif 98 99ifeq ($(TARGET_ARCH),arm) 100 LOCAL_STATIC_LIBRARIES += \ 101 libLLVMARMCodeGen \ 102 libLLVMARMDesc \ 103 libLLVMARMInfo 104else 105 ifeq ($(TARGET_ARCH),x86) # We don't support x86-64 right now 106 LOCAL_STATIC_LIBRARIES += \ 107 libLLVMX86CodeGen \ 108 libLLVMX86Desc \ 109 libLLVMX86Info \ 110 libLLVMX86Utils \ 111 libLLVMX86AsmPrinter 112 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 136LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport 137 138# Modules that need get installed if and only if the target libbcc.so is installed. 139LOCAL_REQUIRED_MODULES := libclcore.bc libbcc.so.sha1 140 141# -Wl,--exclude-libs=ALL only applies to library archives. It would hide most of 142# the symbols in this shared library. As a result, it reduced the size of libbcc.so 143# by about 800k in 2010. 144# Note that libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2. 145LOCAL_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 146 147# Generate build stamp (Build time + Build git revision + Build Semi SHA1) 148include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk 149 150include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk 151include $(LLVM_ROOT_PATH)/llvm-device-build.mk 152include $(BUILD_SHARED_LIBRARY) 153 154 155#===================================================================== 156# Host Shared Library libbcc 157#===================================================================== 158include $(CLEAR_VARS) 159 160LOCAL_MODULE := libbcc 161LOCAL_MODULE_TAGS := optional 162LOCAL_MODULE_CLASS := SHARED_LIBRARIES 163LOCAL_IS_HOST_MODULE := true 164 165LOCAL_CFLAGS := $(libbcc_CFLAGS) 166LOCAL_C_INCLUDES := $(libbcc_C_INCLUDES) 167 168LOCAL_SRC_FILES := lib/ExecutionEngine/bcc.cpp 169 170LOCAL_WHOLE_STATIC_LIBRARIES += $(libbcc_WHOLE_STATIC_LIBRARIES) 171 172ifeq ($(libbcc_USE_MCJIT),1) 173 LOCAL_STATIC_LIBRARIES += librsloader 174endif 175 176ifeq ($(libbcc_USE_DISASSEMBLER),1) 177 LOCAL_STATIC_LIBRARIES += \ 178 libLLVMARMDisassembler \ 179 libLLVMARMAsmPrinter \ 180 libLLVMX86Disassembler \ 181 libLLVMMCParser 182endif 183 184LOCAL_STATIC_LIBRARIES += \ 185 libcutils \ 186 libutils \ 187 libLLVMARMCodeGen \ 188 libLLVMARMDesc \ 189 libLLVMARMInfo \ 190 libLLVMX86CodeGen \ 191 libLLVMX86Desc \ 192 libLLVMX86Info \ 193 libLLVMX86Utils \ 194 libLLVMX86AsmPrinter \ 195 libLLVMAsmPrinter \ 196 libLLVMBitReader \ 197 libLLVMSelectionDAG \ 198 libLLVMCodeGen \ 199 libLLVMLinker \ 200 libLLVMJIT \ 201 libLLVMScalarOpts \ 202 libLLVMInstCombine \ 203 libLLVMipo \ 204 libLLVMipa \ 205 libLLVMTransformUtils \ 206 libLLVMAnalysis \ 207 libLLVMTarget \ 208 libLLVMMCParser \ 209 libLLVMMC \ 210 libLLVMCore \ 211 libLLVMSupport 212 213LOCAL_LDLIBS := -ldl -lpthread 214 215# Generate build stamp (Build time + Build git revision + Build Semi SHA1) 216include $(LOCAL_PATH)/libbcc-gen-build-stamp.mk 217 218# definitions for LLVM 219LOCAL_CFLAGS += -DDEBUG_CODEGEN=1 220 221ifeq ($(TARGET_ARCH),arm) 222 LOCAL_CFLAGS += -DFORCE_ARM_CODEGEN=1 223else 224 ifeq ($(TARGET_ARCH),x86) 225 LOCAL_CFLAGS += -DFORCE_X86_CODEGEN=1 226 else 227 $(error Unsupported TARGET_ARCH $(TARGET_ARCH)) 228 endif 229endif 230 231include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk 232include $(LLVM_ROOT_PATH)/llvm-host-build.mk 233include $(BUILD_HOST_SHARED_LIBRARY) 234 235 236#===================================================================== 237# Include Subdirectories 238#===================================================================== 239include $(call all-makefiles-under,$(LOCAL_PATH)) 240