# Copyright 2017 Google Inc. All Rights Reserved.
{
  'variables': {
    'asm_target_arch%': '<(target_arch)',
    'boringssl_root%': '<(DEPTH)/third_party/boringssl/src',
    'optimize_target_for_speed': 1,
  },

  'target_defaults': {
    # Turn off bad-function-cast warning, as BoringSSL violates this sometimes.
    'defines': [
      'PURIFY',
      'TERMIO',
      '_REENTRANT',
    ],
    'cflags': [
      '-fPIC',
      '-fvisibility=hidden',
    ],
    'cflags_c': [
      '-std=gnu99',
      '-Wno-bad-function-cast',
    ],
    'cflags_c!': [
      '-Wbad-function-cast',
    ],

    'ldflags': [
      '-fPIC',
    ],

    'type': '<(library)',

    'conditions': [
      ['OS=="starboard"', {
        'variables': {
          'openssl_config_path': '<(boringssl_root)/config/starboard',
        },
        'dependencies': [
          '<(DEPTH)/starboard/client_porting/eztime/eztime.gyp:eztime',
          '<(DEPTH)/starboard/starboard_headers_only.gyp:starboard_headers_only',
        ],
        'sources!': [
          '<(boringssl_root)/crypto/rand_extra/deterministic.c',
          '<(boringssl_root)/crypto/rand_extra/fuchsia.c',
          '<(boringssl_root)/crypto/rand_extra/windows.c',
        ],
      }],
      ['OS=="starboard"', {
        'defines': [
          'NO_SYS_PARAM_H',
          'NO_SYS_UN_H',
          'NO_SYSLOG',
          'OPENSSL_NO_CAMELLIA',
          'OPENSSL_NO_CAPIENG',
          'OPENSSL_NO_CAST',
          'OPENSSL_NO_CMS',
          'OPENSSL_NO_DYNAMIC_ENGINE',
          'OPENSSL_NO_EC_NISTP_64_GCC_128',
          'OPENSSL_NO_GMP',
          'OPENSSL_NO_IDEA',
          'OPENSSL_NO_JPAKE',
          'OPENSSL_NO_KRB5',
          'OPENSSL_NO_MDC2',
          'OPENSSL_NO_OCSP',
          'OPENSSL_NO_RC5',
          'OPENSSL_NO_RFC3779',
          'OPENSSL_NO_SCTP',
          'OPENSSL_NO_SEED',
          'OPENSSL_NO_STORE',
          'OPENSSL_NO_SOCK',  # Added by Cobalt to remove unused socket code.
          'OPENSSL_NO_WHIRLPOOL',
          'OPENSSL_NO_POSIX_IO',
        ],
      }],  # OS == "starboard"
    ],
    'include_dirs': [
      '.',
      '<@(openssl_config_path)',
    ],
    'all_dependent_settings': {
      'include_dirs': [
        '<@(openssl_config_path)',
      ],
    },
  },
  'targets': [
    {
      'target_name': 'crypto_full',

      # Include the source file list generated by BoringSSL
      'includes': ['boringssl.gypi',],

      'sources': [
        '<@(boringssl_crypto_files)',
        '<@(boringssl_ssl_files)',
      ],
      'include_dirs': [
        '<(boringssl_root)/include',
      ],
      'all_dependent_settings': {
        'include_dirs': [
          '<(boringssl_root)/include',
        ],
      },

      'conditions': [
        # This massive, nested conditional block will select the correct batch
        # of assembly language files for the current OS and CPU architecture, or
        # it will turn off assembly language files entirely if the
        # |asm_target_arch| has been set to "none".
        ['sb_evergreen==1', {
          'conditions': [
            ['calling_convention not in ["aarch64", "eabi", "sysv", "windows"] or asm_target_arch not in ["x86", "x64", "arm", "arm64"]', {
              'defines': [
                'OPENSSL_NO_ASM',
              ],
            }, {  # calling_convention not in ["aarch64", "eabi", "sysv", "windows"] or asm_target_arch not in ["x86", "x64", "arm", "arm64"]
              'conditions': [
                ['calling_convention=="aarch64" or \
                  calling_convention=="eabi" or \
                  calling_convention=="sysv"', {
                  'conditions': [
                    ['asm_target_arch=="x86"', {
                      'sources': [
                        '<@(boringssl_linux_x86_files)',
                      ],
                    }],
                    ['asm_target_arch=="x64"', {
                      'sources': [
                        '<@(boringssl_linux_x86_64_files)',
                      ],
                    }],
                    ['asm_target_arch=="arm"', {
                      'sources': [
                        '<@(boringssl_linux_arm_files)',
                      ],
                    }],
                    ['asm_target_arch=="arm64"', {
                      'sources': [
                        '<@(boringssl_linux_aarch64_files)',
                      ],
                    }],
                  ],
                }],
                ['calling_convention=="windows"', {
                  'conditions': [
                    ['asm_target_arch=="x86"', {
                      'sources': [
                        '<@(boringssl_win_x86_files)',
                      ],
                    }],
                    ['asm_target_arch=="x64"', {
                      'sources': [
                        '<@(boringssl_win_x86_64_files)',
                      ],
                    }],
                  ],
                }],
              ],
            }],
          ],
        }, {
          'conditions': [
            ['target_os not in ["linux", "android", "tvos"] or asm_target_arch not in ["x86", "x64", "arm", "arm64"]', {
              # please read comments for |target_os=="win"| condition below
              'defines': [
                'OPENSSL_NO_ASM',
              ],
            }, {  # target_os in ["linux", "android", "tvos"] and asm_target_arch in ["none", "mips", "x86"]
              'conditions': [
                ['target_os=="linux" or target_os=="android"', {
                  'conditions': [
                    ['asm_target_arch=="x86"', {
                      'sources': [
                        '<@(boringssl_linux_x86_files)',
                      ],
                    }],
                    ['asm_target_arch=="x64"', {
                      'sources': [
                        '<@(boringssl_linux_x86_64_files)',
                      ],
                    }],
                    ['asm_target_arch=="arm"', {
                      'sources': [
                        '<@(boringssl_linux_arm_files)',
                      ],
                    }],
                    ['asm_target_arch=="arm64"', {
                      'sources': [
                        '<@(boringssl_linux_aarch64_files)',
                      ],
                    }],
                  ],
                }],
                ['target_os=="win"', {

                # For |target_os=="win"| an ASM rule uses ml.exe (aka MS Macro Assembler)
                # which we can't use with GNU format. As soon as ASM rule will be fixed
                # for using GNU Assembler, to accelerate "crypto" with assembler
                # implementations just remove target_os=="win" from abowe condition
                # |'asm_target_arch=="none" or target_os=="win"'| which currently
                # sets OPENSSL_NO_ASM for "win" too

                  'conditions': [
                    ['asm_target_arch=="x86"', {
                      'sources': [
                        '<@(boringssl_win_x86_files)',
                      ],
                    }],
                    ['asm_target_arch=="x64"', {
                      'sources': [
                        '<@(boringssl_win_x86_64_files)',
                      ],
                    }],
                  ],
                }],
                ['target_os=="tvos"', {
                  'conditions': [
                    ['asm_target_arch=="arm64"', {
                      'sources': [
                        '<@(boringssl_ios_aarch64_files)',
                      ],
                    }],
                    # Simulator
                    ['asm_target_arch=="x64"', {
                      'defines': [
                        'OPENSSL_NO_ASM',
                      ],
                    }],
                  ],
                }]
              ],
            }],
          ],
        }],
        ['OS=="starboard"', {
          'sources': [
            '<(boringssl_root)/crypto/rand_extra/starboard.c',
            '<(boringssl_root)/crypto/cpu-starboard.c',
          ],
        }],
      ],
    },
    {
      'target_name': 'crypto',
      'sources!': [
        '<(boringssl_root)/crypto/bio/connect.c',
        '<(boringssl_root)/crypto/bio/fd.c',
        '<(boringssl_root)/crypto/bio/socket.c',
        '<(boringssl_root)/crypto/bio/socket_helper.c',
      ],
      'dependencies': [ 'crypto_full' ],
    },
  ],
}
