1b877906bSopenharmony_ci# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
2b877906bSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3b877906bSopenharmony_ci# you may not use this file except in compliance with the License.
4b877906bSopenharmony_ci# You may obtain a copy of the License at
5b877906bSopenharmony_ci#
6b877906bSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7b877906bSopenharmony_ci#
8b877906bSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9b877906bSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10b877906bSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11b877906bSopenharmony_ci# See the License for the specific language governing permissions and
12b877906bSopenharmony_ci# limitations under the License.
13b877906bSopenharmony_ci
14b877906bSopenharmony_ciimport("//build/ohos.gni")
15b877906bSopenharmony_ciimport("//third_party/glfw/glfw_ace_config.gni")
16b877906bSopenharmony_ci
17b877906bSopenharmony_ciconfig("glfw_inner_headers") {
18b877906bSopenharmony_ci  include_dirs = [ "include" ]
19b877906bSopenharmony_ci}
20b877906bSopenharmony_ci
21b877906bSopenharmony_ciconfig("glfw_config_mac") {
22b877906bSopenharmony_ci  cflags = [ "-Wno-sign-compare" ]
23b877906bSopenharmony_ci}
24b877906bSopenharmony_ci
25b877906bSopenharmony_ciohos_shared_library("glfw") {
26b877906bSopenharmony_ci  defines = [ "PREVIEW" ]
27b877906bSopenharmony_ci  include_dirs = [ "src" ]
28b877906bSopenharmony_ci  public = [
29b877906bSopenharmony_ci    "include/GLFW/glfw3.h",
30b877906bSopenharmony_ci    "include/GLFW/glfw3native.h",
31b877906bSopenharmony_ci  ]
32b877906bSopenharmony_ci
33b877906bSopenharmony_ci  sources = [
34b877906bSopenharmony_ci    "src/context.c",
35b877906bSopenharmony_ci    "src/init.c",
36b877906bSopenharmony_ci    "src/input.c",
37b877906bSopenharmony_ci    "src/monitor.c",
38b877906bSopenharmony_ci    "src/null_init.c",
39b877906bSopenharmony_ci    "src/null_joystick.c",
40b877906bSopenharmony_ci    "src/null_joystick.h",
41b877906bSopenharmony_ci    "src/null_monitor.c",
42b877906bSopenharmony_ci    "src/null_platform.h",
43b877906bSopenharmony_ci    "src/null_window.c",
44b877906bSopenharmony_ci    "src/osmesa_context.c",
45b877906bSopenharmony_ci    "src/platform.c",
46b877906bSopenharmony_ci    "src/vulkan.c",
47b877906bSopenharmony_ci    "src/window.c",
48b877906bSopenharmony_ci  ]
49b877906bSopenharmony_ci
50b877906bSopenharmony_ci  public_configs = [ ":glfw_inner_headers" ]
51b877906bSopenharmony_ci
52b877906bSopenharmony_ci  if (current_os == "mingw") {
53b877906bSopenharmony_ci    defines += ace_windows_defines
54b877906bSopenharmony_ci    sources += [
55b877906bSopenharmony_ci      "src/egl_context.c",
56b877906bSopenharmony_ci      "src/egl_context.h",
57b877906bSopenharmony_ci      "src/wgl_context.c",
58b877906bSopenharmony_ci      "src/wgl_context.h",
59b877906bSopenharmony_ci      "src/win32_init.c",
60b877906bSopenharmony_ci      "src/win32_joystick.c",
61b877906bSopenharmony_ci      "src/win32_joystick.h",
62b877906bSopenharmony_ci      "src/win32_module.c",
63b877906bSopenharmony_ci      "src/win32_monitor.c",
64b877906bSopenharmony_ci      "src/win32_platform.h",
65b877906bSopenharmony_ci      "src/win32_thread.c",
66b877906bSopenharmony_ci      "src/win32_thread.h",
67b877906bSopenharmony_ci      "src/win32_time.c",
68b877906bSopenharmony_ci      "src/win32_time.h",
69b877906bSopenharmony_ci      "src/win32_window.c",
70b877906bSopenharmony_ci    ]
71b877906bSopenharmony_ci
72b877906bSopenharmony_ci    defines += [ "_GLFW_WIN32" ]
73b877906bSopenharmony_ci
74b877906bSopenharmony_ci    libs = [
75b877906bSopenharmony_ci      "gdi32",
76b877906bSopenharmony_ci      "opengl32",
77b877906bSopenharmony_ci    ]
78b877906bSopenharmony_ci  }
79b877906bSopenharmony_ci  if (current_os == "mac") {
80b877906bSopenharmony_ci    defines += ace_mac_defines
81b877906bSopenharmony_ci    sources += [
82b877906bSopenharmony_ci      "src/cocoa_init.m",
83b877906bSopenharmony_ci      "src/cocoa_joystick.h",
84b877906bSopenharmony_ci      "src/cocoa_joystick.m",
85b877906bSopenharmony_ci      "src/cocoa_monitor.m",
86b877906bSopenharmony_ci      "src/cocoa_platform.h",
87b877906bSopenharmony_ci      "src/cocoa_time.c",
88b877906bSopenharmony_ci      "src/cocoa_time.h",
89b877906bSopenharmony_ci      "src/cocoa_window.m",
90b877906bSopenharmony_ci      "src/egl_context.c",
91b877906bSopenharmony_ci      "src/egl_context.h",
92b877906bSopenharmony_ci      "src/nsgl_context.m",
93b877906bSopenharmony_ci      "src/posix_module.c",
94b877906bSopenharmony_ci      "src/posix_poll.c",
95b877906bSopenharmony_ci      "src/posix_poll.h",
96b877906bSopenharmony_ci      "src/posix_thread.c",
97b877906bSopenharmony_ci      "src/posix_time.c",
98b877906bSopenharmony_ci      "src/posix_time.h",
99b877906bSopenharmony_ci    ]
100b877906bSopenharmony_ci    include_dirs += [ "deps" ]
101b877906bSopenharmony_ci    if (defined(enable_gn_2021)) {
102b877906bSopenharmony_ci      frameworks = [
103b877906bSopenharmony_ci        "Cocoa.framework",
104b877906bSopenharmony_ci        "IOKit.framework",
105b877906bSopenharmony_ci        "CoreFoundation.framework",
106b877906bSopenharmony_ci        "CoreVideo.framework",
107b877906bSopenharmony_ci        "QuartzCore.framework",
108b877906bSopenharmony_ci      ]
109b877906bSopenharmony_ci    } else {
110b877906bSopenharmony_ci      libs = [
111b877906bSopenharmony_ci        "Cocoa.framework",
112b877906bSopenharmony_ci        "IOKit.framework",
113b877906bSopenharmony_ci        "CoreFoundation.framework",
114b877906bSopenharmony_ci        "CoreVideo.framework",
115b877906bSopenharmony_ci        "QuartzCore.framework",
116b877906bSopenharmony_ci      ]
117b877906bSopenharmony_ci    }
118b877906bSopenharmony_ci
119b877906bSopenharmony_ci    cflags = [
120b877906bSopenharmony_ci      "-Wno-deprecated-declarations",
121b877906bSopenharmony_ci      "-Wno-objc-multiple-method-names",
122b877906bSopenharmony_ci      "-DNS_FORMAT_ARGUMENT(A)=",
123b877906bSopenharmony_ci    ]
124b877906bSopenharmony_ci    public_configs += [ ":glfw_config_mac" ]
125b877906bSopenharmony_ci    defines += [ "_GLFW_COCOA" ]
126b877906bSopenharmony_ci  }
127b877906bSopenharmony_ci  if (current_os == "linux") {
128b877906bSopenharmony_ci    defines += ace_linux_defines
129b877906bSopenharmony_ci    sources += [
130b877906bSopenharmony_ci      "src/egl_context.c",
131b877906bSopenharmony_ci      "src/glx_context.c",
132b877906bSopenharmony_ci      "src/linux_joystick.c",
133b877906bSopenharmony_ci      "src/linux_joystick.h",
134b877906bSopenharmony_ci      "src/posix_module.c",
135b877906bSopenharmony_ci      "src/posix_poll.c",
136b877906bSopenharmony_ci      "src/posix_poll.h",
137b877906bSopenharmony_ci      "src/posix_thread.c",
138b877906bSopenharmony_ci      "src/posix_time.c",
139b877906bSopenharmony_ci      "src/posix_time.h",
140b877906bSopenharmony_ci      "src/x11_init.c",
141b877906bSopenharmony_ci      "src/x11_monitor.c",
142b877906bSopenharmony_ci      "src/x11_platform.h",
143b877906bSopenharmony_ci      "src/x11_window.c",
144b877906bSopenharmony_ci      "src/xkb_unicode.c",
145b877906bSopenharmony_ci      "src/xkb_unicode.h",
146b877906bSopenharmony_ci    ]
147b877906bSopenharmony_ci    cflags_c = [
148b877906bSopenharmony_ci      "-Wno-sign-compare",
149b877906bSopenharmony_ci      "-Wno-missing-field-initializers",
150b877906bSopenharmony_ci    ]
151b877906bSopenharmony_ci    libs = [
152b877906bSopenharmony_ci      "rt",
153b877906bSopenharmony_ci      "dl",
154b877906bSopenharmony_ci      "X11",
155b877906bSopenharmony_ci      "Xcursor",
156b877906bSopenharmony_ci      "Xinerama",
157b877906bSopenharmony_ci      "Xrandr",
158b877906bSopenharmony_ci    ]
159b877906bSopenharmony_ci    defines += [ "_GLFW_X11" ]
160b877906bSopenharmony_ci  }
161b877906bSopenharmony_ci
162b877906bSopenharmony_ci  part_name = "glfw"
163b877906bSopenharmony_ci  subsystem_name = "thirdparty"
164b877906bSopenharmony_ci}
165