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