1# Copyright © 2017 Intel Corporation 2# 3# Permission is hereby granted, free of charge, to any person obtaining a 4# copy of this software and associated documentation files (the "Software"), 5# to deal in the Software without restriction, including without limitation 6# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7# and/or sell copies of the Software, and to permit persons to whom the 8# Software is furnished to do so, subject to the following conditions: 9# 10# The above copyright notice and this permission notice shall be included 11# in all copies or substantial portions of the Software. 12# 13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 16# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19# DEALINGS IN THE SOFTWARE. 20 21LOCAL_PATH := $(call my-dir) 22 23include $(CLEAR_VARS) 24include $(LOCAL_PATH)/Makefile.sources 25 26VULKAN_COMMON_INCLUDES := \ 27 $(MESA_TOP)/include \ 28 $(MESA_TOP)/src/mapi \ 29 $(MESA_TOP)/src/gallium/auxiliary \ 30 $(MESA_TOP)/src/gallium/include \ 31 $(MESA_TOP)/src/mesa \ 32 $(MESA_TOP)/src/vulkan/wsi \ 33 $(MESA_TOP)/src/vulkan/util \ 34 $(MESA_TOP)/src/intel \ 35 $(MESA_TOP)/include/drm-uapi \ 36 $(MESA_TOP)/src/intel/vulkan \ 37 frameworks/native/vulkan/include 38 39# libmesa_anv_entrypoints with header and dummy.c 40# 41# This static library is built to pull entrypoints header 42# for multiple gen specific build targets below. The c file 43# is generated separately for libmesa_vulkan_common to avoid 44# duplicate symbols when linking the anv libraries. 45 46include $(CLEAR_VARS) 47LOCAL_MODULE := libmesa_anv_entrypoints 48LOCAL_MODULE_CLASS := STATIC_LIBRARIES 49 50intermediates := $(call local-generated-sources-dir) 51prebuilt_intermediates := $(MESA_TOP)/prebuilt-intermediates 52 53LOCAL_C_INCLUDES := \ 54 $(VULKAN_COMMON_INCLUDES) 55 56LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_entrypoints.h 57LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/dummy.c 58 59$(intermediates)/vulkan/dummy.c: 60 @mkdir -p $(dir $@) 61 @echo "Gen Dummy: $(PRIVATE_MODULE) <= $(notdir $(@))" 62 $(hide) touch $@ 63 64$(intermediates)/vulkan/anv_entrypoints.h: $(prebuilt_intermediates)/vulkan/anv_entrypoints.h 65 @mkdir -p $(dir $@) 66 @cp -f $< $@ 67 68LOCAL_EXPORT_C_INCLUDE_DIRS := \ 69 $(intermediates) 70 71LOCAL_SHARED_LIBRARIES := libdrm 72 73include $(MESA_COMMON_MK) 74include $(BUILD_STATIC_LIBRARY) 75 76ANV_INCLUDES := \ 77 $(VULKAN_COMMON_INCLUDES) \ 78 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_anv_entrypoints,,)/vulkan \ 79 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir \ 80 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_vulkan_common,,)/vulkan \ 81 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_vulkan_util,,)/util 82 83ANV_SHARED_LIBRARIES := libdrm 84 85ifeq ($(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7),) 86ANV_HEADER_LIBRARIES += libcutils_headers libnativebase_headers libsystem_headers 87ANV_STATIC_LIBRARIES += libarect 88ANV_SHARED_LIBRARIES += libnativewindow 89endif 90 91# 92# libanv for gen7 93# 94 95include $(CLEAR_VARS) 96LOCAL_MODULE := libmesa_anv_gen7 97LOCAL_MODULE_CLASS := STATIC_LIBRARIES 98 99LOCAL_SRC_FILES := $(VULKAN_GEN7_FILES) 100LOCAL_CFLAGS := -DGEN_VERSIONx10=70 101 102LOCAL_C_INCLUDES := $(ANV_INCLUDES) 103 104LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml 105 106LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 107LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 108LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 109 110include $(MESA_COMMON_MK) 111include $(BUILD_STATIC_LIBRARY) 112 113# 114# libanv for gen75 115# 116 117include $(CLEAR_VARS) 118LOCAL_MODULE := libmesa_anv_gen75 119LOCAL_MODULE_CLASS := STATIC_LIBRARIES 120 121LOCAL_SRC_FILES := $(VULKAN_GEN75_FILES) 122LOCAL_CFLAGS := -DGEN_VERSIONx10=75 123 124LOCAL_C_INCLUDES := $(ANV_INCLUDES) 125 126LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml 127 128LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 129LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 130LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 131 132include $(MESA_COMMON_MK) 133include $(BUILD_STATIC_LIBRARY) 134 135# 136# libanv for gen8 137# 138 139include $(CLEAR_VARS) 140LOCAL_MODULE := libmesa_anv_gen8 141LOCAL_MODULE_CLASS := STATIC_LIBRARIES 142 143LOCAL_SRC_FILES := $(VULKAN_GEN8_FILES) 144LOCAL_CFLAGS := -DGEN_VERSIONx10=80 145 146LOCAL_C_INCLUDES := $(ANV_INCLUDES) 147 148LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml 149 150LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 151LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 152LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 153 154include $(MESA_COMMON_MK) 155include $(BUILD_STATIC_LIBRARY) 156 157# 158# libanv for gen9 159# 160 161include $(CLEAR_VARS) 162LOCAL_MODULE := libmesa_anv_gen9 163LOCAL_MODULE_CLASS := STATIC_LIBRARIES 164 165LOCAL_SRC_FILES := $(VULKAN_GEN9_FILES) 166LOCAL_CFLAGS := -DGEN_VERSIONx10=90 167 168LOCAL_C_INCLUDES := $(ANV_INCLUDES) 169 170LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml 171 172LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 173LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 174LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 175 176include $(MESA_COMMON_MK) 177include $(BUILD_STATIC_LIBRARY) 178 179# 180# libanv for gen10 181# 182 183include $(CLEAR_VARS) 184LOCAL_MODULE := libmesa_anv_gen10 185LOCAL_MODULE_CLASS := STATIC_LIBRARIES 186 187LOCAL_SRC_FILES := $(VULKAN_GEN10_FILES) 188LOCAL_CFLAGS := -DGEN_VERSIONx10=100 189 190LOCAL_C_INCLUDES := $(ANV_INCLUDES) 191 192LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml 193 194LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 195LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 196LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 197 198include $(MESA_COMMON_MK) 199include $(BUILD_STATIC_LIBRARY) 200 201# 202# libmesa_vulkan_common 203# 204 205include $(CLEAR_VARS) 206LOCAL_MODULE := libmesa_vulkan_common 207LOCAL_MODULE_CLASS := STATIC_LIBRARIES 208 209intermediates := $(call local-generated-sources-dir) 210prebuilt_intermediates := $(MESA_TOP)/prebuilt-intermediates 211 212LOCAL_SRC_FILES := $(VULKAN_FILES) 213 214LOCAL_C_INCLUDES := \ 215 $(ANV_INCLUDES) \ 216 $(MESA_TOP)/src/compiler 217 218LOCAL_WHOLE_STATIC_LIBRARIES := \ 219 libmesa_anv_entrypoints \ 220 libmesa_genxml \ 221 libmesa_vulkan_util 222 223# The rule generates both C and H files, but due to some strange 224# reason generating the files once leads to link-time issues. 225# Work around create them here as well - we're safe from race 226# conditions since they are stored in another location. 227 228LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_entrypoints.c 229LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_extensions.c 230LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_extensions.h 231 232$(intermediates)/vulkan/anv_entrypoints.c: $(prebuilt_intermediates)/vulkan/anv_entrypoints.c 233 @mkdir -p $(dir $@) 234 @cp -f $< $@ 235 236$(intermediates)/vulkan/anv_extensions.c: $(prebuilt_intermediates)/vulkan/anv_extensions.c 237 @mkdir -p $(dir $@) 238 @cp -f $< $@ 239 240$(intermediates)/vulkan/anv_extensions.h: $(prebuilt_intermediates)/vulkan/anv_extensions.h 241 @mkdir -p $(dir $@) 242 @cp -f $< $@ 243 244LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) 245LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 246LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) 247 248include $(MESA_COMMON_MK) 249include $(BUILD_STATIC_LIBRARY) 250 251# 252# FIXME: Defining a vulkan HAL for all TARGET_BOARD_PLATFORM, when it can 253# only work for Intel platforms, is just wrong. For now, just omit 254# module unless BOARD_GPU_DRIVERS contains i965. Even this is not 255# correct, but it's difficult to determine what the 'right' list of 256# TARGET_BOARD_PLATFORM to check really are.. 257# 258ifneq ($(findstring i965,$(BOARD_GPU_DRIVERS)),) 259 260# 261# libvulkan_intel 262# 263 264include $(CLEAR_VARS) 265 266LOCAL_MODULE := vulkan.$(TARGET_BOARD_PLATFORM) 267LOCAL_MODULE_CLASS := SHARED_LIBRARIES 268LOCAL_PROPRIETARY_MODULE := true 269LOCAL_MODULE_RELATIVE_PATH := hw 270 271LOCAL_LDFLAGS += -Wl,--build-id=sha1 272 273LOCAL_SRC_FILES := \ 274 $(VULKAN_GEM_FILES) \ 275 $(VULKAN_ANDROID_FILES) 276 277LOCAL_C_INCLUDES := \ 278 $(VULKAN_COMMON_INCLUDES) \ 279 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_anv_entrypoints,,)/vulkan \ 280 $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_vulkan_common,,)/vulkan 281 282LOCAL_EXPORT_C_INCLUDE_DIRS := $(MESA_TOP)/src/intel/vulkan 283 284LOCAL_WHOLE_STATIC_LIBRARIES := \ 285 libmesa_nir \ 286 libmesa_isl \ 287 libmesa_glsl \ 288 libmesa_util \ 289 libmesa_blorp \ 290 libmesa_compiler \ 291 libmesa_intel_common \ 292 libmesa_vulkan_common \ 293 libmesa_anv_gen7 \ 294 libmesa_anv_gen75 \ 295 libmesa_anv_gen8 \ 296 libmesa_anv_gen9 \ 297 libmesa_anv_gen10 \ 298 libmesa_intel_compiler \ 299 libmesa_anv_entrypoints 300 301LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES) libhardware_headers 302LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES) 303LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES) libz libsync liblog 304 305include $(MESA_COMMON_MK) 306include $(BUILD_SHARED_LIBRARY) 307 308endif # BOARD_GPU_DRIVERS contains 'i965' 309