1e509ee18Sopenharmony_ci# Copyright (c) 2022 Huawei Device Co., Ltd. 2e509ee18Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3e509ee18Sopenharmony_ci# you may not use this file except in compliance with the License. 4e509ee18Sopenharmony_ci# You may obtain a copy of the License at 5e509ee18Sopenharmony_ci# 6e509ee18Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7e509ee18Sopenharmony_ci# 8e509ee18Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9e509ee18Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10e509ee18Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11e509ee18Sopenharmony_ci# See the License for the specific language governing permissions and 12e509ee18Sopenharmony_ci# limitations under the License. 13e509ee18Sopenharmony_ci 14e509ee18Sopenharmony_ciconfig("executable_config") { 15e509ee18Sopenharmony_ci configs = [] 16e509ee18Sopenharmony_ci 17e509ee18Sopenharmony_ci if (!is_mac) { 18e509ee18Sopenharmony_ci if (!is_mingw) { 19e509ee18Sopenharmony_ci cflags = [ "-fPIE" ] 20e509ee18Sopenharmony_ci asmflags = [ "-fPIE" ] 21e509ee18Sopenharmony_ci ldflags = [ 22e509ee18Sopenharmony_ci "-Wl,-rpath=\$ORIGIN/", 23e509ee18Sopenharmony_ci "-Wl,-rpath-link=", 24e509ee18Sopenharmony_ci ] 25e509ee18Sopenharmony_ci if (current_os == "linux") { 26e509ee18Sopenharmony_ci ldflags += [ "-lpthread" ] 27e509ee18Sopenharmony_ci } 28e509ee18Sopenharmony_ci } 29e509ee18Sopenharmony_ci if (is_ohos) { 30e509ee18Sopenharmony_ci ldflags += [ "-lpthread" ] 31e509ee18Sopenharmony_ci configs += [ "$build_root/config/ohos:executable_config" ] 32e509ee18Sopenharmony_ci } else if (is_android) { 33e509ee18Sopenharmony_ci configs += [ "$build_root/config/aosp:executable_config" ] 34e509ee18Sopenharmony_ci } 35e509ee18Sopenharmony_ci } else if (is_mac) { 36e509ee18Sopenharmony_ci configs += [ "$build_root/config/mac:mac_dynamic_flags" ] 37e509ee18Sopenharmony_ci } 38e509ee18Sopenharmony_ci} 39e509ee18Sopenharmony_ci 40e509ee18Sopenharmony_ci# This config defines the configs applied to all shared libraries. 41e509ee18Sopenharmony_ciconfig("shared_library_config") { 42e509ee18Sopenharmony_ci configs = [] 43e509ee18Sopenharmony_ci 44e509ee18Sopenharmony_ci if (is_mac) { 45e509ee18Sopenharmony_ci configs += [ "$build_root/config/mac:mac_dynamic_flags" ] 46e509ee18Sopenharmony_ci } 47e509ee18Sopenharmony_ci} 48e509ee18Sopenharmony_ci 49e509ee18Sopenharmony_ciconfig("default_libs") { 50e509ee18Sopenharmony_ci if (is_win) { 51e509ee18Sopenharmony_ci libs = [ 52e509ee18Sopenharmony_ci "advapi32.lib", 53e509ee18Sopenharmony_ci "comdlg32.lib", 54e509ee18Sopenharmony_ci "dbghelp.lib", 55e509ee18Sopenharmony_ci "dnsapi.lib", 56e509ee18Sopenharmony_ci "gdi32.lib", 57e509ee18Sopenharmony_ci "msimg32.lib", 58e509ee18Sopenharmony_ci "odbc32.lib", 59e509ee18Sopenharmony_ci "odbccp32.lib", 60e509ee18Sopenharmony_ci "oleaut32.lib", 61e509ee18Sopenharmony_ci "psapi.lib", 62e509ee18Sopenharmony_ci "shell32.lib", 63e509ee18Sopenharmony_ci "shlwapi.lib", 64e509ee18Sopenharmony_ci "user32.lib", 65e509ee18Sopenharmony_ci "usp10.lib", 66e509ee18Sopenharmony_ci "uuid.lib", 67e509ee18Sopenharmony_ci "version.lib", 68e509ee18Sopenharmony_ci "wininet.lib", 69e509ee18Sopenharmony_ci "winmm.lib", 70e509ee18Sopenharmony_ci "winspool.lib", 71e509ee18Sopenharmony_ci "ws2_32.lib", 72e509ee18Sopenharmony_ci 73e509ee18Sopenharmony_ci # Please don't add more stuff here. We should actually be making this 74e509ee18Sopenharmony_ci # list smaller, since all common things should be covered. If you need 75e509ee18Sopenharmony_ci # some extra libraries, please just add a libs = [ "foo.lib" ] to your 76e509ee18Sopenharmony_ci # target that needs it. 77e509ee18Sopenharmony_ci ] 78e509ee18Sopenharmony_ci if (current_os == "winuwp") { 79e509ee18Sopenharmony_ci # These libraries are needed for Windows UWP (i.e. store apps). 80e509ee18Sopenharmony_ci libs += [ 81e509ee18Sopenharmony_ci "dloadhelper.lib", 82e509ee18Sopenharmony_ci "WindowsApp.lib", 83e509ee18Sopenharmony_ci ] 84e509ee18Sopenharmony_ci } else { 85e509ee18Sopenharmony_ci # These libraries are not compatible with Windows UWP (i.e. store apps.) 86e509ee18Sopenharmony_ci libs += [ 87e509ee18Sopenharmony_ci "delayimp.lib", 88e509ee18Sopenharmony_ci "kernel32.lib", 89e509ee18Sopenharmony_ci "ole32.lib", 90e509ee18Sopenharmony_ci ] 91e509ee18Sopenharmony_ci } 92e509ee18Sopenharmony_ci } else if (is_ohos || is_android) { 93e509ee18Sopenharmony_ci libs = [ 94e509ee18Sopenharmony_ci "dl", 95e509ee18Sopenharmony_ci "m", 96e509ee18Sopenharmony_ci ] 97e509ee18Sopenharmony_ci } else if (is_mac) { 98e509ee18Sopenharmony_ci # Targets should choose to explicitly link frameworks they require. Since 99e509ee18Sopenharmony_ci # linking can have run-time side effects, nothing should be listed here. 100e509ee18Sopenharmony_ci libs = [] 101e509ee18Sopenharmony_ci } else if (is_linux) { 102e509ee18Sopenharmony_ci libs = [ 103e509ee18Sopenharmony_ci "dl", 104e509ee18Sopenharmony_ci "pthread", 105e509ee18Sopenharmony_ci "rt", 106e509ee18Sopenharmony_ci ] 107e509ee18Sopenharmony_ci } 108e509ee18Sopenharmony_ci} 109e509ee18Sopenharmony_ci 110e509ee18Sopenharmony_cigroup("common_deps") { 111e509ee18Sopenharmony_ci public_deps = [] 112e509ee18Sopenharmony_ci if (use_musl && is_ohos) { 113e509ee18Sopenharmony_ci public_deps += [ "$build_root/third_party_gn/musl:soft_shared_libs" ] 114e509ee18Sopenharmony_ci } 115e509ee18Sopenharmony_ci} 116e509ee18Sopenharmony_ci 117e509ee18Sopenharmony_cigroup("executable_deps") { 118e509ee18Sopenharmony_ci public_deps = [ ":common_deps" ] 119e509ee18Sopenharmony_ci} 120e509ee18Sopenharmony_ci 121e509ee18Sopenharmony_cigroup("shared_library_deps") { 122e509ee18Sopenharmony_ci public_deps = [ ":common_deps" ] 123e509ee18Sopenharmony_ci} 124e509ee18Sopenharmony_ci 125e509ee18Sopenharmony_cigroup("static_library_deps") { 126e509ee18Sopenharmony_ci public_deps = [ ":common_deps" ] 127e509ee18Sopenharmony_ci} 128e509ee18Sopenharmony_ci 129e509ee18Sopenharmony_cigroup("source_set_deps") { 130e509ee18Sopenharmony_ci public_deps = [ ":common_deps" ] 131e509ee18Sopenharmony_ci} 132