# Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

{
  'variables': {
    'dart_debug_optimization_level%': '2',
  },
  'target_defaults': {
    'configurations': {
      'Dart_Linux_Base': {
        'abstract': 1,
        'defines': [
          '_FORTIFY_SOURCE=2',
        ],
        'cflags': [
          '-Werror',
          '<@(common_gcc_warning_flags)',
          '-Wnon-virtual-dtor',
          '-Wvla',
          '-Woverloaded-virtual',
          '-g3',
          '-ggdb3',
          '-fno-rtti',
          '-fno-exceptions',
          '-fstack-protector',
          '-Wa,--noexecstack',
        ],
        'ldflags': [
          '-Wl,-z,noexecstack',
          '-Wl,-z,now',
          '-Wl,-z,relro',
        ],
      },

      'Dart_Linux_ia32_Base': {
        'abstract': 1,
        'cflags': [
          '-m32',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m32',
        ],
      },

      'Dart_Linux_x64_Base': {
        'abstract': 1,
        'cflags': [
          '-m64',
          '-msse2',
        ],
        'ldflags': [
          '-m64',
        ],
      },

      'Dart_Linux_simarm_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-m32',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m32',
        ],
      },

      'Dart_Linux_simarmv6_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-m32',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m32',
        ],
      },

      'Dart_Linux_simarmv5te_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-m32',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m32',
        ],
      },

      'Dart_Linux_simarm64_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-m64',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m64',
        ],
      },

      'Dart_Linux_simdbc_Base': {
        'abstract': 1,
        'cflags': [ '-O3', '-m32', '-msse2', '-mfpmath=sse' ],
        'ldflags': [ '-m32', ],
      },

      'Dart_Linux_simdbc64_Base': {
        'abstract': 1,
        'cflags': [ '-O3', '-m64', '-msse2', '-mfpmath=sse' ],
        'ldflags': [ '-m64', ],
      },

      # ARM cross-build
      'Dart_Linux_xarm_Base': {
        'abstract': 1,
        'target_conditions': [
        ['_toolset=="target"', {
          'cflags': [
            '-marm',
            '-mfpu=vfp',
            '-Wno-psabi', # suppresses va_list warning
            '-fno-strict-overflow',
          ],
        }],
        ['_toolset=="host"', {
          'cflags': [
            '-m32',
            '-msse2',
            '-mfpmath=sse',
          ],
          'ldflags': [
            '-m32',
          ],
        }]]
      },

      # ARM native build
      'Dart_Linux_arm_Base': {
        'abstract': 1,
        'cflags': [
          '-marm',
          '-mfpu=vfp',
          '-Wno-psabi', # suppresses va_list warning
          '-fno-strict-overflow',
        ],
      },

      # ARMv6 cross-build
      'Dart_Linux_xarmv6_Base': {
        'abstract': 1,
        'target_conditions': [
        ['_toolset=="target"', {
          'cflags': [
            '-march=armv6',
            '-mfpu=vfp',
            '-Wno-psabi', # suppresses va_list warning
            '-fno-strict-overflow',
          ],
        }],
        ['_toolset=="host"', {
          'cflags': [
            '-m32',
            '-msse2',
            '-mfpmath=sse',
          ],
          'ldflags': [
            '-m32',
          ],
        }]]
      },

      # ARMv6 native build
      'Dart_Linux_armv6_Base': {
        'abstract': 1,
        'cflags': [
          '-march=armv6',
          '-mfpu=vfp',
          '-Wno-psabi', # suppresses va_list warning
          '-fno-strict-overflow',
        ],
      },

      # ARMv5 cross-build
      'Dart_Linux_xarmv5te_Base': {
        'abstract': 1,
        'target_conditions': [
        ['_toolset=="target"', {
          'cflags': [
            '-mthumb',
            '-mlong-calls',
            '-march=armv5te',
            '-mfloat-abi=soft',
            '-Wno-psabi', # suppresses va_list warning
            '-fno-strict-overflow',
          ],
        }],
        ['_toolset=="host"', {
          'cflags': [
            '-m32',
            '-msse2',
            '-mfpmath=sse',
          ],
          'ldflags': [
            '-m32',
          ],
        }]]
      },

      # ARMv5 native build
      'Dart_Linux_armv5te_Base': {
        'abstract': 1,
        'cflags': [
          '-mthumb',
          '-mlong-calls',
          '-march=armv5te',
          '-mfloat-abi=soft',
          '-Wno-psabi', # suppresses va_list warning
          '-fno-strict-overflow',
        ],
      },

      # ARM64 cross-build
      'Dart_Linux_xarm64_Base': {
        'abstract': 1,
        'target_conditions': [
        ['_toolset=="target"', {
          'cflags': [
            '-O3',
          ],
        }],
        ['_toolset=="host"', {
          'cflags': [
            '-O3',
            '-m64',
            '-msse2',
          ],
          'ldflags': [
            '-m64',
          ],
        }]]
      },

      # ARM64 native build
      'Dart_Linux_arm64_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
        ],
      },

      'Dart_Linux_simmips_Base': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-m32',
          '-msse2',
          '-mfpmath=sse',
        ],
        'ldflags': [
          '-m32',
        ],
      },

      # MIPS cross-build
      'Dart_Linux_xmips_Base': {
        'abstract': 1,
        'target_conditions': [
          ['_toolset=="target"', {
            'cflags': [
              '-EL',
              '-march=mips32',
              '-mhard-float',
              '-fno-strict-overflow',
            ],
            'ldflags': [
              '-EL',
            ],
          }],
          ['_toolset=="host"',{
            'cflags': [
              '-O3',
              '-m32',
              '-msse2',
              '-mfpmath=sse',
            ],
            'ldflags': [
              '-m32',
            ],
        }]]
      },

      # These flags are needed for tcmalloc to be able to collect stack traces
      # for heap profiling on mips.
      'Dart_Linux_xmips_Debug': {
        'abstract': 1,
        'target_conditions': [
          ['_toolset=="target"', {
            'cflags!': [
              '-fno-exceptions',
            ],
            'cflags': [
              '-fexceptions',
              '-funwind-tables',
            ],
          }],
        ],
      },

      # These flags are needed for tcmalloc to be able to collect stack traces
      # for heap profiling on mips.
      'Dart_Linux_xmips_Release': {
        'abstract': 1,
        'target_conditions': [
          ['_toolset=="target"', {
            'cflags!': [
              '-fno-exceptions',
            ],
            'cflags': [
              '-fexceptions',
              '-funwind-tables',
            ],
          }],
        ],
      },

      # MIPS native build
      'Dart_Linux_mips_Base': {
        'abstract': 1,
        'cflags': [
          '-march=mips32',
          '-mhard-float',
          '-fno-strict-overflow',
        ],
      },

      'Dart_Linux_Debug': {
        'abstract': 1,
        'cflags': [
          '-O<(dart_debug_optimization_level)',
          '-fno-omit-frame-pointer',
          # Clang on Linux will still omit frame pointers from leaf
          # functions unless told otherwise:
          # (note this flag only works on recent GCC versions.)
          #'-mno-omit-leaf-frame-pointer',
        ],
      },

      'Dart_Linux_Release': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-ffunction-sections',
          '-fno-omit-frame-pointer',
          # Clang on Linux will still omit frame pointers from leaf
          # functions unless told otherwise:
          # (note this flag only works on recent GCC versions.)
          #'-mno-omit-leaf-frame-pointer',
        ],
        'ldflags': [
          '-Wl,--gc-sections',
        ],
      },

      'Dart_Linux_Product': {
        'abstract': 1,
        'cflags': [
          '-O3',
          '-ffunction-sections',
          '-fomit-frame-pointer',
        ],
        'ldflags': [
          '-Wl,--gc-sections',
        ],
      },
    },
  },
}
