1 # 2 # Copyright 2016 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 17 LOCAL_PATH:= $(call my-dir) 18 include $(CLEAR_VARS) 19 20 LOCAL_CLANG := true 21 22 LOCAL_MODULE := libsubzero 23 LOCAL_MODULE_TAGS := optional 24 LOCAL_VENDOR_MODULE := true 25 26 SUBZERO_PATH := ../../third_party/subzero 27 LLVMDEPENDENCIES_PATH := ../../third_party/llvm-subzero 28 29 LOCAL_SRC_FILES := \ 30 $(SUBZERO_PATH)/src/IceAssembler.cpp \ 31 $(SUBZERO_PATH)/src/IceCfg.cpp \ 32 $(SUBZERO_PATH)/src/IceCfgNode.cpp \ 33 $(SUBZERO_PATH)/src/IceClFlags.cpp \ 34 $(SUBZERO_PATH)/src/IceELFObjectWriter.cpp \ 35 $(SUBZERO_PATH)/src/IceELFSection.cpp \ 36 $(SUBZERO_PATH)/src/IceFixups.cpp \ 37 $(SUBZERO_PATH)/src/IceGlobalContext.cpp \ 38 $(SUBZERO_PATH)/src/IceGlobalInits.cpp \ 39 $(SUBZERO_PATH)/src/IceInst.cpp \ 40 $(SUBZERO_PATH)/src/IceInstrumentation.cpp \ 41 $(SUBZERO_PATH)/src/IceIntrinsics.cpp \ 42 $(SUBZERO_PATH)/src/IceLiveness.cpp \ 43 $(SUBZERO_PATH)/src/IceLoopAnalyzer.cpp \ 44 $(SUBZERO_PATH)/src/IceMangling.cpp \ 45 $(SUBZERO_PATH)/src/IceMemory.cpp \ 46 $(SUBZERO_PATH)/src/IceOperand.cpp \ 47 $(SUBZERO_PATH)/src/IceRangeSpec.cpp \ 48 $(SUBZERO_PATH)/src/IceRegAlloc.cpp \ 49 $(SUBZERO_PATH)/src/IceRevision.cpp \ 50 $(SUBZERO_PATH)/src/IceRNG.cpp \ 51 $(SUBZERO_PATH)/src/IceSwitchLowering.cpp \ 52 $(SUBZERO_PATH)/src/IceTargetLowering.cpp \ 53 $(SUBZERO_PATH)/src/IceThreading.cpp \ 54 $(SUBZERO_PATH)/src/IceTimerTree.cpp \ 55 $(SUBZERO_PATH)/src/IceTypes.cpp \ 56 $(SUBZERO_PATH)/src/IceVariableSplitting.cpp 57 58 LOCAL_SRC_FILES_x86 += \ 59 $(SUBZERO_PATH)/src/IceInstX8632.cpp \ 60 $(SUBZERO_PATH)/src/IceTargetLoweringX8632.cpp 61 LOCAL_SRC_FILES_x86_64 += \ 62 $(SUBZERO_PATH)/src/IceInstX8664.cpp \ 63 $(SUBZERO_PATH)/src/IceTargetLoweringX8664.cpp 64 LOCAL_SRC_FILES_arm += \ 65 $(SUBZERO_PATH)/src/IceAssemblerARM32.cpp \ 66 $(SUBZERO_PATH)/src/IceTargetLoweringARM32.cpp \ 67 $(SUBZERO_PATH)/src/IceInstARM32.cpp 68 69 LOCAL_SRC_FILES += \ 70 $(LLVMDEPENDENCIES_PATH)/lib/Support/APInt.cpp \ 71 $(LLVMDEPENDENCIES_PATH)/lib/Support/Atomic.cpp \ 72 $(LLVMDEPENDENCIES_PATH)/lib/Support/circular_raw_ostream.cpp \ 73 $(LLVMDEPENDENCIES_PATH)/lib/Support/CommandLine.cpp \ 74 $(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTF.cpp \ 75 $(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTFWrapper.cpp \ 76 $(LLVMDEPENDENCIES_PATH)/lib/Support/Debug.cpp \ 77 $(LLVMDEPENDENCIES_PATH)/lib/Support/ErrorHandling.cpp \ 78 $(LLVMDEPENDENCIES_PATH)/lib/Support/FoldingSet.cpp \ 79 $(LLVMDEPENDENCIES_PATH)/lib/Support/Hashing.cpp \ 80 $(LLVMDEPENDENCIES_PATH)/lib/Support/Host.cpp \ 81 $(LLVMDEPENDENCIES_PATH)/lib/Support/ManagedStatic.cpp \ 82 $(LLVMDEPENDENCIES_PATH)/lib/Support/MemoryBuffer.cpp \ 83 $(LLVMDEPENDENCIES_PATH)/lib/Support/Mutex.cpp \ 84 $(LLVMDEPENDENCIES_PATH)/lib/Support/NativeFormatting.cpp \ 85 $(LLVMDEPENDENCIES_PATH)/lib/Support/Path.cpp \ 86 $(LLVMDEPENDENCIES_PATH)/lib/Support/Process.cpp \ 87 $(LLVMDEPENDENCIES_PATH)/lib/Support/Program.cpp \ 88 $(LLVMDEPENDENCIES_PATH)/lib/Support/raw_ostream.cpp \ 89 $(LLVMDEPENDENCIES_PATH)/lib/Support/raw_os_ostream.cpp \ 90 $(LLVMDEPENDENCIES_PATH)/lib/Support/regcomp.c \ 91 $(LLVMDEPENDENCIES_PATH)/lib/Support/regerror.c \ 92 $(LLVMDEPENDENCIES_PATH)/lib/Support/Regex.cpp \ 93 $(LLVMDEPENDENCIES_PATH)/lib/Support/regexec.c \ 94 $(LLVMDEPENDENCIES_PATH)/lib/Support/regfree.c \ 95 $(LLVMDEPENDENCIES_PATH)/lib/Support/regstrlcpy.c \ 96 $(LLVMDEPENDENCIES_PATH)/lib/Support/Signals.cpp \ 97 $(LLVMDEPENDENCIES_PATH)/lib/Support/SmallPtrSet.cpp \ 98 $(LLVMDEPENDENCIES_PATH)/lib/Support/SmallVector.cpp \ 99 $(LLVMDEPENDENCIES_PATH)/lib/Support/StringExtras.cpp \ 100 $(LLVMDEPENDENCIES_PATH)/lib/Support/StringMap.cpp \ 101 $(LLVMDEPENDENCIES_PATH)/lib/Support/StringRef.cpp \ 102 $(LLVMDEPENDENCIES_PATH)/lib/Support/StringSaver.cpp \ 103 $(LLVMDEPENDENCIES_PATH)/lib/Support/TargetParser.cpp \ 104 $(LLVMDEPENDENCIES_PATH)/lib/Support/Threading.cpp \ 105 $(LLVMDEPENDENCIES_PATH)/lib/Support/Timer.cpp \ 106 $(LLVMDEPENDENCIES_PATH)/lib/Support/Triple.cpp \ 107 $(LLVMDEPENDENCIES_PATH)/lib/Support/Twine.cpp 108 109 LOCAL_CPPFLAGS := -std=c++11 110 111 LOCAL_CFLAGS += \ 112 -DLOG_TAG=\"libsubzero\" \ 113 -Wall \ 114 -Werror \ 115 -Wno-error=undefined-var-template \ 116 -Wno-error=unused-lambda-capture \ 117 -Wno-unused-parameter \ 118 -Wno-implicit-exception-spec-mismatch \ 119 -Wno-overloaded-virtual \ 120 -Wno-non-virtual-dtor \ 121 -Wno-unknown-warning-option 122 123 ifneq (16,${PLATFORM_SDK_VERSION}) 124 LOCAL_CFLAGS += -Xclang -fuse-init-array 125 else 126 LOCAL_CFLAGS += -D__STDC_INT64__ 127 endif 128 129 LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections 130 LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS 131 132 # Common Subzero defines 133 LOCAL_CFLAGS += -DALLOW_DUMP=0 -DALLOW_TIMERS=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=0 -DALLOW_WASM=0 -DICE_THREAD_LOCAL_HACK=1 134 135 # Subzero target 136 LOCAL_CFLAGS_x86 += -DSZTARGET=X8632 137 LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664 138 LOCAL_CFLAGS_arm += -DSZTARGET=ARM32 139 140 # Android's make system also uses NDEBUG, so we need to set/unset it forcefully 141 # Uncomment for debug ON: 142 # LOCAL_CFLAGS += -UNDEBUG -g -O0 143 144 LOCAL_C_INCLUDES += \ 145 bionic \ 146 $(LOCAL_PATH)/$(SUBZERO_PATH)/ \ 147 $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/include/ \ 148 $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/build/Android/include/ \ 149 $(LOCAL_PATH)/$(SUBZERO_PATH)/pnacl-llvm/include/ 150 151 # Marshmallow does not have stlport, but comes with libc++ by default 152 ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow) 153 LOCAL_C_INCLUDES += external/stlport/stlport 154 endif 155 156 include $(BUILD_STATIC_LIBRARY) 157