1b8e80941Smrg# Copyright © 2018 Advanced Micro Devices, Inc. 2b8e80941Smrg# Copyright © 2018 Mauro Rossi issor.oruam@gmail.com 3b8e80941Smrg 4b8e80941Smrg# Permission is hereby granted, free of charge, to any person obtaining a 5b8e80941Smrg# copy of this software and associated documentation files (the "Software"), 6b8e80941Smrg# to deal in the Software without restriction, including without limitation 7b8e80941Smrg# the rights to use, copy, modify, merge, publish, distribute, sublicense, 8b8e80941Smrg# and/or sell copies of the Software, and to permit persons to whom the 9b8e80941Smrg# Software is furnished to do so, subject to the following conditions: 10b8e80941Smrg# 11b8e80941Smrg# The above copyright notice and this permission notice (including the next 12b8e80941Smrg# paragraph) shall be included in all copies or substantial portions of the 13b8e80941Smrg# Software. 14b8e80941Smrg# 15b8e80941Smrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16b8e80941Smrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17b8e80941Smrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18b8e80941Smrg# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19b8e80941Smrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20b8e80941Smrg# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21b8e80941Smrg# IN THE SOFTWARE. 22b8e80941Smrg 23b8e80941SmrgLOCAL_PATH := $(call my-dir) 24b8e80941Smrg 25b8e80941Smrg# get VULKAN_FILES and VULKAN_GENERATED_FILES 26b8e80941Smrginclude $(LOCAL_PATH)/Makefile.sources 27b8e80941Smrg 28b8e80941Smrg# The gallium includes are for the util/u_math.h include from main/macros.h 29b8e80941Smrg 30b8e80941SmrgRADV_COMMON_INCLUDES := \ 31b8e80941Smrg $(MESA_TOP)/include \ 32b8e80941Smrg $(MESA_TOP)/src/ \ 33b8e80941Smrg $(MESA_TOP)/src/vulkan/wsi \ 34b8e80941Smrg $(MESA_TOP)/src/vulkan/util \ 35b8e80941Smrg $(MESA_TOP)/src/amd \ 36b8e80941Smrg $(MESA_TOP)/src/amd/common \ 37b8e80941Smrg $(MESA_TOP)/src/compiler \ 38b8e80941Smrg $(MESA_TOP)/src/mapi \ 39b8e80941Smrg $(MESA_TOP)/src/mesa \ 40b8e80941Smrg $(MESA_TOP)/src/mesa/drivers/dri/common \ 41b8e80941Smrg $(MESA_TOP)/src/gallium/auxiliary \ 42b8e80941Smrg $(MESA_TOP)/src/gallium/include \ 43b8e80941Smrg frameworks/native/vulkan/include 44b8e80941Smrg 45b8e80941SmrgRADV_SHARED_LIBRARIES := libdrm_amdgpu 46b8e80941Smrg 47b8e80941Smrgifeq ($(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7),) 48b8e80941SmrgRADV_SHARED_LIBRARIES += libnativewindow 49b8e80941Smrgendif 50b8e80941Smrg 51b8e80941Smrg# 52b8e80941Smrg# libmesa_radv_common 53b8e80941Smrg# 54b8e80941Smrg 55b8e80941Smrginclude $(CLEAR_VARS) 56b8e80941SmrgLOCAL_MODULE := libmesa_radv_common 57b8e80941SmrgLOCAL_MODULE_CLASS := STATIC_LIBRARIES 58b8e80941Smrg 59b8e80941Smrgintermediates := $(call local-generated-sources-dir) 60b8e80941Smrg 61b8e80941SmrgLOCAL_SRC_FILES := \ 62b8e80941Smrg $(VULKAN_FILES) 63b8e80941Smrg 64b8e80941SmrgLOCAL_CFLAGS += -DFORCE_BUILD_AMDGPU # instructs LLVM to declare LLVMInitializeAMDGPU* functions 65b8e80941SmrgLOCAL_CFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR 66b8e80941Smrg 67b8e80941Smrg$(call mesa-build-with-llvm) 68b8e80941Smrg 69b8e80941SmrgLOCAL_C_INCLUDES := \ 70b8e80941Smrg $(RADV_COMMON_INCLUDES) \ 71b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_amd_common,,) \ 72b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir \ 73b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_radv_common,,) \ 74b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_vulkan_util,,)/util \ 75b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_util,,) 76b8e80941Smrg 77b8e80941SmrgLOCAL_WHOLE_STATIC_LIBRARIES := \ 78b8e80941Smrg libmesa_vulkan_util \ 79b8e80941Smrg libmesa_git_sha1 80b8e80941Smrg 81b8e80941SmrgLOCAL_GENERATED_SOURCES += $(intermediates)/radv_entrypoints.c 82b8e80941SmrgLOCAL_GENERATED_SOURCES += $(intermediates)/radv_entrypoints.h 83b8e80941SmrgLOCAL_GENERATED_SOURCES += $(intermediates)/radv_extensions.c 84b8e80941SmrgLOCAL_GENERATED_SOURCES += $(intermediates)/radv_extensions.h 85b8e80941SmrgLOCAL_GENERATED_SOURCES += $(intermediates)/vk_format_table.c 86b8e80941Smrg 87b8e80941SmrgRADV_ENTRYPOINTS_SCRIPT := $(MESA_TOP)/src/amd/vulkan/radv_entrypoints_gen.py 88b8e80941SmrgRADV_EXTENSIONS_SCRIPT := $(MESA_TOP)/src/amd/vulkan/radv_extensions.py 89b8e80941SmrgVK_FORMAT_TABLE_SCRIPT := $(MESA_TOP)/src/amd/vulkan/vk_format_table.py 90b8e80941SmrgVK_FORMAT_PARSE_SCRIPT := $(MESA_TOP)/src/amd/vulkan/vk_format_parse.py 91b8e80941Smrg 92b8e80941Smrgvulkan_api_xml = $(MESA_TOP)/src/vulkan/registry/vk.xml 93b8e80941Smrgvk_format_layout_csv = $(MESA_TOP)/src/amd/vulkan/vk_format_layout.csv 94b8e80941Smrg 95b8e80941Smrg$(intermediates)/radv_entrypoints.c: $(RADV_ENTRYPOINTS_SCRIPT) \ 96b8e80941Smrg $(RADV_EXTENSIONS_SCRIPT) \ 97b8e80941Smrg $(vulkan_api_xml) 98b8e80941Smrg @mkdir -p $(dir $@) 99b8e80941Smrg $(MESA_PYTHON2) $(RADV_ENTRYPOINTS_SCRIPT) \ 100b8e80941Smrg --xml $(vulkan_api_xml) \ 101b8e80941Smrg --outdir $(dir $@) 102b8e80941Smrg 103b8e80941Smrg$(intermediates)/radv_entrypoints.h: $(intermediates)/radv_entrypoints.c 104b8e80941Smrg 105b8e80941Smrg$(intermediates)/radv_extensions.c: $(RADV_EXTENSIONS_SCRIPT) $(vulkan_api_xml) 106b8e80941Smrg @mkdir -p $(dir $@) 107b8e80941Smrg $(MESA_PYTHON2) $(RADV_EXTENSIONS_SCRIPT) \ 108b8e80941Smrg --xml $(vulkan_api_xml) \ 109b8e80941Smrg --out-c $@ \ 110b8e80941Smrg --out-h $(addsuffix .h,$(basename $@)) 111b8e80941Smrg 112b8e80941Smrg$(intermediates)/radv_extensions.h: $(intermediates)/radv_extensions.c 113b8e80941Smrg 114b8e80941Smrg$(intermediates)/vk_format_table.c: $(VK_FORMAT_TABLE_SCRIPT) \ 115b8e80941Smrg $(VK_FORMAT_PARSE_SCRIPT) \ 116b8e80941Smrg $(vk_format_layout_csv) 117b8e80941Smrg @mkdir -p $(dir $@) 118b8e80941Smrg $(MESA_PYTHON2) $(VK_FORMAT_TABLE_SCRIPT) $(vk_format_layout_csv) > $@ 119b8e80941Smrg 120b8e80941SmrgLOCAL_SHARED_LIBRARIES += $(RADV_SHARED_LIBRARIES) 121b8e80941Smrg 122b8e80941SmrgLOCAL_EXPORT_C_INCLUDE_DIRS := \ 123b8e80941Smrg $(MESA_TOP)/src/amd/vulkan \ 124b8e80941Smrg $(intermediates) 125b8e80941Smrg 126b8e80941Smrginclude $(MESA_COMMON_MK) 127b8e80941Smrginclude $(BUILD_STATIC_LIBRARY) 128b8e80941Smrg 129b8e80941Smrg# 130b8e80941Smrg# libvulkan_radeon 131b8e80941Smrg# 132b8e80941Smrg 133b8e80941Smrginclude $(CLEAR_VARS) 134b8e80941Smrg 135b8e80941SmrgLOCAL_MODULE := vulkan.radv 136b8e80941SmrgLOCAL_MODULE_CLASS := SHARED_LIBRARIES 137b8e80941SmrgLOCAL_PROPRIETARY_MODULE := true 138b8e80941SmrgLOCAL_MODULE_RELATIVE_PATH := hw 139b8e80941Smrg 140b8e80941SmrgLOCAL_LDFLAGS += -Wl,--build-id=sha1 141b8e80941Smrg 142b8e80941SmrgLOCAL_SRC_FILES := \ 143b8e80941Smrg $(VULKAN_ANDROID_FILES) 144b8e80941Smrg 145b8e80941SmrgLOCAL_CFLAGS += -DFORCE_BUILD_AMDGPU # instructs LLVM to declare LLVMInitializeAMDGPU* functions 146b8e80941SmrgLOCAL_CFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR 147b8e80941Smrg 148b8e80941Smrg$(call mesa-build-with-llvm) 149b8e80941Smrg 150b8e80941SmrgLOCAL_C_INCLUDES := \ 151b8e80941Smrg $(RADV_COMMON_INCLUDES) \ 152b8e80941Smrg $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_radv_common,,) 153b8e80941Smrg 154b8e80941SmrgLOCAL_EXPORT_C_INCLUDE_DIRS := \ 155b8e80941Smrg $(MESA_TOP)/src/amd/vulkan \ 156b8e80941Smrg $(intermediates) 157b8e80941Smrg 158b8e80941SmrgLOCAL_WHOLE_STATIC_LIBRARIES := \ 159b8e80941Smrg libmesa_util \ 160b8e80941Smrg libmesa_nir \ 161b8e80941Smrg libmesa_glsl \ 162b8e80941Smrg libmesa_compiler \ 163b8e80941Smrg libmesa_amdgpu_addrlib \ 164b8e80941Smrg libmesa_amd_common \ 165b8e80941Smrg libmesa_radv_common 166b8e80941Smrg 167b8e80941SmrgLOCAL_SHARED_LIBRARIES += $(RADV_SHARED_LIBRARIES) libz libsync liblog 168b8e80941Smrg 169b8e80941Smrg# If Android version >=8 MESA should static link libexpat else should dynamic link 170b8e80941Smrgifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 27; echo $$?), 0) 171b8e80941SmrgLOCAL_STATIC_LIBRARIES := \ 172b8e80941Smrg libexpat 173b8e80941Smrgelse 174b8e80941SmrgLOCAL_SHARED_LIBRARIES += \ 175b8e80941Smrg libexpat 176b8e80941Smrgendif 177b8e80941Smrg 178b8e80941Smrginclude $(MESA_COMMON_MK) 179b8e80941Smrginclude $(BUILD_SHARED_LIBRARY) 180