# 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 specify defines and flags that
# are z/OS-specific.

config("compiler") {
  defines = [
    "_AE_BIMODAL=1",
    "_ALL_SOURCE",
    "_ENHANCED_ASCII_EXT=0xFFFFFFFF",
    "_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",
    "PATH_MAX=1024",
    "ZOSLIB_OVERRIDE_CLIB",
  ]

  cflags = [
    "-fno-short-enums",
    "-fno-xl-pragma-pack",
    "-fzos-le-char-mode=ascii",
    "-m64",
    "-march=arch14",
    "-mzos-target=zosv2r4",
    "-Wno-unknown-pragmas",
  ]

  cflags_cc = []

  asmflags = [
    "-Wa,-mGOFF",
    "-fno-integrated-as",
  ]

  ldflags = []
}
