huangcm
2025-02-28 b45e871a67cd1272e3da9ba5bd383f832b0f1824
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
LOCAL_PATH := $(call my-dir)
swiftshader_src_root := $(LOCAL_PATH)
 
COMMON_C_INCLUDES += \
   bionic \
   $(LOCAL_PATH)/../include \
   $(LOCAL_PATH)/OpenGL/ \
   $(LOCAL_PATH)
 
ifeq ($(REACTOR_USE_SUBZERO),true)
 
COMMON_C_INCLUDES += \
   $(LOCAL_PATH)/../third_party/subzero/ \
   $(LOCAL_PATH)/../third_party/llvm-subzero/include/ \
   $(LOCAL_PATH)/../third_party/llvm-subzero/build/Android/include/ \
   $(LOCAL_PATH)/../third_party/subzero/pnacl-llvm/include/
 
else
 
COMMON_C_INCLUDES += \
   $(LOCAL_PATH)/../third_party/llvm-7.0/llvm/include \
   $(LOCAL_PATH)/../third_party/llvm-7.0/configs/android/include \
   $(LOCAL_PATH)/../third_party/llvm-7.0/configs/common/include
 
endif
 
# Project Treble is introduced from Oreo MR1
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 27 && echo OreoMR1),OreoMR1)
COMMON_SHARED_LIBRARIES := libnativewindow liblog
COMMON_HEADER_LIBRARIES := libhardware_headers libnativebase_headers
COMMON_STATIC_LIBRARIES := libarect
endif
 
# Marshmallow does not have stlport, but comes with libc++ by default
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23 && echo PreMarshmallow),PreMarshmallow)
COMMON_C_INCLUDES += external/stlport/stlport
endif
 
COMMON_SRC_FILES := \
   Common/CPUID.cpp \
   Common/Configurator.cpp \
   Common/DebugAndroid.cpp \
   Common/GrallocAndroid.cpp \
   Common/Half.cpp \
   Common/Math.cpp \
   Common/Memory.cpp \
   Common/Resource.cpp \
   Common/Socket.cpp \
   Common/Thread.cpp \
   Common/Timer.cpp
 
COMMON_SRC_FILES += \
   Main/Config.cpp \
   Main/FrameBuffer.cpp \
   Main/FrameBufferAndroid.cpp \
   Main/SwiftConfig.cpp
 
COMMON_SRC_FILES += \
   Reactor/Reactor.cpp \
   Reactor/Routine.cpp \
   Reactor/Debug.cpp \
   Reactor/DebugAndroid.cpp \
   Reactor/ExecutableMemory.cpp
 
ifeq ($(REACTOR_USE_SUBZERO),true)
COMMON_SRC_FILES += \
   Reactor/SubzeroReactor.cpp \
   Reactor/Optimizer.cpp
else
COMMON_SRC_FILES += \
   Reactor/LLVMReactor.cpp \
   Reactor/LLVMRoutine.cpp \
   Reactor/CPUID.cpp
endif
 
COMMON_SRC_FILES += \
   Renderer/Blitter.cpp \
   Renderer/Clipper.cpp \
   Renderer/Color.cpp \
   Renderer/Context.cpp \
   Renderer/ETC_Decoder.cpp \
   Renderer/Matrix.cpp \
   Renderer/PixelProcessor.cpp \
   Renderer/Plane.cpp \
   Renderer/Point.cpp \
   Renderer/QuadRasterizer.cpp \
   Renderer/Renderer.cpp \
   Renderer/Sampler.cpp \
   Renderer/SetupProcessor.cpp \
   Renderer/Surface.cpp \
   Renderer/TextureStage.cpp \
   Renderer/Vector.cpp \
   Renderer/VertexProcessor.cpp \
 
