1 | # Mesa 3-D graphics library
|
---|
2 | #
|
---|
3 | # Copyright (C) 2021 GlobalLogic Ukraine
|
---|
4 | # Copyright (C) 2021 Roman Stratiienko ([email protected])
|
---|
5 | #
|
---|
6 | # Permission is hereby granted, free of charge, to any person obtaining a
|
---|
7 | # copy of this software and associated documentation files (the "Software"),
|
---|
8 | # to deal in the Software without restriction, including without limitation
|
---|
9 | # the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
---|
10 | # and/or sell copies of the Software, and to permit persons to whom the
|
---|
11 | # Software is furnished to do so, subject to the following conditions:
|
---|
12 | #
|
---|
13 | # The above copyright notice and this permission notice shall be included
|
---|
14 | # in all copies or substantial portions of the Software.
|
---|
15 | #
|
---|
16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
---|
17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
---|
19 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
---|
20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
---|
21 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
---|
22 | # DEALINGS IN THE SOFTWARE.
|
---|
23 |
|
---|
24 | ifneq ($(filter true, $(BOARD_MESA3D_USES_MESON_BUILD)),)
|
---|
25 |
|
---|
26 | LOCAL_PATH := $(call my-dir)
|
---|
27 | MESA3D_TOP := $(dir $(LOCAL_PATH))
|
---|
28 |
|
---|
29 | LIBDRM_VERSION = $(shell cat external/libdrm/meson.build | grep -o "\<version\>\s*:\s*'\w*\.\w*\.\w*'" | grep -o "\w*\.\w*\.\w*" | head -1)
|
---|
30 |
|
---|
31 | MESA_VK_LIB_SUFFIX_amd := radeon
|
---|
32 | MESA_VK_LIB_SUFFIX_intel := intel
|
---|
33 | MESA_VK_LIB_SUFFIX_intel_hasvk := intel_hasvk
|
---|
34 | MESA_VK_LIB_SUFFIX_freedreno := freedreno
|
---|
35 | MESA_VK_LIB_SUFFIX_broadcom := broadcom
|
---|
36 | MESA_VK_LIB_SUFFIX_panfrost := panfrost
|
---|
37 | MESA_VK_LIB_SUFFIX_virtio := virtio
|
---|
38 | MESA_VK_LIB_SUFFIX_swrast := lvp
|
---|
39 |
|
---|
40 | include $(CLEAR_VARS)
|
---|
41 |
|
---|
42 | LOCAL_SHARED_LIBRARIES := libc libdl libdrm libm liblog libcutils libz libc++ libnativewindow libsync libhardware
|
---|
43 | LOCAL_STATIC_LIBRARIES := libexpat libarect libelf
|
---|
44 | LOCAL_HEADER_LIBRARIES := libnativebase_headers hwvulkan_headers
|
---|
45 | MESON_GEN_PKGCONFIGS := cutils expat hardware libdrm:$(LIBDRM_VERSION) nativewindow sync zlib:1.2.11 libelf
|
---|
46 | LOCAL_CFLAGS += $(BOARD_MESA3D_CFLAGS)
|
---|
47 |
|
---|
48 | ifneq ($(filter swrast,$(BOARD_MESA3D_GALLIUM_DRIVERS) $(BOARD_MESA3D_VULKAN_DRIVERS)),)
|
---|
49 | ifeq ($(BOARD_MESA3D_FORCE_SOFTPIPE),)
|
---|
50 | MESON_GEN_LLVM_STUB := true
|
---|
51 | endif
|
---|
52 | endif
|
---|
53 |
|
---|
54 | ifneq ($(filter zink,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
55 | LOCAL_SHARED_LIBRARIES += libvulkan
|
---|
56 | MESON_GEN_PKGCONFIGS += vulkan
|
---|
57 | endif
|
---|
58 |
|
---|
59 | ifneq ($(filter iris,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
60 | LOCAL_SHARED_LIBRARIES += libdrm_intel
|
---|
61 | MESON_GEN_PKGCONFIGS += libdrm_intel:$(LIBDRM_VERSION)
|
---|
62 | endif
|
---|
63 |
|
---|
64 | ifneq ($(filter radeonsi,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
65 | ifneq ($(MESON_GEN_LLVM_STUB),)
|
---|
66 | LOCAL_CFLAGS += -DFORCE_BUILD_AMDGPU # instructs LLVM to declare LLVMInitializeAMDGPU* functions
|
---|
67 | # The flag is required for the Android-x86 LLVM port that follows the AOSP LLVM porting rules
|
---|
68 | # https://osdn.net/projects/android-x86/scm/git/external-llvm-project
|
---|
69 | endif
|
---|
70 | endif
|
---|
71 |
|
---|
72 | ifneq ($(filter radeonsi amd,$(BOARD_MESA3D_GALLIUM_DRIVERS) $(BOARD_MESA3D_VULKAN_DRIVERS)),)
|
---|
73 | LOCAL_SHARED_LIBRARIES += libdrm_amdgpu
|
---|
74 | MESON_GEN_PKGCONFIGS += libdrm_amdgpu:$(LIBDRM_VERSION)
|
---|
75 | endif
|
---|
76 |
|
---|
77 | ifneq ($(filter radeonsi r300 r600,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
78 | LOCAL_SHARED_LIBRARIES += libdrm_radeon
|
---|
79 | MESON_GEN_PKGCONFIGS += libdrm_radeon:$(LIBDRM_VERSION)
|
---|
80 | endif
|
---|
81 |
|
---|
82 | ifneq ($(filter nouveau,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
83 | LOCAL_SHARED_LIBRARIES += libdrm_nouveau
|
---|
84 | MESON_GEN_PKGCONFIGS += libdrm_nouveau:$(LIBDRM_VERSION)
|
---|
85 | endif
|
---|
86 |
|
---|
87 | ifneq ($(filter d3d12,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
88 | LOCAL_HEADER_LIBRARIES += DirectX-Headers
|
---|
89 | LOCAL_STATIC_LIBRARIES += DirectX-Guids
|
---|
90 | MESON_GEN_PKGCONFIGS += DirectX-Headers
|
---|
91 | endif
|
---|
92 |
|
---|
93 | ifneq ($(MESON_GEN_LLVM_STUB),)
|
---|
94 | MESON_LLVM_VERSION := 12.0.0
|
---|
95 | LOCAL_SHARED_LIBRARIES += libLLVM12
|
---|
96 | endif
|
---|
97 |
|
---|
98 | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 30; echo $$?), 0)
|
---|
99 | LOCAL_SHARED_LIBRARIES += \
|
---|
100 | [email protected] \
|
---|
101 | libgralloctypes \
|
---|
102 | libhidlbase \
|
---|
103 | libutils
|
---|
104 |
|
---|
105 | MESON_GEN_PKGCONFIGS += android.hardware.graphics.mapper:4.0
|
---|
106 | endif
|
---|
107 |
|
---|
108 | __MY_SHARED_LIBRARIES := $(LOCAL_SHARED_LIBRARIES)
|
---|
109 |
|
---|
110 | ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 30; echo $$?), 0)
|
---|
111 | MESA_LIBGBM_NAME := libgbm_mesa
|
---|
112 | else
|
---|
113 | MESA_LIBGBM_NAME := libgbm
|
---|
114 | endif
|
---|
115 |
|
---|
116 | ifeq ($(TARGET_IS_64_BIT),true)
|
---|
117 | LOCAL_MULTILIB := 64
|
---|
118 | else
|
---|
119 | LOCAL_MULTILIB := 32
|
---|
120 | endif
|
---|
121 | include $(LOCAL_PATH)/mesa3d_cross.mk
|
---|
122 |
|
---|
123 | ifdef TARGET_2ND_ARCH
|
---|
124 | LOCAL_MULTILIB := 32
|
---|
125 | include $(LOCAL_PATH)/mesa3d_cross.mk
|
---|
126 | endif
|
---|
127 |
|
---|
128 | #-------------------------------------------------------------------------------
|
---|
129 |
|
---|
130 | # $1: name
|
---|
131 | # $2: symlink suffix
|
---|
132 | # $3: subdir
|
---|
133 | # $4: source prebuilt
|
---|
134 | # $5: export headers
|
---|
135 | define mesa3d-lib
|
---|
136 | include $(CLEAR_VARS)
|
---|
137 | LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
---|
138 | LOCAL_MODULE := $1
|
---|
139 | LOCAL_VENDOR_MODULE := true
|
---|
140 | LOCAL_MODULE_RELATIVE_PATH := $3
|
---|
141 | LOCAL_PREBUILT_MODULE_FILE := $($4)
|
---|
142 | LOCAL_MULTILIB := first
|
---|
143 | LOCAL_CHECK_ELF_FILES := false
|
---|
144 | LOCAL_MODULE_SUFFIX := .so
|
---|
145 | LOCAL_MODULE_SYMLINKS := $1$2
|
---|
146 | LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
---|
147 | LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
---|
148 | include $(BUILD_PREBUILT)
|
---|
149 |
|
---|
150 | ifdef TARGET_2ND_ARCH
|
---|
151 | include $(CLEAR_VARS)
|
---|
152 | LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
---|
153 | LOCAL_MODULE := $1
|
---|
154 | LOCAL_VENDOR_MODULE := true
|
---|
155 | LOCAL_MODULE_RELATIVE_PATH := $3
|
---|
156 | LOCAL_PREBUILT_MODULE_FILE := $(2ND_$4)
|
---|
157 | LOCAL_MULTILIB := 32
|
---|
158 | LOCAL_CHECK_ELF_FILES := false
|
---|
159 | LOCAL_MODULE_SUFFIX := .so
|
---|
160 | LOCAL_MODULE_SYMLINKS := $1$2
|
---|
161 | LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
---|
162 | LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
---|
163 | include $(BUILD_PREBUILT)
|
---|
164 | endif
|
---|
165 | endef
|
---|
166 |
|
---|
167 | ifneq ($(strip $(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
---|
168 | # Module 'libgallium_dri', produces '/vendor/lib{64}/dri/libgallium_dri.so'
|
---|
169 | # This module also trigger DRI symlinks creation process
|
---|
170 | $(eval $(call mesa3d-lib,libgallium_dri,.so.0,dri,MESA3D_GALLIUM_DRI_BIN))
|
---|
171 | # Module 'libglapi', produces '/vendor/lib{64}/libglapi.so'
|
---|
172 | $(eval $(call mesa3d-lib,libglapi,.so.0,,MESA3D_LIBGLAPI_BIN))
|
---|
173 |
|
---|
174 | # Module 'libEGL_mesa', produces '/vendor/lib{64}/egl/libEGL_mesa.so'
|
---|
175 | $(eval $(call mesa3d-lib,libEGL_mesa,.so.1,egl,MESA3D_LIBEGL_BIN))
|
---|
176 | # Module 'libGLESv1_CM_mesa', produces '/vendor/lib{64}/egl/libGLESv1_CM_mesa.so'
|
---|
177 | $(eval $(call mesa3d-lib,libGLESv1_CM_mesa,.so.1,egl,MESA3D_LIBGLESV1_BIN))
|
---|
178 | # Module 'libGLESv2_mesa', produces '/vendor/lib{64}/egl/libGLESv2_mesa.so'
|
---|
179 | $(eval $(call mesa3d-lib,libGLESv2_mesa,.so.2,egl,MESA3D_LIBGLESV2_BIN))
|
---|
180 | endif
|
---|
181 |
|
---|
182 | # Modules 'vulkan.{driver_name}', produces '/vendor/lib{64}/hw/vulkan.{driver_name}.so' HAL
|
---|
183 | $(foreach driver,$(BOARD_MESA3D_VULKAN_DRIVERS), \
|
---|
184 | $(eval $(call mesa3d-lib,vulkan.$(MESA_VK_LIB_SUFFIX_$(driver)),.so.0,hw,MESA3D_VULKAN_$(driver)_BIN)))
|
---|
185 |
|
---|
186 | ifneq ($(filter true, $(BOARD_MESA3D_BUILD_LIBGBM)),)
|
---|
187 | # Modules 'libgbm', produces '/vendor/lib{64}/libgbm.so'
|
---|
188 | $(eval $(call mesa3d-lib,$(MESA_LIBGBM_NAME),.so.1,,MESA3D_LIBGBM_BIN,$(MESA3D_TOP)/src/gbm/main))
|
---|
189 | endif
|
---|
190 |
|
---|
191 | #-------------------------------------------------------------------------------
|
---|
192 |
|
---|
193 | endif
|
---|