1# Copyright © 2016 Red Hat. 2# Copyright © 2016 Mauro Rossi <issor.oruam@gmail.com> 3# 4# Permission is hereby granted, free of charge, to any person obtaining a 5# copy of this software and associated documentation files (the "Software"), 6# to deal in the Software without restriction, including without limitation 7# the rights to use, copy, modify, merge, publish, distribute, sublicense, 8# and/or sell copies of the Software, and to permit persons to whom the 9# Software is furnished to do so, subject to the following conditions: 10# 11# The above copyright notice and this permission notice (including the next 12# paragraph) shall be included in all copies or substantial portions of the 13# Software. 14# 15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21# IN THE SOFTWARE. 22 23ifeq ($(MESA_ENABLE_LLVM),true) 24 25# --------------------------------------- 26# Build libmesa_amd_common 27# --------------------------------------- 28 29include $(CLEAR_VARS) 30 31LOCAL_MODULE := libmesa_amd_common 32LOCAL_LICENSE_KINDS := SPDX-license-identifier-ISC SPDX-license-identifier-MIT 33LOCAL_LICENSE_CONDITIONS := notice 34LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../LICENSE 35 36LOCAL_SRC_FILES := \ 37 $(AMD_COMMON_FILES) \ 38 $(AMD_COMMON_LLVM_FILES) \ 39 $(AMD_DEBUG_FILES) 40 41LOCAL_CFLAGS += -DFORCE_BUILD_AMDGPU # instructs LLVM to declare LLVMInitializeAMDGPU* functions 42 43# generate sources 44LOCAL_MODULE_CLASS := STATIC_LIBRARIES 45intermediates := $(call local-generated-sources-dir) 46LOCAL_GENERATED_SOURCES := $(addprefix $(intermediates)/, $(AMD_GENERATED_FILES)) 47 48AMD_JSON_FILES := \ 49 $(LOCAL_PATH)/registers/gfx6.json \ 50 $(LOCAL_PATH)/registers/gfx7.json \ 51 $(LOCAL_PATH)/registers/gfx8.json \ 52 $(LOCAL_PATH)/registers/gfx81.json \ 53 $(LOCAL_PATH)/registers/gfx9.json \ 54 $(LOCAL_PATH)/registers/gfx10.json \ 55 $(LOCAL_PATH)/registers/gfx103.json \ 56 $(LOCAL_PATH)/registers/pkt3.json \ 57 $(LOCAL_PATH)/registers/gfx10-rsrc.json \ 58 $(LOCAL_PATH)/registers/registers-manually-defined.json 59 60SID_TABLES := $(LOCAL_PATH)/common/sid_tables.py 61 62SID_TABLES_INPUTS := \ 63 $(LOCAL_PATH)/common/sid.h \ 64 $(AMD_JSON_FILES) 65 66$(intermediates)/common/sid_tables.h: $(SID_TABLES) $(SID_TABLES_INPUTS) 67 @mkdir -p $(dir $@) 68 @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))" 69 $(hide) $(MESA_PYTHON2) $(SID_TABLES) $(SID_TABLES_INPUTS) > $@ || ($(RM) $@; false) 70 71AMDGFXREGS := $(LOCAL_PATH)/registers/makeregheader.py 72 73AMDGFXREGS_INPUTS := \ 74 $(AMD_JSON_FILES) 75 76$(intermediates)/common/amdgfxregs.h: $(AMDGFXREGS) $(AMDGFXREGS_INPUTS) 77 @mkdir -p $(dir $@) 78 @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))" 79 $(hide) $(MESA_PYTHON2) $(AMDGFXREGS) $(AMDGFXREGS_INPUTS) --sort address --guard AMDGFXREGS_H > $@ || ($(RM) $@; false) 80 81GEN10_FORMAT_TABLE_INPUTS := \ 82 $(MESA_TOP)/src/util/format/u_format.csv \ 83 $(MESA_TOP)/src/amd/registers/gfx10-rsrc.json 84 85GEN10_FORMAT_TABLE_DEP := \ 86 $(MESA_TOP)/src/amd/registers/regdb.py 87 88GEN10_FORMAT_TABLE := $(LOCAL_PATH)/common/gfx10_format_table.py 89 90$(intermediates)/common/gfx10_format_table.c: $(GEN10_FORMAT_TABLE) $(GEN10_FORMAT_TABLE_INPUTS) $(GEN10_FORMAT_TABLE_DEP) 91 @mkdir -p $(dir $@) 92 @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))" 93 $(hide) $(MESA_PYTHON2) $(GEN10_FORMAT_TABLE) $(GEN10_FORMAT_TABLE_INPUTS) > $@ || ($(RM) $@; false) 94 95LOCAL_C_INCLUDES := \ 96 $(MESA_TOP)/include \ 97 $(MESA_TOP)/src \ 98 $(MESA_TOP)/src/amd/common \ 99 $(MESA_TOP)/src/amd/llvm \ 100 $(MESA_TOP)/src/compiler \ 101 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir \ 102 $(MESA_TOP)/src/gallium/include \ 103 $(MESA_TOP)/src/gallium/auxiliary \ 104 $(MESA_TOP)/src/mesa \ 105 $(intermediates)/common 106 107LOCAL_EXPORT_C_INCLUDE_DIRS := \ 108 $(LOCAL_PATH)/common \ 109 $(LOCAL_PATH)/llvm \ 110 $(intermediates)/common 111 112LOCAL_SHARED_LIBRARIES := \ 113 libdrm_amdgpu 114 115LOCAL_STATIC_LIBRARIES := \ 116 libmesa_nir 117 118LOCAL_WHOLE_STATIC_LIBRARIES := \ 119 libelf 120 121$(call mesa-build-with-llvm) 122 123include $(MESA_COMMON_MK) 124include $(BUILD_STATIC_LIBRARY) 125 126endif # MESA_ENABLE_LLVM == true 127