16d528ed9Sopenharmony_ci# Copyright 2019 The Chromium Authors. All rights reserved.
26d528ed9Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
36d528ed9Sopenharmony_ci# found in the LICENSE file.
46d528ed9Sopenharmony_ci
56d528ed9Sopenharmony_ciimport("//build/config/ios/deployment_target.gni")
66d528ed9Sopenharmony_ci
76d528ed9Sopenharmony_ciconfig("compiler") {
86d528ed9Sopenharmony_ci  configs = [
96d528ed9Sopenharmony_ci    ":include_dirs",
106d528ed9Sopenharmony_ci    ":cpp_standard",
116d528ed9Sopenharmony_ci    ":objc_use_arc",
126d528ed9Sopenharmony_ci    ":objc_abi_version",
136d528ed9Sopenharmony_ci  ]
146d528ed9Sopenharmony_ci  cflags = [ "-g" ]
156d528ed9Sopenharmony_ci  swiftflags = [ "-g" ]
166d528ed9Sopenharmony_ci}
176d528ed9Sopenharmony_ci
186d528ed9Sopenharmony_ciconfig("shared_binary") {
196d528ed9Sopenharmony_ci  if (current_os == "ios" || current_os == "mac") {
206d528ed9Sopenharmony_ci    configs = [
216d528ed9Sopenharmony_ci      ":rpath_config",
226d528ed9Sopenharmony_ci      ":swift_libdir",
236d528ed9Sopenharmony_ci    ]
246d528ed9Sopenharmony_ci  }
256d528ed9Sopenharmony_ci}
266d528ed9Sopenharmony_ci
276d528ed9Sopenharmony_ciconfig("objc_abi_version") {
286d528ed9Sopenharmony_ci  cflags_objc = [ "-fobjc-abi-version=2" ]
296d528ed9Sopenharmony_ci  cflags_objcc = cflags_objc
306d528ed9Sopenharmony_ci  ldflags = [
316d528ed9Sopenharmony_ci    "-Xlinker",
326d528ed9Sopenharmony_ci    "-objc_abi_version",
336d528ed9Sopenharmony_ci    "-Xlinker",
346d528ed9Sopenharmony_ci    "2",
356d528ed9Sopenharmony_ci  ]
366d528ed9Sopenharmony_ci}
376d528ed9Sopenharmony_ci
386d528ed9Sopenharmony_ciconfig("include_dirs") {
396d528ed9Sopenharmony_ci  include_dirs = [
406d528ed9Sopenharmony_ci    "//",
416d528ed9Sopenharmony_ci    root_gen_dir,
426d528ed9Sopenharmony_ci  ]
436d528ed9Sopenharmony_ci}
446d528ed9Sopenharmony_ci
456d528ed9Sopenharmony_ciconfig("objc_use_arc") {
466d528ed9Sopenharmony_ci  cflags_objc = [
476d528ed9Sopenharmony_ci    "-fobjc-arc",
486d528ed9Sopenharmony_ci    "-fobjc-weak",
496d528ed9Sopenharmony_ci  ]
506d528ed9Sopenharmony_ci  cflags_objcc = cflags_objc
516d528ed9Sopenharmony_ci}
526d528ed9Sopenharmony_ci
536d528ed9Sopenharmony_ciconfig("cpp_standard") {
546d528ed9Sopenharmony_ci  cflags_c = [ "--std=c11" ]
556d528ed9Sopenharmony_ci  cflags_cc = [
566d528ed9Sopenharmony_ci    "--std=c++17",
576d528ed9Sopenharmony_ci    "--stdlib=libc++",
586d528ed9Sopenharmony_ci  ]
596d528ed9Sopenharmony_ci  ldflags = [ "--stdlib=libc++" ]
606d528ed9Sopenharmony_ci}
616d528ed9Sopenharmony_ci
626d528ed9Sopenharmony_ciif (current_os == "ios" || current_os == "mac") {
636d528ed9Sopenharmony_ci  config("rpath_config") {
646d528ed9Sopenharmony_ci    ldflags = [
656d528ed9Sopenharmony_ci      "-Xlinker",
666d528ed9Sopenharmony_ci      "-rpath",
676d528ed9Sopenharmony_ci      "-Xlinker",
686d528ed9Sopenharmony_ci      "@executable_path/Frameworks",
696d528ed9Sopenharmony_ci      "-Xlinker",
706d528ed9Sopenharmony_ci      "-rpath",
716d528ed9Sopenharmony_ci      "-Xlinker",
726d528ed9Sopenharmony_ci      "@loader_path/Frameworks",
736d528ed9Sopenharmony_ci    ]
746d528ed9Sopenharmony_ci  }
756d528ed9Sopenharmony_ci
766d528ed9Sopenharmony_ci  _sdk_info = exec_script("//build/config/ios/scripts/sdk_info.py",
776d528ed9Sopenharmony_ci                          [
786d528ed9Sopenharmony_ci                            "--target-cpu",
796d528ed9Sopenharmony_ci                            current_cpu,
806d528ed9Sopenharmony_ci                            "--target-environment",
816d528ed9Sopenharmony_ci                            target_environment,
826d528ed9Sopenharmony_ci                            "--deployment-target",
836d528ed9Sopenharmony_ci                            ios_deployment_target,
846d528ed9Sopenharmony_ci                          ],
856d528ed9Sopenharmony_ci                          "json")
866d528ed9Sopenharmony_ci
876d528ed9Sopenharmony_ci  _lib_swift_dir = "${_sdk_info.toolchain_path}/usr/lib/swift"
886d528ed9Sopenharmony_ci  if (current_os == "ios") {
896d528ed9Sopenharmony_ci    if (_sdk_info.is_simulator) {
906d528ed9Sopenharmony_ci      _system_lib_swift_dir = "$_lib_swift_dir/iphonesimulator"
916d528ed9Sopenharmony_ci    } else {
926d528ed9Sopenharmony_ci      _system_lib_swift_dir = "$_lib_swift_dir/iphoneos"
936d528ed9Sopenharmony_ci    }
946d528ed9Sopenharmony_ci  } else {
956d528ed9Sopenharmony_ci    _system_lib_swift_dir = "$_lib_swift_dir/macosx"
966d528ed9Sopenharmony_ci  }
976d528ed9Sopenharmony_ci
986d528ed9Sopenharmony_ci  config("swift_libdir") {
996d528ed9Sopenharmony_ci    lib_dirs = [
1006d528ed9Sopenharmony_ci      "${_sdk_info.sdk_path}/usr/lib/swift",
1016d528ed9Sopenharmony_ci      _system_lib_swift_dir,
1026d528ed9Sopenharmony_ci    ]
1036d528ed9Sopenharmony_ci  }
1046d528ed9Sopenharmony_ci}
105