|  | # | 
|  | # Copyright 2016 The Android Open-Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | # | 
|  |  | 
|  | LOCAL_PATH:= $(call my-dir) | 
|  | include $(CLEAR_VARS) | 
|  |  | 
|  | LOCAL_CLANG := true | 
|  |  | 
|  | LOCAL_MODULE := libsubzero | 
|  | LOCAL_MODULE_TAGS := optional | 
|  |  | 
|  | SUBZERO_PATH := ../../third_party/subzero | 
|  | LLVMDEPENDENCIES_PATH := ../../third_party/llvm-subzero | 
|  |  | 
|  | LOCAL_SRC_FILES := \ | 
|  | $(SUBZERO_PATH)/src/IceAssembler.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceCfg.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceCfgNode.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceClFlags.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceELFObjectWriter.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceELFSection.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceFixups.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceGlobalContext.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceGlobalInits.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceInst.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceInstrumentation.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceIntrinsics.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceLiveness.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceLoopAnalyzer.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceMangling.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceMemory.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceOperand.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceRangeSpec.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceRegAlloc.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceRevision.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceRNG.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceSwitchLowering.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTargetLowering.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceThreading.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTimerTree.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTypes.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceVariableSplitting.cpp | 
|  |  | 
|  | LOCAL_SRC_FILES_x86 += \ | 
|  | $(SUBZERO_PATH)/src/IceInstX8632.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTargetLoweringX8632.cpp | 
|  | LOCAL_SRC_FILES_x86_64 += \ | 
|  | $(SUBZERO_PATH)/src/IceInstX8664.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTargetLoweringX8664.cpp | 
|  | LOCAL_SRC_FILES_arm += \ | 
|  | $(SUBZERO_PATH)/src/IceAssemblerARM32.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceTargetLoweringARM32.cpp \ | 
|  | $(SUBZERO_PATH)/src/IceInstARM32.cpp | 
|  |  | 
|  | LOCAL_SRC_FILES += \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/APInt.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Atomic.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/circular_raw_ostream.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/CommandLine.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTF.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/ConvertUTFWrapper.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Debug.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/ErrorHandling.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/FoldingSet.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Hashing.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Host.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/ManagedStatic.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/MemoryBuffer.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Mutex.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/NativeFormatting.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Path.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Process.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Program.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/raw_ostream.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/raw_os_ostream.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/regcomp.c \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/regerror.c \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Regex.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/regexec.c \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/regfree.c \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/regstrlcpy.c \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Signals.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/SmallPtrSet.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/SmallVector.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/StringExtras.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/StringMap.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/StringRef.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/StringSaver.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/TargetParser.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Threading.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Timer.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Triple.cpp \ | 
|  | $(LLVMDEPENDENCIES_PATH)/lib/Support/Twine.cpp | 
|  |  | 
|  | LOCAL_CPPFLAGS := -std=c++11 | 
|  |  | 
|  | LOCAL_CFLAGS += -DLOG_TAG=\"libsubzero\" \ | 
|  | -Wno-unused-parameter \ | 
|  | -Wno-implicit-exception-spec-mismatch \ | 
|  | -Wno-overloaded-virtual \ | 
|  | -Wno-non-virtual-dtor | 
|  |  | 
|  | ifneq (16,${PLATFORM_SDK_VERSION}) | 
|  | LOCAL_CFLAGS += -Xclang -fuse-init-array | 
|  | else | 
|  | LOCAL_CFLAGS += -D__STDC_INT64__ | 
|  | endif | 
|  |  | 
|  | LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections | 
|  | LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS | 
|  |  | 
|  | # Common Subzero defines | 
|  | 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 | 
|  |  | 
|  | # Subzero target | 
|  | LOCAL_CFLAGS_x86 += -DSZTARGET=X8632 | 
|  | LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664 | 
|  | LOCAL_CFLAGS_arm += -DSZTARGET=ARM32 | 
|  |  | 
|  | # Android's make system also uses NDEBUG, so we need to set/unset it forcefully | 
|  | # Uncomment for debug ON: | 
|  | # LOCAL_CFLAGS += -UNDEBUG -g -O0 | 
|  |  | 
|  | LOCAL_C_INCLUDES += \ | 
|  | bionic \ | 
|  | $(LOCAL_PATH)/$(SUBZERO_PATH)/ \ | 
|  | $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/include/ \ | 
|  | $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/build/Android/include/ \ | 
|  | $(LOCAL_PATH)/$(SUBZERO_PATH)/pnacl-llvm/include/ | 
|  |  | 
|  | # Marshmallow does not have stlport, but comes with libc++ by default | 
|  | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow) | 
|  | LOCAL_C_INCLUDES += external/stlport/stlport | 
|  | endif | 
|  |  | 
|  | include $(BUILD_STATIC_LIBRARY) |