# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/sysroot.gni")

config("sdk") {
  ldflags = []
  cflags = []

  if (is_clang) {
    # Don't allow visible symbols from libc++ to be re-exported.
    ldflags += [ "-Wl,--exclude-libs=libc++.a" ]
  }

  if (sysroot != "") {
    cflags += [ "--sysroot=" + sysroot ]
    ldflags += [ "--sysroot=" + sysroot ]

    # Need to get some linker flags out of the sysroot.
    ldflags += [ exec_script("sysroot_ld_path.py",
                             [
                               rebase_path("//build/linux/sysroot_ld_path.sh",
                                           root_build_dir),
                               sysroot,
                             ],
                             "value") ]

    # When using the pulled Debian sysroot with gcc, we have to specify these
    # excplicitly.
    if (dart_use_debian_sysroot && !is_clang) {
      cflags += [
        "-I=/usr/include/c++/4.8",
        "-I=/usr/include/c++/4.8/i486-linux-gnu",
      ]
    }
  }

  if (is_qemu) {
    cflags += [ "-DDART_RUN_IN_QEMU_ARMv7" ]
  }
}

config("executable_config") {
  # GDB cannot find the executable's mapping in QEMU when PIE is enabled.
  if (is_qemu) {
    cflags = [ "-fno-pie" ]
    ldflags = [ "-no-pie" ]
  } else if (current_cpu != "x86") {
    cflags = [ "-fPIE" ]
    ldflags = [ "-pie" ]
  }
}
