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