blob: 2fe023024e50f519ff76e02de48eec5836b22e6f [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
Isaac Chen78eaf212017-12-05 14:40:44 +080024LOCAL_VENDOR_MODULE := true
Nicolas Capens1ba26112017-05-02 11:57:06 -040025
Nicolas Capens5aebe182017-05-03 14:23:06 -040026SUBZERO_PATH := ../../third_party/subzero
Nicolas Capens1ba26112017-05-02 11:57:06 -040027LLVMDEPENDENCIES_PATH := ../../third_party/llvm-subzero
28
29LOCAL_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
58LOCAL_SRC_FILES_x86 += \
59 $(SUBZERO_PATH)/src/IceInstX8632.cpp \
60 $(SUBZERO_PATH)/src/IceTargetLoweringX8632.cpp
61LOCAL_SRC_FILES_x86_64 += \
62 $(SUBZERO_PATH)/src/IceInstX8664.cpp \
63 $(SUBZERO_PATH)/src/IceTargetLoweringX8664.cpp
64LOCAL_SRC_FILES_arm += \
65 $(SUBZERO_PATH)/src/IceAssemblerARM32.cpp \
66 $(SUBZERO_PATH)/src/IceTargetLoweringARM32.cpp \
67 $(SUBZERO_PATH)/src/IceInstARM32.cpp
68
69LOCAL_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
109LOCAL_CPPFLAGS := -std=c++11
110
Nicolas Capens3c005762018-03-07 15:19:58 -0500111LOCAL_CFLAGS += \
Chih-Hung Hsieh4be91712017-10-11 14:23:57 -0700112 -DLOG_TAG=\"libsubzero\" \
113 -Wall \
114 -Werror \
Aurimas Liutikasca090822018-10-25 01:13:55 +0000115 -Wno-undefined-var-template \
116 -Wno-unused-lambda-capture \
Nicolas Capens1ba26112017-05-02 11:57:06 -0400117 -Wno-unused-parameter \
118 -Wno-implicit-exception-spec-mismatch \
Nicolas Capens7cfb50c2018-12-08 12:35:32 -0800119 -Wno-implicit-fallthrough \
Nicolas Capens1ba26112017-05-02 11:57:06 -0400120 -Wno-overloaded-virtual \
Nicolas Capens3c005762018-03-07 15:19:58 -0500121 -Wno-non-virtual-dtor \
Nicolas Capens964dde92018-06-12 23:55:16 -0400122 -Wno-unknown-warning-option \
123 -Wno-enum-compare-switch
Nicolas Capens1ba26112017-05-02 11:57:06 -0400124
125ifneq (16,${PLATFORM_SDK_VERSION})
126LOCAL_CFLAGS += -Xclang -fuse-init-array
127else
128LOCAL_CFLAGS += -D__STDC_INT64__
129endif
130
131LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections
132LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
133
134# Common Subzero defines
135LOCAL_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
136
137# Subzero target
138LOCAL_CFLAGS_x86 += -DSZTARGET=X8632
139LOCAL_CFLAGS_x86_64 += -DSZTARGET=X8664
140LOCAL_CFLAGS_arm += -DSZTARGET=ARM32
141
142# Android's make system also uses NDEBUG, so we need to set/unset it forcefully
143# Uncomment for debug ON:
144# LOCAL_CFLAGS += -UNDEBUG -g -O0
145
146LOCAL_C_INCLUDES += \
147 bionic \
148 $(LOCAL_PATH)/$(SUBZERO_PATH)/ \
149 $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/include/ \
150 $(LOCAL_PATH)/$(LLVMDEPENDENCIES_PATH)/build/Android/include/ \
151 $(LOCAL_PATH)/$(SUBZERO_PATH)/pnacl-llvm/include/
152
153# Marshmallow does not have stlport, but comes with libc++ by default
154ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
155LOCAL_C_INCLUDES += external/stlport/stlport
156endif
157
158include $(BUILD_STATIC_LIBRARY)