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