blob: 7ff604fb35fc761cee3850d6c1b24fe9f2f6a0ed [file] [log] [blame]
Nicolas Capens1ba26112017-05-02 11:57:06 -04001#
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
17LOCAL_PATH:= $(call my-dir)
18include $(CLEAR_VARS)
19
20LOCAL_CLANG := true
21
22LOCAL_MODULE := libsubzero
23LOCAL_MODULE_TAGS := optional
24
Nicolas Capens5aebe182017-05-03 14:23:06 -040025SUBZERO_PATH := ../../third_party/subzero
Nicolas Capens1ba26112017-05-02 11:57:06 -040026LLVMDEPENDENCIES_PATH := ../../third_party/llvm-subzero
27
28LOCAL_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
57LOCAL_SRC_FILES_x86 += \
58 $(SUBZERO_PATH)/src/IceInstX8632.cpp \
59 $(SUBZERO_PATH)/src/IceTargetLoweringX8632.cpp
60LOCAL_SRC_FILES_x86_64 += \
61 $(SUBZERO_PATH)/src/IceInstX8664.cpp \
62 $(SUBZERO_PATH)/src/IceTargetLoweringX8664.cpp
63LOCAL_SRC_FILES_arm += \
64 $(SUBZERO_PATH)/src/IceAssemblerARM32.cpp \
65 $(SUBZERO_PATH)/src/IceTargetLoweringARM32.cpp \
66 $(SUBZERO_PATH)/src/IceInstARM32.cpp
67
68LOCAL_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
108LOCAL_CPPFLAGS := -std=c++11
109
110LOCAL_CFLAGS += -DLOG_TAG=\"libsubzero\" \
111 -Wno-unused-parameter \
112 -Wno-implicit-exception-spec-mismatch \
113 -Wno-overloaded-virtual \
114 -Wno-non-virtual-dtor
115
116ifneq (16,${PLATFORM_SDK_VERSION})
117LOCAL_CFLAGS += -Xclang -fuse-init-array
118else
119LOCAL_CFLAGS += -D__STDC_INT64__
120endif
121
122LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections
123LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
124
125# Common Subzero defines
126LOCAL_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
129LOCAL_CFLAGS_x86 += -DSZTARGET=X8632
130LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664
131LOCAL_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
137LOCAL_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
145ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
146LOCAL_C_INCLUDES += external/stlport/stlport
147endif
148
149include $(BUILD_STATIC_LIBRARY)