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