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