# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/sanitizers/sanitizers.gni")
import("//build/toolchain/toolchain.gni")

# This is included by reference in the //build/config/compiler config that
# is applied to all targets. It is here to separate out the logic.

config("compiler") {
  defines = [
    "_AE_BIMODAL=1",
    "_ALL_SOURCE",
    "_ENHANCED_ASCII_EXT=0xFFFFFFFF",
    "_Export=extern",
    "_LARGE_TIME_API",
    "_OPEN_MSGQ_EXT",
    "_OPEN_SYS_FILE_EXT=1",
    "_OPEN_SYS_SOCK_IPV6 ",
    "_UNIX03_SOURCE ",
    "_UNIX03_THREADS",
    "_UNIX03_WITHDRAWN",
    "_XOPEN_SOURCE=600",
    "_XOPEN_SOURCE_EXTENDED",
    "__static_assert=static_assert",
    "PATH_MAX=1024",
  ]

  cflags = [
    "-q64",
    "-qASCII",
    "-Wc,DLL",
    "-Wa,GOFF",
    "-qENUM=INT",
    "-qEXPORTALL",
    "-qASM",
    "-qmakedep",
    "-qARCH=10",
    "-qTUNE=10",
    "-qasmlib=sys1.maclib:sys1.modgen",
    "-qfloat=IEEE",
    "-qlibansi",
    "-qgonumber",
    "-qlongname",
  ]

  cflags_cc = [
  ]

  asmflags = [
    "-Wa,GOFF",
  ]

  ldflags = [
  ]
}
