1#
2# Copyright (C) 2017 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)
18
19SPIRIT_SRCS := \
20	builder.cpp\
21	entity.cpp\
22	instructions.cpp\
23	module.cpp\
24	pass.cpp\
25	pass_queue.cpp\
26	transformer.cpp\
27	visitor.cpp\
28	word_stream.cpp\
29	word_stream_impl.cpp
30
31LIBNAME = libspirit
32
33NDK_PREBUILTS := $(TOP)/prebuilts/ndk/r13
34SPIRV_TOOLS_PATH := $(NDK_PREBUILTS)/sources/third_party/shaderc/third_party/spirv-tools
35SPIRV_HEADERS_PATH := $(SPIRV_TOOLS_PATH)/external/spirv-headers
36SPIRV_CORE_GRAMMAR := $(SPIRV_HEADERS_PATH)/include/spirv/1.1/spirv.core.grammar.json
37GENERATOR := $(LOCAL_PATH)/generate.py
38
39# Don't build for unbundled branches
40ifeq (,$(TARGET_BUILD_APPS))
41
42#=====================================================================
43# Host shared library libspirit.so
44#=====================================================================
45
46include $(CLEAR_VARS)
47
48LOCAL_SRC_FILES := $(SPIRIT_SRCS)
49
50LOCAL_MODULE := $(LIBNAME)
51LOCAL_MULTILIB := first
52LOCAL_MODULE_CLASS := SHARED_LIBRARIES
53LOCAL_IS_HOST_MODULE := true
54
55PATH_TO_GENERATED := $(local-generated-sources-dir)
56GEN := \
57	instructions_generated.h\
58	types_generated.h\
59	opcodes_generated.h\
60	instruction_dispatches_generated.h\
61	enum_dispatches_generated.h\
62	type_inst_dispatches_generated.h\
63	const_inst_dispatches_generated.h\
64	factory_methods_generated.h
65
66FULL_GEN := $(addprefix $(PATH_TO_GENERATED)/,$(GEN))
67$(FULL_GEN): $(SPIRV_CORE_GRAMMAR) $(GENERATOR)
68	$(GENERATOR) $< --$(notdir $(@:%_generated.h=%)) $@
69
70LOCAL_GENERATED_SOURCES := $(FULL_GEN)
71
72LOCAL_C_INCLUDES += $(PATH_TO_GENERATED)
73
74LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) $(PATH_TO_GENERATED)
75
76include $(BUILD_HOST_SHARED_LIBRARY)
77
78#=====================================================================
79# Tests for host module word_stream
80#=====================================================================
81
82include $(CLEAR_VARS)
83
84LOCAL_SRC_FILES := \
85  word_stream.cpp \
86  word_stream_impl.cpp \
87  word_stream_test.cpp
88
89LOCAL_STATIC_LIBRARIES := libgtest_host
90
91LOCAL_MODULE := word_stream_test
92LOCAL_MULTILIB := first
93LOCAL_MODULE_TAGS := tests
94LOCAL_MODULE_CLASS := NATIVE_TESTS
95LOCAL_IS_HOST_MODULE := true
96
97PATH_TO_GENERATED := $(local-generated-sources-dir)
98GEN := \
99	enum_dispatches_generated.h\
100	types_generated.h
101
102FULL_GEN := $(addprefix $(PATH_TO_GENERATED)/,$(GEN))
103$(FULL_GEN): $(SPIRV_CORE_GRAMMAR) $(GENERATOR)
104	$(GENERATOR) $< --$(notdir $(@:%_generated.h=%)) $@
105
106LOCAL_GENERATED_SOURCES := $(FULL_GEN)
107
108LOCAL_C_INCLUDES += $(PATH_TO_GENERATED)
109
110include $(BUILD_HOST_NATIVE_TEST)
111
112#=====================================================================
113# Tests for host module instructions
114#=====================================================================
115
116include $(CLEAR_VARS)
117
118LOCAL_SRC_FILES := \
119  entity.cpp \
120  instructions.cpp \
121  instructions_test.cpp \
122  visitor.cpp \
123  word_stream.cpp \
124  word_stream_impl.cpp
125
126LOCAL_STATIC_LIBRARIES := libgtest_host
127
128LOCAL_MODULE := instructions_test
129LOCAL_MULTILIB := first
130LOCAL_MODULE_TAGS := tests
131LOCAL_MODULE_CLASS := NATIVE_TESTS
132LOCAL_IS_HOST_MODULE := true
133
134PATH_TO_GENERATED := $(local-generated-sources-dir)
135GEN := \
136	enum_dispatches_generated.h\
137	instruction_dispatches_generated.h\
138	instructions_generated.h\
139	types_generated.h\
140	opcodes_generated.h
141
142FULL_GEN := $(addprefix $(PATH_TO_GENERATED)/,$(GEN))
143$(FULL_GEN): $(SPIRV_CORE_GRAMMAR) $(GENERATOR)
144	$(GENERATOR) $< --$(notdir $(@:%_generated.h=%)) $@
145
146LOCAL_GENERATED_SOURCES := $(FULL_GEN)
147
148LOCAL_C_INCLUDES += $(PATH_TO_GENERATED)
149
150include $(BUILD_HOST_NATIVE_TEST)
151
152#=====================================================================
153# Tests for host module pass queue
154#=====================================================================
155
156include $(CLEAR_VARS)
157
158LOCAL_SRC_FILES := \
159  pass.cpp \
160  pass_queue.cpp \
161  pass_queue_test.cpp \
162
163LOCAL_STATIC_LIBRARIES := libgtest_host
164
165LOCAL_SHARED_LIBRARIES := $(LIBNAME)
166
167LOCAL_MODULE := pass_queue_test
168LOCAL_MULTILIB := first
169LOCAL_MODULE_TAGS := tests
170LOCAL_MODULE_CLASS := NATIVE_TESTS
171LOCAL_IS_HOST_MODULE := true
172
173include $(BUILD_HOST_NATIVE_TEST)
174
175#=====================================================================
176# Tests for host shared library
177#=====================================================================
178
179include $(CLEAR_VARS)
180
181LOCAL_SRC_FILES := \
182  builder_test.cpp \
183  module_test.cpp \
184  transformer_test.cpp \
185
186LOCAL_STATIC_LIBRARIES := libgtest_host
187
188LOCAL_SHARED_LIBRARIES := $(LIBNAME)
189
190LOCAL_MODULE := $(LIBNAME)_test
191LOCAL_MULTILIB := first
192LOCAL_MODULE_TAGS := tests
193LOCAL_MODULE_CLASS := NATIVE_TESTS
194LOCAL_IS_HOST_MODULE := true
195
196include $(BUILD_HOST_NATIVE_TEST)
197
198#=====================================================================
199# Device shared library libspirit.so
200#=====================================================================
201
202include $(CLEAR_VARS)
203
204LOCAL_SRC_FILES := $(SPIRIT_SRCS)
205
206LOCAL_C_INCLUDES := $(SPIRIT_INCLUDES)
207
208LOCAL_MODULE := $(LIBNAME)
209LOCAL_MODULE_CLASS := SHARED_LIBRARIES
210
211LOCAL_SHARED_LIBRARIES +=
212
213PATH_TO_GENERATED := $(local-generated-sources-dir)
214
215GEN := \
216	instructions_generated.h\
217	types_generated.h\
218	opcodes_generated.h\
219	instruction_dispatches_generated.h\
220	enum_dispatches_generated.h\
221	type_inst_dispatches_generated.h\
222	const_inst_dispatches_generated.h\
223	factory_methods_generated.h
224
225FULL_GEN := $(addprefix $(PATH_TO_GENERATED)/,$(GEN))
226$(FULL_GEN): $(SPIRV_CORE_GRAMMAR) $(GENERATOR)
227	$(GENERATOR) $< --$(notdir $(@:%_generated.h=%)) $@
228
229LOCAL_GENERATED_SOURCES := $(FULL_GEN)
230
231LOCAL_C_INCLUDES += $(PATH_TO_GENERATED)
232
233LOCAL_CFLAGS := -Wno-error=non-virtual-dtor
234
235LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) $(PATH_TO_GENERATED)
236
237include $(BUILD_SHARED_LIBRARY)
238
239endif # Don't build in unbundled branches
240