1# Copyright (C) 2020-2023 The Khronos Group Inc. 2# 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 9# Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 12# Redistributions in binary form must reproduce the above 13# copyright notice, this list of conditions and the following 14# disclaimer in the documentation and/or other materials provided 15# with the distribution. 16# 17# Neither the name of The Khronos Group Inc. nor the names of its 18# contributors may be used to endorse or promote products derived 19# from this software without specific prior written permission. 20# 21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32# POSSIBILITY OF SUCH DAMAGE. 33 34LOCAL_PATH := $(call my-dir) 35 36# Generate glslang/build_info.h 37GLSLANG_GENERATED_INCLUDEDIR:=$(TARGET_OUT)/include 38GLSLANG_BUILD_INFO_H:=$(GLSLANG_GENERATED_INCLUDEDIR)/glslang/build_info.h 39 40define gen_glslang_build_info_h 41$(call generate-file-dir,$(GLSLANG_GENERATED_INCLUDEDIR)/dummy_filename) 42$(GLSLANG_BUILD_INFO_H): \ 43 $(LOCAL_PATH)/build_info.py \ 44 $(LOCAL_PATH)/build_info.h.tmpl \ 45 $(LOCAL_PATH)/CHANGES.md 46 @$(HOST_PYTHON) $(LOCAL_PATH)/build_info.py \ 47 $(LOCAL_PATH) \ 48 -i $(LOCAL_PATH)/build_info.h.tmpl \ 49 -o $(GLSLANG_BUILD_INFO_H) 50 @echo "[$(TARGET_ARCH_ABI)] Generate : $(GLSLANG_BUILD_INFO_H) <= CHANGES.md" 51endef 52$(eval $(call gen_glslang_build_info_h)) 53 54GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX 55# AMD and NV extensions are turned on by default in upstream Glslang. 56GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS) 57 58include $(CLEAR_VARS) 59LOCAL_MODULE:=OSDependent 60LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) 61LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) 62LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp 63LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/ 64LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/OSDependent/Unix/ 65include $(BUILD_STATIC_LIBRARY) 66 67include $(CLEAR_VARS) 68GLSLANG_OUT_PATH=$(if $(call host-path-is-absolute,$(TARGET_OUT)),$(TARGET_OUT),$(abspath $(TARGET_OUT))) 69 70# ShaderLang.cpp depends on the generated build_info.h 71$(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \ 72 $(GLSLANG_BUILD_INFO_H) 73 74LOCAL_MODULE:=glslang 75LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) 76LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) 77LOCAL_SRC_FILES:= \ 78 glslang/CInterface/glslang_c_interface.cpp \ 79 glslang/GenericCodeGen/CodeGen.cpp \ 80 glslang/GenericCodeGen/Link.cpp \ 81 glslang/HLSL/hlslAttributes.cpp \ 82 glslang/HLSL/hlslGrammar.cpp \ 83 glslang/HLSL/hlslOpMap.cpp \ 84 glslang/HLSL/hlslParseables.cpp \ 85 glslang/HLSL/hlslParseHelper.cpp \ 86 glslang/HLSL/hlslScanContext.cpp \ 87 glslang/HLSL/hlslTokenStream.cpp \ 88 glslang/MachineIndependent/attribute.cpp \ 89 glslang/MachineIndependent/Constant.cpp \ 90 glslang/MachineIndependent/glslang_tab.cpp \ 91 glslang/MachineIndependent/InfoSink.cpp \ 92 glslang/MachineIndependent/Initialize.cpp \ 93 glslang/MachineIndependent/Intermediate.cpp \ 94 glslang/MachineIndependent/intermOut.cpp \ 95 glslang/MachineIndependent/IntermTraverse.cpp \ 96 glslang/MachineIndependent/iomapper.cpp \ 97 glslang/MachineIndependent/limits.cpp \ 98 glslang/MachineIndependent/linkValidate.cpp \ 99 glslang/MachineIndependent/parseConst.cpp \ 100 glslang/MachineIndependent/ParseContextBase.cpp \ 101 glslang/MachineIndependent/ParseHelper.cpp \ 102 glslang/MachineIndependent/PoolAlloc.cpp \ 103 glslang/MachineIndependent/propagateNoContraction.cpp \ 104 glslang/MachineIndependent/reflection.cpp \ 105 glslang/MachineIndependent/RemoveTree.cpp \ 106 glslang/MachineIndependent/Scan.cpp \ 107 glslang/MachineIndependent/ShaderLang.cpp \ 108 glslang/MachineIndependent/SpirvIntrinsics.cpp \ 109 glslang/MachineIndependent/SymbolTable.cpp \ 110 glslang/MachineIndependent/Versions.cpp \ 111 glslang/MachineIndependent/preprocessor/PpAtom.cpp \ 112 glslang/MachineIndependent/preprocessor/PpContext.cpp \ 113 glslang/MachineIndependent/preprocessor/Pp.cpp \ 114 glslang/MachineIndependent/preprocessor/PpScanner.cpp \ 115 glslang/MachineIndependent/preprocessor/PpTokens.cpp 116LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ 117 $(LOCAL_PATH)/glslang/MachineIndependent \ 118 $(GLSLANG_GENERATED_INCLUDEDIR) \ 119 $(GLSLANG_OUT_PATH) 120LOCAL_STATIC_LIBRARIES:=OSDependent 121include $(BUILD_STATIC_LIBRARY) 122 123include $(CLEAR_VARS) 124 125# GlslangToSpv.cpp depends on the generated build_info.h 126$(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ 127 $(GLSLANG_BUILD_INFO_H) 128 129LOCAL_MODULE:=SPIRV 130LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) 131LOCAL_SRC_FILES:= \ 132 SPIRV/CInterface/spirv_c_interface.cpp \ 133 SPIRV/GlslangToSpv.cpp \ 134 SPIRV/InReadableOrder.cpp \ 135 SPIRV/Logger.cpp \ 136 SPIRV/SPVRemapper.cpp \ 137 SPIRV/SpvBuilder.cpp \ 138 SPIRV/SpvPostProcess.cpp \ 139 SPIRV/SpvTools.cpp \ 140 SPIRV/disassemble.cpp \ 141 SPIRV/doc.cpp 142LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ 143 $(LOCAL_PATH)/glslang/SPIRV \ 144 $(GLSLANG_GENERATED_INCLUDEDIR) 145LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/SPIRV 146LOCAL_STATIC_LIBRARIES:=glslang 147include $(BUILD_STATIC_LIBRARY) 148