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