• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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