1*61046927SAndroid Build Coastguard Worker# Copyright © 2017 Intel Corporation 2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Workerfiles_vulkan_wsi = files('wsi_common.c') 5*61046927SAndroid Build Coastguard Workerlinks_vulkan_wsi = [] 6*61046927SAndroid Build Coastguard Workerplatform_deps = [] 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Workerif dep_libdrm.found() 9*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_drm.c') 10*61046927SAndroid Build Coastguard Workerendif 11*61046927SAndroid Build Coastguard Worker 12*61046927SAndroid Build Coastguard Workerif with_platform_x11 13*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_x11.c') 14*61046927SAndroid Build Coastguard Workerendif 15*61046927SAndroid Build Coastguard Worker 16*61046927SAndroid Build Coastguard Workerif with_platform_wayland 17*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_wayland.c') 18*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += wp_files['linux-dmabuf-unstable-v1'] 19*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += wp_files['presentation-time'] 20*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += wp_files['tearing-control-v1'] 21*61046927SAndroid Build Coastguard Worker links_vulkan_wsi += libloader_wayland_helper 22*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += wp_files['linux-drm-syncobj-v1'] 23*61046927SAndroid Build Coastguard Workerendif 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Workerif with_platform_windows 26*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_win32.cpp') 27*61046927SAndroid Build Coastguard Worker platform_deps += dep_dxheaders 28*61046927SAndroid Build Coastguard Workerelse 29*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_headless.c') 30*61046927SAndroid Build Coastguard Workerendif 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Workerif with_platform_macos 33*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_metal.c', 'wsi_common_metal_layer.m') 34*61046927SAndroid Build Coastguard Workerendif 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Workerif system_has_kms_drm and not with_platform_android 37*61046927SAndroid Build Coastguard Worker files_vulkan_wsi += files('wsi_common_display.c') 38*61046927SAndroid Build Coastguard Workerendif 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Workerwsi_entrypoints = custom_target( 41*61046927SAndroid Build Coastguard Worker 'wsi_entrypoints', 42*61046927SAndroid Build Coastguard Worker input : [vk_entrypoints_gen, vk_api_xml], 43*61046927SAndroid Build Coastguard Worker output : ['wsi_common_entrypoints.h', 'wsi_common_entrypoints.c'], 44*61046927SAndroid Build Coastguard Worker command : [ 45*61046927SAndroid Build Coastguard Worker prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak', 46*61046927SAndroid Build Coastguard Worker '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'wsi', 47*61046927SAndroid Build Coastguard Worker '--beta', with_vulkan_beta.to_string() 48*61046927SAndroid Build Coastguard Worker ], 49*61046927SAndroid Build Coastguard Worker depend_files : vk_entrypoints_gen_depend_files, 50*61046927SAndroid Build Coastguard Worker) 51*61046927SAndroid Build Coastguard Worker 52*61046927SAndroid Build Coastguard Workerlibvulkan_wsi = static_library( 53*61046927SAndroid Build Coastguard Worker 'vulkan_wsi', 54*61046927SAndroid Build Coastguard Worker [files_vulkan_wsi, wsi_entrypoints], 55*61046927SAndroid Build Coastguard Worker include_directories : [inc_include, inc_src], 56*61046927SAndroid Build Coastguard Worker dependencies : [ 57*61046927SAndroid Build Coastguard Worker vulkan_wsi_deps, dep_libdrm, dep_libudev, idep_vulkan_util_headers, 58*61046927SAndroid Build Coastguard Worker idep_vulkan_runtime_headers, idep_xmlconfig, idep_mesautil, platform_deps, 59*61046927SAndroid Build Coastguard Worker idep_blake3 60*61046927SAndroid Build Coastguard Worker ], 61*61046927SAndroid Build Coastguard Worker link_with: links_vulkan_wsi, 62*61046927SAndroid Build Coastguard Worker gnu_symbol_visibility : 'hidden', 63*61046927SAndroid Build Coastguard Worker build_by_default : false, 64*61046927SAndroid Build Coastguard Worker) 65*61046927SAndroid Build Coastguard Worker 66*61046927SAndroid Build Coastguard Workeridep_vulkan_wsi_headers = declare_dependency( 67*61046927SAndroid Build Coastguard Worker sources : wsi_entrypoints[0], 68*61046927SAndroid Build Coastguard Worker dependencies : idep_vulkan_wsi_defines, 69*61046927SAndroid Build Coastguard Worker include_directories : include_directories('.') 70*61046927SAndroid Build Coastguard Worker) 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Worker# This is likely a bug in the Meson VS backend, as MSVC with ninja works fine. 73*61046927SAndroid Build Coastguard Worker# See this discussion here: 74*61046927SAndroid Build Coastguard Worker# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10506 75*61046927SAndroid Build Coastguard Workerif get_option('backend').startswith('vs') 76*61046927SAndroid Build Coastguard Worker idep_vulkan_wsi = declare_dependency( 77*61046927SAndroid Build Coastguard Worker link_with : libvulkan_wsi, 78*61046927SAndroid Build Coastguard Worker dependencies : idep_vulkan_wsi_headers 79*61046927SAndroid Build Coastguard Worker ) 80*61046927SAndroid Build Coastguard Workerelse 81*61046927SAndroid Build Coastguard Worker idep_vulkan_wsi = declare_dependency( 82*61046927SAndroid Build Coastguard Worker # Instruct users of this library to link with --whole-archive. Otherwise, 83*61046927SAndroid Build Coastguard Worker # our weak function overloads may not resolve properly. 84*61046927SAndroid Build Coastguard Worker link_whole : libvulkan_wsi, 85*61046927SAndroid Build Coastguard Worker dependencies : [ 86*61046927SAndroid Build Coastguard Worker idep_vulkan_wsi_headers, dep_libudev 87*61046927SAndroid Build Coastguard Worker ] 88*61046927SAndroid Build Coastguard Worker ) 89*61046927SAndroid Build Coastguard Workerendif 90