Android.mk revision 77643ba4fb6e93037940294a03149e68c353b4fa
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 17ifneq ($(TARGET_SIMULATOR),true) 18 19LOCAL_PATH := $(call my-dir) 20 21LLVM_ROOT_PATH := external/llvm 22 23# Extract Configuration from Cache.h 24 25libbcc_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 35 36libbcc_SRC_FILES := \ 37 lib/bcc/bcc.cpp \ 38 lib/CodeGen/CodeEmitter.cpp \ 39 lib/CodeGen/CodeMemoryManager.cpp \ 40 lib/bcc/Compiler.cpp \ 41 lib/bcc/ContextManager.cpp \ 42 lib/bcc/FileHandle.cpp \ 43 lib/bcc/Runtime.c \ 44 lib/bcc/Script.cpp \ 45 lib/bcc/ScriptCompiled.cpp 46 47ifeq ($(libbcc_USE_CACHE),1) 48libbcc_SRC_FILES += \ 49 lib/bcc/CacheReader.cpp \ 50 lib/bcc/CacheWriter.cpp \ 51 lib/bcc/ScriptCached.cpp \ 52 lib/bcc/Sha1Helper.cpp \ 53 helper/sha1.c 54endif 55 56# 57# Shared library for target 58# ======================================================== 59include $(CLEAR_VARS) 60LOCAL_PRELINK_MODULE := false 61LOCAL_MODULE := libbcc 62LOCAL_MODULE_TAGS := optional 63LOCAL_SRC_FILES := \ 64 $(libbcc_SRC_FILES) \ 65 runtime/lib/arm/adddf3vfp.S \ 66 runtime/lib/arm/addsf3vfp.S \ 67 runtime/lib/arm/divdf3vfp.S \ 68 runtime/lib/arm/divsf3vfp.S \ 69 runtime/lib/arm/eqdf2vfp.S \ 70 runtime/lib/arm/eqsf2vfp.S \ 71 runtime/lib/arm/extendsfdf2vfp.S \ 72 runtime/lib/arm/fixdfsivfp.S \ 73 runtime/lib/arm/fixsfsivfp.S \ 74 runtime/lib/arm/fixunsdfsivfp.S \ 75 runtime/lib/arm/fixunssfsivfp.S \ 76 runtime/lib/arm/floatsidfvfp.S \ 77 runtime/lib/arm/floatsisfvfp.S \ 78 runtime/lib/arm/floatunssidfvfp.S \ 79 runtime/lib/arm/floatunssisfvfp.S \ 80 runtime/lib/arm/gedf2vfp.S \ 81 runtime/lib/arm/gesf2vfp.S \ 82 runtime/lib/arm/gtdf2vfp.S \ 83 runtime/lib/arm/gtsf2vfp.S \ 84 runtime/lib/arm/ledf2vfp.S \ 85 runtime/lib/arm/lesf2vfp.S \ 86 runtime/lib/arm/ltdf2vfp.S \ 87 runtime/lib/arm/ltsf2vfp.S \ 88 runtime/lib/arm/muldf3vfp.S \ 89 runtime/lib/arm/mulsf3vfp.S \ 90 runtime/lib/arm/nedf2vfp.S \ 91 runtime/lib/arm/negdf2vfp.S \ 92 runtime/lib/arm/negsf2vfp.S \ 93 runtime/lib/arm/nesf2vfp.S \ 94 runtime/lib/arm/subdf3vfp.S \ 95 runtime/lib/arm/subsf3vfp.S \ 96 runtime/lib/arm/truncdfsf2vfp.S \ 97 runtime/lib/arm/unorddf2vfp.S \ 98 runtime/lib/arm/unordsf2vfp.S 99 100LOCAL_STATIC_LIBRARIES := \ 101 libLLVMARMCodeGen \ 102 libLLVMARMInfo \ 103 libLLVMBitReader \ 104 libLLVMSelectionDAG \ 105 libLLVMAsmPrinter \ 106 libLLVMCodeGen \ 107 libLLVMLinker \ 108 libLLVMJIT \ 109 libLLVMTarget \ 110 libLLVMMC \ 111 libLLVMScalarOpts \ 112 libLLVMInstCombine \ 113 libLLVMipo \ 114 libLLVMipa \ 115 libLLVMTransformUtils \ 116 libLLVMCore \ 117 libLLVMSupport \ 118 libLLVMSystem \ 119 libLLVMAnalysis 120 121LOCAL_SHARED_LIBRARIES := libdl libcutils libutils libstlport 122 123LOCAL_C_INCLUDES := \ 124 $(LOCAL_PATH)/lib/bcc \ 125 $(LOCAL_PATH)/lib/CodeGen \ 126 $(LOCAL_PATH)/helper \ 127 $(LOCAL_PATH)/include \ 128 $(LOCAL_PATH) 129 130ifeq ($(libbcc_USE_DISASSEMBLER),1) 131LOCAL_STATIC_LIBRARIES := \ 132 libLLVMARMDisassembler \ 133 libLLVMARMAsmPrinter \ 134 libLLVMMCParser \ 135 $(LOCAL_STATIC_LIBRARIES) 136endif 137 138# This makes libclcore.bc get installed if and only if the target libbcc.so is installed. 139LOCAL_REQUIRED_MODULES := libclcore.bc 140 141# -Wl,--exclude-libs=ALL would hide most of the symbols in the shared library 142# and reduces the size of libbcc.so by about 800k. 143# As libLLVMBitReader:libLLVMCore:libLLVMSupport are used by pixelflinger2, 144# use below instead. 145LOCAL_LDFLAGS += -Wl,--exclude-libs=libLLVMARMDisassembler:libLLVMARMAsmPrinter:libLLVMMCParser:libLLVMARMCodeGen:libLLVMARMInfo:libLLVMSelectionDAG:libLLVMAsmPrinter:libLLVMCodeGen:libLLVMLinker:libLLVMJIT:libLLVMTarget:libLLVMMC:libLLVMScalarOpts:libLLVMInstCombine:libLLVMipo:libLLVMipa:libLLVMTransformUtils:libLLVMSystem:libLLVMAnalysis 146 147include $(LLVM_ROOT_PATH)/llvm-device-build.mk 148include $(BUILD_SHARED_LIBRARY) 149 150# Shared library for host 151# ======================================================== 152include $(CLEAR_VARS) 153 154LOCAL_MODULE := libbcc 155LOCAL_MODULE_TAGS := optional 156LOCAL_SRC_FILES := \ 157 $(libbcc_SRC_FILES) \ 158 helper/logd_write.c 159 160LOCAL_STATIC_LIBRARIES := \ 161 libcutils \ 162 libLLVMX86CodeGen \ 163 libLLVMX86Info \ 164 libLLVMARMCodeGen \ 165 libLLVMARMInfo \ 166 libLLVMBitReader \ 167 libLLVMSelectionDAG \ 168 libLLVMAsmPrinter \ 169 libLLVMMCParser \ 170 libLLVMCodeGen \ 171 libLLVMLinker \ 172 libLLVMJIT \ 173 libLLVMTarget \ 174 libLLVMMC \ 175 libLLVMScalarOpts \ 176 libLLVMInstCombine \ 177 libLLVMipo \ 178 libLLVMipa \ 179 libLLVMTransformUtils \ 180 libLLVMCore \ 181 libLLVMSupport \ 182 libLLVMSystem \ 183 libLLVMAnalysis 184 185LOCAL_LDLIBS := -ldl -lpthread 186 187LOCAL_C_INCLUDES := \ 188 $(LOCAL_PATH)/lib/bcc \ 189 $(LOCAL_PATH)/lib/CodeGen \ 190 $(LOCAL_PATH)/helper \ 191 $(LOCAL_PATH)/include \ 192 $(LOCAL_PATH) 193 194# definitions for LLVM 195LOCAL_CFLAGS += -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DFORCE_ARM_CODEGEN=1 -DDEBUG_CODEGEN=1 196 197ifeq ($(libbcc_USE_DISASSEMBLER),1) 198LOCAL_STATIC_LIBRARIES := \ 199 libLLVMARMDisassembler \ 200 libLLVMARMAsmPrinter \ 201 libLLVMMCParser \ 202 $(LOCAL_STATIC_LIBRARIES) 203endif 204 205include $(LLVM_ROOT_PATH)/llvm-host-build.mk 206include $(BUILD_HOST_SHARED_LIBRARY) 207 208# Build children 209# ======================================================== 210include $(call all-makefiles-under,$(LOCAL_PATH)) 211 212endif # TARGET_SIMULATOR != true 213