xref: /aosp_15_r20/external/skia/tools/window/BUILD.gn (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2023 Google Inc.
2*c8dee2aaSAndroid Build Coastguard Worker#
3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workerimport("../../gn/skia.gni")
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_dawn) {
9*c8dee2aaSAndroid Build Coastguard Worker  import("//third_party/externals/dawn/scripts/dawn_features.gni")
10*c8dee2aaSAndroid Build Coastguard Worker}
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerconfig("public_config") {
13*c8dee2aaSAndroid Build Coastguard Worker  defines = []
14*c8dee2aaSAndroid Build Coastguard Worker  include_dirs = [ "." ]
15*c8dee2aaSAndroid Build Coastguard Worker}
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Workerskia_component("window") {
18*c8dee2aaSAndroid Build Coastguard Worker  check_includes = false
19*c8dee2aaSAndroid Build Coastguard Worker  testonly = true  # For access to gpu_tool_utils. TODO: clean up
20*c8dee2aaSAndroid Build Coastguard Worker  public_configs = [ ":public_config" ]
21*c8dee2aaSAndroid Build Coastguard Worker  public = [
22*c8dee2aaSAndroid Build Coastguard Worker    "DisplayParams.h",
23*c8dee2aaSAndroid Build Coastguard Worker    "WindowContext.h",
24*c8dee2aaSAndroid Build Coastguard Worker  ]
25*c8dee2aaSAndroid Build Coastguard Worker  sources = [
26*c8dee2aaSAndroid Build Coastguard Worker    "DisplayParams.h",
27*c8dee2aaSAndroid Build Coastguard Worker    "RasterWindowContext.h",
28*c8dee2aaSAndroid Build Coastguard Worker    "WindowContext.cpp",
29*c8dee2aaSAndroid Build Coastguard Worker    "WindowContext.h",
30*c8dee2aaSAndroid Build Coastguard Worker  ]
31*c8dee2aaSAndroid Build Coastguard Worker
32*c8dee2aaSAndroid Build Coastguard Worker  libs = []
33*c8dee2aaSAndroid Build Coastguard Worker  frameworks = []
34*c8dee2aaSAndroid Build Coastguard Worker
35*c8dee2aaSAndroid Build Coastguard Worker  if (is_android) {
36*c8dee2aaSAndroid Build Coastguard Worker    sources += [
37*c8dee2aaSAndroid Build Coastguard Worker      "android/RasterWindowContext_android.cpp",
38*c8dee2aaSAndroid Build Coastguard Worker      "android/WindowContextFactory_android.h",
39*c8dee2aaSAndroid Build Coastguard Worker    ]
40*c8dee2aaSAndroid Build Coastguard Worker    libs += [ "android" ]
41*c8dee2aaSAndroid Build Coastguard Worker  } else if (is_linux) {
42*c8dee2aaSAndroid Build Coastguard Worker    sources += [
43*c8dee2aaSAndroid Build Coastguard Worker      "unix/RasterWindowContext_unix.cpp",
44*c8dee2aaSAndroid Build Coastguard Worker      "unix/RasterWindowContext_unix.h",
45*c8dee2aaSAndroid Build Coastguard Worker      "unix/XlibWindowInfo.h",
46*c8dee2aaSAndroid Build Coastguard Worker    ]
47*c8dee2aaSAndroid Build Coastguard Worker    libs += [ "X11" ]
48*c8dee2aaSAndroid Build Coastguard Worker  } else if (is_win) {
49*c8dee2aaSAndroid Build Coastguard Worker    sources += [
50*c8dee2aaSAndroid Build Coastguard Worker      "win/RasterWindowContext_win.cpp",
51*c8dee2aaSAndroid Build Coastguard Worker      "win/WindowContextFactory_win.h",
52*c8dee2aaSAndroid Build Coastguard Worker    ]
53*c8dee2aaSAndroid Build Coastguard Worker  } else if (is_mac) {
54*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "mac/MacWindowInfo.h" ]
55*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [
56*c8dee2aaSAndroid Build Coastguard Worker      "QuartzCore.framework",
57*c8dee2aaSAndroid Build Coastguard Worker      "Cocoa.framework",
58*c8dee2aaSAndroid Build Coastguard Worker      "Foundation.framework",
59*c8dee2aaSAndroid Build Coastguard Worker    ]
60*c8dee2aaSAndroid Build Coastguard Worker  } else if (is_ios) {
61*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "ios/WindowContextFactory_ios.h" ]
62*c8dee2aaSAndroid Build Coastguard Worker    frameworks += [ "QuartzCore.framework" ]
63*c8dee2aaSAndroid Build Coastguard Worker  }
64*c8dee2aaSAndroid Build Coastguard Worker
65*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_gl) {
66*c8dee2aaSAndroid Build Coastguard Worker    sources += [
67*c8dee2aaSAndroid Build Coastguard Worker      "GLWindowContext.cpp",
68*c8dee2aaSAndroid Build Coastguard Worker      "GLWindowContext.h",
69*c8dee2aaSAndroid Build Coastguard Worker    ]
70*c8dee2aaSAndroid Build Coastguard Worker    if (skia_use_angle) {
71*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "ANGLEWindowContext.cpp" ]
72*c8dee2aaSAndroid Build Coastguard Worker    }
73*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
74*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "android/GLWindowContext_android.cpp" ]
75*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux) {
76*c8dee2aaSAndroid Build Coastguard Worker      sources += [
77*c8dee2aaSAndroid Build Coastguard Worker        "unix/GaneshGLWindowContext_unix.cpp",
78*c8dee2aaSAndroid Build Coastguard Worker        "unix/GaneshGLWindowContext_unix.h",
79*c8dee2aaSAndroid Build Coastguard Worker      ]
80*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "GL" ]
81*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win) {
82*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "win/GLWindowContext_win.cpp" ]
83*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_angle) {
84*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "win/ANGLEWindowContext_win.cpp" ]
85*c8dee2aaSAndroid Build Coastguard Worker      }
86*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac) {
87*c8dee2aaSAndroid Build Coastguard Worker      sources += [
88*c8dee2aaSAndroid Build Coastguard Worker        # The Mac Raster implementation has a GL dependency
89*c8dee2aaSAndroid Build Coastguard Worker        "mac/GaneshGLWindowContext_mac.h",
90*c8dee2aaSAndroid Build Coastguard Worker        "mac/GaneshGLWindowContext_mac.mm",
91*c8dee2aaSAndroid Build Coastguard Worker        "mac/MacWindowGLUtils.h",
92*c8dee2aaSAndroid Build Coastguard Worker        "mac/RasterWindowContext_mac.h",
93*c8dee2aaSAndroid Build Coastguard Worker        "mac/RasterWindowContext_mac.mm",
94*c8dee2aaSAndroid Build Coastguard Worker      ]
95*c8dee2aaSAndroid Build Coastguard Worker      if (skia_use_angle) {
96*c8dee2aaSAndroid Build Coastguard Worker        sources += [
97*c8dee2aaSAndroid Build Coastguard Worker          "mac/GaneshANGLEWindowContext_mac.h",
98*c8dee2aaSAndroid Build Coastguard Worker          "mac/GaneshANGLEWindowContext_mac.mm",
99*c8dee2aaSAndroid Build Coastguard Worker          "mac/MacWindowGLUtils.h",
100*c8dee2aaSAndroid Build Coastguard Worker        ]
101*c8dee2aaSAndroid Build Coastguard Worker      }
102*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_ios) {
103*c8dee2aaSAndroid Build Coastguard Worker      sources += [
104*c8dee2aaSAndroid Build Coastguard Worker        "ios/GLWindowContext_ios.mm",
105*c8dee2aaSAndroid Build Coastguard Worker        "ios/RasterWindowContext_ios.mm",
106*c8dee2aaSAndroid Build Coastguard Worker      ]
107*c8dee2aaSAndroid Build Coastguard Worker    }
108*c8dee2aaSAndroid Build Coastguard Worker  }
109*c8dee2aaSAndroid Build Coastguard Worker
110*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_vulkan) {
111*c8dee2aaSAndroid Build Coastguard Worker    sources += [
112*c8dee2aaSAndroid Build Coastguard Worker      "VulkanWindowContext.cpp",
113*c8dee2aaSAndroid Build Coastguard Worker      "VulkanWindowContext.h",
114*c8dee2aaSAndroid Build Coastguard Worker    ]
115*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite) {
116*c8dee2aaSAndroid Build Coastguard Worker      sources += [
117*c8dee2aaSAndroid Build Coastguard Worker        "GraphiteNativeVulkanWindowContext.cpp",
118*c8dee2aaSAndroid Build Coastguard Worker        "GraphiteNativeVulkanWindowContext.h",
119*c8dee2aaSAndroid Build Coastguard Worker      ]
120*c8dee2aaSAndroid Build Coastguard Worker    }
121*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
122*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "android/VulkanWindowContext_android.cpp" ]
123*c8dee2aaSAndroid Build Coastguard Worker      if (skia_enable_graphite) {
124*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "android/GraphiteVulkanWindowContext_android.cpp" ]
125*c8dee2aaSAndroid Build Coastguard Worker      }
126*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_linux) {
127*c8dee2aaSAndroid Build Coastguard Worker      sources += [
128*c8dee2aaSAndroid Build Coastguard Worker        "unix/GaneshVulkanWindowContext_unix.cpp",
129*c8dee2aaSAndroid Build Coastguard Worker        "unix/GaneshVulkanWindowContext_unix.h",
130*c8dee2aaSAndroid Build Coastguard Worker      ]
131*c8dee2aaSAndroid Build Coastguard Worker      if (skia_enable_graphite) {
132*c8dee2aaSAndroid Build Coastguard Worker        sources += [
133*c8dee2aaSAndroid Build Coastguard Worker          "unix/GraphiteNativeVulkanWindowContext_unix.cpp",
134*c8dee2aaSAndroid Build Coastguard Worker          "unix/GraphiteNativeVulkanWindowContext_unix.h",
135*c8dee2aaSAndroid Build Coastguard Worker        ]
136*c8dee2aaSAndroid Build Coastguard Worker      }
137*c8dee2aaSAndroid Build Coastguard Worker      libs += [ "X11-xcb" ]
138*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win) {
139*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "win/VulkanWindowContext_win.cpp" ]
140*c8dee2aaSAndroid Build Coastguard Worker      if (skia_enable_graphite) {
141*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "win/GraphiteVulkanWindowContext_win.cpp" ]
142*c8dee2aaSAndroid Build Coastguard Worker      }
143*c8dee2aaSAndroid Build Coastguard Worker    }
144*c8dee2aaSAndroid Build Coastguard Worker  }
145*c8dee2aaSAndroid Build Coastguard Worker
146*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_metal) {
147*c8dee2aaSAndroid Build Coastguard Worker    sources += [
148*c8dee2aaSAndroid Build Coastguard Worker      "MetalWindowContext.h",
149*c8dee2aaSAndroid Build Coastguard Worker      "MetalWindowContext.mm",
150*c8dee2aaSAndroid Build Coastguard Worker    ]
151*c8dee2aaSAndroid Build Coastguard Worker    if (skia_enable_graphite) {
152*c8dee2aaSAndroid Build Coastguard Worker      sources += [
153*c8dee2aaSAndroid Build Coastguard Worker        "GraphiteNativeMetalWindowContext.h",
154*c8dee2aaSAndroid Build Coastguard Worker        "GraphiteNativeMetalWindowContext.mm",
155*c8dee2aaSAndroid Build Coastguard Worker      ]
156*c8dee2aaSAndroid Build Coastguard Worker    }
157*c8dee2aaSAndroid Build Coastguard Worker    if (is_mac) {
158*c8dee2aaSAndroid Build Coastguard Worker      sources += [
159*c8dee2aaSAndroid Build Coastguard Worker        "mac/GaneshMetalWindowContext_mac.h",
160*c8dee2aaSAndroid Build Coastguard Worker        "mac/GaneshMetalWindowContext_mac.mm",
161*c8dee2aaSAndroid Build Coastguard Worker      ]
162*c8dee2aaSAndroid Build Coastguard Worker      if (skia_enable_graphite) {
163*c8dee2aaSAndroid Build Coastguard Worker        sources += [
164*c8dee2aaSAndroid Build Coastguard Worker          "mac/GraphiteNativeMetalWindowContext_mac.h",
165*c8dee2aaSAndroid Build Coastguard Worker          "mac/GraphiteNativeMetalWindowContext_mac.mm",
166*c8dee2aaSAndroid Build Coastguard Worker        ]
167*c8dee2aaSAndroid Build Coastguard Worker      }
168*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_ios) {
169*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "ios/MetalWindowContext_ios.mm" ]
170*c8dee2aaSAndroid Build Coastguard Worker      if (skia_enable_graphite) {
171*c8dee2aaSAndroid Build Coastguard Worker        sources += [ "ios/GraphiteMetalWindowContext_ios.mm" ]
172*c8dee2aaSAndroid Build Coastguard Worker      }
173*c8dee2aaSAndroid Build Coastguard Worker    }
174*c8dee2aaSAndroid Build Coastguard Worker  }
175*c8dee2aaSAndroid Build Coastguard Worker
176*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_direct3d) {
177*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "win/D3D12WindowContext_win.cpp" ]
178*c8dee2aaSAndroid Build Coastguard Worker  }
179*c8dee2aaSAndroid Build Coastguard Worker
180*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_dawn) {
181*c8dee2aaSAndroid Build Coastguard Worker    if (is_linux) {
182*c8dee2aaSAndroid Build Coastguard Worker      if (dawn_enable_vulkan) {
183*c8dee2aaSAndroid Build Coastguard Worker        defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
184*c8dee2aaSAndroid Build Coastguard Worker        libs += [ "X11-xcb" ]
185*c8dee2aaSAndroid Build Coastguard Worker        if (skia_enable_graphite) {
186*c8dee2aaSAndroid Build Coastguard Worker          sources += [
187*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.cpp",
188*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.h",
189*c8dee2aaSAndroid Build Coastguard Worker            "unix/GraphiteDawnVulkanWindowContext_unix.cpp",
190*c8dee2aaSAndroid Build Coastguard Worker            "unix/GraphiteDawnVulkanWindowContext_unix.h",
191*c8dee2aaSAndroid Build Coastguard Worker          ]
192*c8dee2aaSAndroid Build Coastguard Worker        }
193*c8dee2aaSAndroid Build Coastguard Worker      }
194*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_win) {
195*c8dee2aaSAndroid Build Coastguard Worker      if (dawn_enable_d3d12 || dawn_enable_d3d11 || dawn_enable_vulkan) {
196*c8dee2aaSAndroid Build Coastguard Worker        if (skia_enable_graphite) {
197*c8dee2aaSAndroid Build Coastguard Worker          sources += [
198*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.cpp",
199*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.h",
200*c8dee2aaSAndroid Build Coastguard Worker            "win/GraphiteDawnD3D12WindowContext_win.cpp",
201*c8dee2aaSAndroid Build Coastguard Worker          ]
202*c8dee2aaSAndroid Build Coastguard Worker        }
203*c8dee2aaSAndroid Build Coastguard Worker      }
204*c8dee2aaSAndroid Build Coastguard Worker    } else if (is_mac) {
205*c8dee2aaSAndroid Build Coastguard Worker      if (dawn_enable_metal) {
206*c8dee2aaSAndroid Build Coastguard Worker        if (skia_enable_graphite) {
207*c8dee2aaSAndroid Build Coastguard Worker          sources += [
208*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.cpp",
209*c8dee2aaSAndroid Build Coastguard Worker            "GraphiteDawnWindowContext.h",
210*c8dee2aaSAndroid Build Coastguard Worker            "mac/GraphiteDawnMetalWindowContext_mac.h",
211*c8dee2aaSAndroid Build Coastguard Worker            "mac/GraphiteDawnMetalWindowContext_mac.mm",
212*c8dee2aaSAndroid Build Coastguard Worker          ]
213*c8dee2aaSAndroid Build Coastguard Worker        }
214*c8dee2aaSAndroid Build Coastguard Worker      }
215*c8dee2aaSAndroid Build Coastguard Worker    }
216*c8dee2aaSAndroid Build Coastguard Worker  }
217*c8dee2aaSAndroid Build Coastguard Worker
218*c8dee2aaSAndroid Build Coastguard Worker  configs = [ "../../:skia_private" ]
219*c8dee2aaSAndroid Build Coastguard Worker  deps = [
220*c8dee2aaSAndroid Build Coastguard Worker    "../..:gpu_tool_utils",
221*c8dee2aaSAndroid Build Coastguard Worker    "../..:skia",
222*c8dee2aaSAndroid Build Coastguard Worker  ]
223*c8dee2aaSAndroid Build Coastguard Worker
224*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_gl && skia_use_angle) {
225*c8dee2aaSAndroid Build Coastguard Worker    deps += [ "//third_party/angle2" ]
226*c8dee2aaSAndroid Build Coastguard Worker  }
227*c8dee2aaSAndroid Build Coastguard Worker}
228