blob: 585fd348e3321f72fda8a8de96bfc045b37db6f8 [file] [log] [blame]
# 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' ],
},
],
}