COMMON_SRC_FILES += \
   Shader/Constants.cpp \
   Shader/PixelPipeline.cpp \
   Shader/PixelProgram.cpp \
   Shader/PixelRoutine.cpp \
   Shader/PixelShader.cpp \
   Shader/SamplerCore.cpp \
   Shader/SetupRoutine.cpp \
   Shader/Shader.cpp \
   Shader/ShaderCore.cpp \
   Shader/VertexPipeline.cpp \
   Shader/VertexProgram.cpp \
   Shader/VertexRoutine.cpp \
   Shader/VertexShader.cpp \
 
COMMON_SRC_FILES += \
   OpenGL/common/Image.cpp \
   OpenGL/common/Object.cpp \
   OpenGL/common/MatrixStack.cpp \
 
COMMON_CFLAGS := \
   -DLOG_TAG=\"swiftshader\" \
   -Wall \
   -Werror \
   -Wno-format \
   -Wno-switch \
   -Wno-unused-local-typedef \
   -Wno-unused-parameter \
   -Wno-unused-value \
   -Wno-unused-variable \
   -Wno-implicit-exception-spec-mismatch \
   -Wno-implicit-fallthrough \
   -Wno-overloaded-virtual \
   -Wno-non-virtual-dtor \
   -Wno-attributes \
   -Wno-unknown-attributes \
   -Wno-unknown-warning-option \
   -fno-operator-names \
   -msse2 \
   -D__STDC_CONSTANT_MACROS \
   -D__STDC_LIMIT_MACROS \
   -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \
   -std=c++11 \
   -DNO_SANITIZE_FUNCTION=
 
ifneq (16,${PLATFORM_SDK_VERSION})
COMMON_CFLAGS += -Xclang -fuse-init-array
else
COMMON_CFLAGS += -D__STDC_INT64__
endif
 
# gralloc1 is introduced from N MR1
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 25 && echo NMR1),NMR1)
COMMON_CFLAGS += -DHAVE_GRALLOC1
COMMON_C_INCLUDES += \
   system/core/libsync/include \
   system/core/libsync
endif
 
# Common Subzero defines
COMMON_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
 
include $(CLEAR_VARS)
LOCAL_CLANG := true
LOCAL_MODULE := swiftshader_top_release
LOCAL_VENDOR_MODULE := true
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(COMMON_SRC_FILES)
LOCAL_CFLAGS := $(COMMON_CFLAGS) -fomit-frame-pointer -ffunction-sections -fdata-sections -DANGLE_DISABLE_TRACE
LOCAL_C_INCLUDES := $(COMMON_C_INCLUDES)
LOCAL_SHARED_LIBRARIES := $(COMMON_SHARED_LIBRARIES)
LOCAL_HEADER_LIBRARIES := $(COMMON_HEADER_LIBRARIES)
LOCAL_STATIC_LIBRARIES := $(COMMON_STATIC_LIBRARIES)
include $(BUILD_STATIC_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_CLANG := true
LOCAL_MODULE := swiftshader_top_debug
LOCAL_VENDOR_MODULE := true
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(COMMON_SRC_FILES)
LOCAL_CFLAGS := $(COMMON_CFLAGS) -UNDEBUG -g -O0 -DDEFAULT_THREAD_COUNT=1
LOCAL_C_INCLUDES := $(COMMON_C_INCLUDES)
LOCAL_SHARED_LIBRARIES := $(COMMON_SHARED_LIBRARIES)
LOCAL_HEADER_LIBRARIES := $(COMMON_HEADER_LIBRARIES)
LOCAL_STATIC_LIBRARIES := $(COMMON_STATIC_LIBRARIES)
include $(BUILD_STATIC_LIBRARY)
 
include $(swiftshader_src_root)/Reactor/Android.mk
include $(swiftshader_src_root)/OpenGL/libGLESv2/Android.mk
include $(swiftshader_src_root)/OpenGL/libGLES_CM/Android.mk
include $(swiftshader_src_root)/OpenGL/libEGL/Android.mk
include $(swiftshader_src_root)/OpenGL/compiler/Android.mk