aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/vulkan/BUILD.gn
blob: 8fbf555bb5381333529493df2d279618b9082d24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright 2018 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  skia_vulkan_header = ""
  skia_tools_vulkan_header_dir = ""

  # When buliding on Android we get the header via the NDK so no need for any extra path.
  if (is_fuchsia) {
    skia_tools_vulkan_header_dir = "$fuchsia_vulkan_sdk/include"
  } else if (is_linux || is_win) {
    skia_tools_vulkan_header_dir = "$skia_vulkan_sdk/include"
  }
}

config("moltenvk") {
  if (is_ios) {
    moltenvk_framework_path = "$skia_moltenvk_path/MoltenVK/iOS"
  } else {
    moltenvk_framework_path = "$skia_moltenvk_path/MoltenVK/macOS"
  }
  cflags = [
    "-F$moltenvk_framework_path",
    "-isystem$skia_moltenvk_path/MoltenVK/include",  # for <vulkan/vulkan.h>
  ]
  ldflags = [ "-F$moltenvk_framework_path" ]
  libs = [
    "MoltenVK.framework",
    "Metal.framework",
    "IOSurface.framework",
    "QuartzCore.framework",
    "Foundation.framework",
  ]
  if (is_ios) {
    libs += [ "UIKit.framework" ]
  } else {
    libs += [ "IOKit.framework" ]
  }
  defines = [ "SK_MOLTENVK" ]
}

config("vulkan_config") {
  include_dirs = []
  if (skia_tools_vulkan_header_dir != "") {
    include_dirs += [ skia_tools_vulkan_header_dir ]
  }
  defines = [ "SK_VULKAN" ]
  if (skia_vulkan_header != "") {
    defines += [ "SK_VULKAN_HEADER=\"$skia_vulkan_header\"" ]
  } else if (skia_moltenvk_path != "") {
    defines += [ "SK_VULKAN_HEADER=<MoltenVK/mvk_vulkan.h>" ]
  } else if (defined(is_skia_standalone) && is_skia_standalone &&
             !is_official_build) {
    defines += [ "SK_VULKAN_HEADER=\"GrVulkanDefines.h\"" ]
  }
  if (skia_moltenvk_path != "") {
    public_configs += [ ":moltenvk" ]
  }
}

source_set("vulkan") {
  public_configs = [ ":vulkan_config" ]
}