blob: 1edb8cdfd9aa1910335171af45c0904d94b4bda9 [file] [log] [blame]
# Copyright 2017 Google Inc. All Rights Reserved.
{
'variables': {
'asm_target_arch%': '<(target_arch)',
'boringssl_root%': '<(DEPTH)/third_party/boringssl/src',
},
'target_defaults': {
# Turn off bad-function-cast warning, as BoringSSL violates this sometimes.
'defines': [
'PURIFY',
'TERMIO',
'_REENTRANT',
# We do not use TLS over UDP on Chromium so far.
'OPENSSL_NO_DTLS1',
],
'cflags': [
'-g',
'-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/starboard.c',
],
'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',
'<(boringssl_root)/crypto/rand_extra/deterministic.c',
'<(boringssl_root)/crypto/rand_extra/fuchsia.c',
'<(boringssl_root)/crypto/rand_extra/windows.c',
],
}],
['OS=="lb_shell"', {
'variables': {
'openssl_config_path': 'config/lbshell',
},
}],
['OS=="lb_shell" or OS=="starboard"', {
'defines': [
'GETPID_IS_MEANINGLESS',
'NO_SYS_PARAM_H',
'NO_SYS_UN_H',
'NO_SYSLOG',
'NO_WINDOWS_BRAINDEATH',
'OPENSSL_NO_BF',
'OPENSSL_NO_BUF_FREELISTS',
'OPENSSL_NO_CAMELLIA',
'OPENSSL_NO_CAPIENG',
'OPENSSL_NO_CAST',
'OPENSSL_NO_CMS',
'OPENSSL_NO_COMP',
'OPENSSL_NO_DGRAM', # Added by cobalt to remove unused UDP code.
'OPENSSL_NO_DYNAMIC_ENGINE',
'OPENSSL_NO_EC2M',
'OPENSSL_NO_EC_NISTP_64_GCC_128',
'OPENSSL_NO_ENGINE',
'OPENSSL_NO_GMP',
'OPENSSL_NO_GOST',
'OPENSSL_NO_HEARTBEATS', # Workaround for CVE-2014-0160.
'OPENSSL_NO_HW',
'OPENSSL_NO_IDEA',
'OPENSSL_NO_JPAKE',
'OPENSSL_NO_KRB5',
'OPENSSL_NO_MD2',
'OPENSSL_NO_MD4',
'OPENSSL_NO_MDC2',
'OPENSSL_NO_OCB',
'OPENSSL_NO_OCSP',
'OPENSSL_NO_RC2',
'OPENSSL_NO_RC4',
'OPENSSL_NO_RC5',
'OPENSSL_NO_RFC3779',
'OPENSSL_NO_RIPEMD',
'OPENSSL_NO_RMD160',
'OPENSSL_NO_SCTP',
'OPENSSL_NO_SEED',
'OPENSSL_NO_SRP',
'OPENSSL_NO_SSL2',
'OPENSSL_NO_SSL3', # Address CVE-2014-3566
'OPENSSL_NO_STATIC_ENGINE',
'OPENSSL_NO_STORE',
'OPENSSL_NO_SOCK', # Added by Cobalt to remove unused socket code.
'OPENSSL_NO_THREADS', # Added by Cobalt to reduce overall threads count.
'OPENSSL_NO_UI', # Added by Cobalt to remove unused "UI" code.
'OPENSSL_NO_UNIT_TEST',
'OPENSSL_NO_WHIRLPOOL',
'OPENSSL_USE_IPV6=0',
'B_ENDIAN',
'OPENSSL_NO_POSIX_IO',
],
'sources!': [
'<(boringssl_root)/crypto/bf/bf_cfb64.c',
'<(boringssl_root)/crypto/bf/bf_ecb.c',
'<(boringssl_root)/crypto/bf/bf_enc.c',
'<(boringssl_root)/crypto/bf/bf_ofb64.c',
'<(boringssl_root)/crypto/bf/bf_skey.c',
'<(boringssl_root)/crypto/engine/eng_all.c',
'<(boringssl_root)/crypto/engine/eng_cnf.c',
'<(boringssl_root)/crypto/engine/eng_ctrl.c',
'<(boringssl_root)/crypto/engine/eng_dyn.c',
'<(boringssl_root)/crypto/engine/eng_err.c',
'<(boringssl_root)/crypto/engine/eng_fat.c',
'<(boringssl_root)/crypto/engine/eng_init.c',
'<(boringssl_root)/crypto/engine/eng_lib.c',
'<(boringssl_root)/crypto/engine/eng_list.c',
'<(boringssl_root)/crypto/engine/eng_pkey.c',
'<(boringssl_root)/crypto/engine/eng_table.c',
'<(boringssl_root)/crypto/engine/tb_asnmth.c',
'<(boringssl_root)/crypto/engine/tb_cipher.c',
'<(boringssl_root)/crypto/engine/tb_dh.c',
'<(boringssl_root)/crypto/engine/tb_digest.c',
'<(boringssl_root)/crypto/engine/tb_dsa.c',
'<(boringssl_root)/crypto/engine/tb_ecdh.c',
'<(boringssl_root)/crypto/engine/tb_ecdsa.c',
'<(boringssl_root)/crypto/engine/tb_pkmeth.c',
'<(boringssl_root)/crypto/engine/tb_rand.c',
'<(boringssl_root)/crypto/engine/tb_rsa.c',
'<(boringssl_root)/crypto/engine/tb_store.c',
'<(boringssl_root)/crypto/rc2/rc2_cbc.c',
'<(boringssl_root)/crypto/rc2/rc2_ecb.c',
'<(boringssl_root)/crypto/rc2/rc2_skey.c',
'<(boringssl_root)/crypto/rc2/rc2cfb64.c',
'<(boringssl_root)/crypto/rc2/rc2ofb64.c',
'<(boringssl_root)/crypto/rc4/rc4_enc.c',
'<(boringssl_root)/crypto/rc4/rc4_skey.c',
'<(boringssl_root)/crypto/rc4/rc4_utl.c',
'<(boringssl_root)/crypto/ripemd/rmd_dgst.c',
'<(boringssl_root)/crypto/ripemd/rmd_one.c',
# Removed during Starboard port, found or made to be unneeded at
# link time.
'<(boringssl_root)/crypto/bio/b_sock.c',
'<(boringssl_root)/crypto/bio/bss_acpt.c',
'<(boringssl_root)/crypto/bio/bss_conn.c',
'<(boringssl_root)/crypto/bio/bss_dgram.c',
'<(boringssl_root)/crypto/bio/bss_fd.c',
'<(boringssl_root)/crypto/bio/bss_log.c',
'<(boringssl_root)/crypto/bio/bss_sock.c',
'<(boringssl_root)/crypto/comp/c_rle.c',
'<(boringssl_root)/crypto/comp/c_zlib.c',
'<(boringssl_root)/crypto/comp/comp_err.c',
'<(boringssl_root)/crypto/comp/comp_lib.c',
'<(boringssl_root)/crypto/des/read2pwd.c',
'<(boringssl_root)/crypto/dso/dso_dl.c',
'<(boringssl_root)/crypto/dso/dso_dlfcn.c',
'<(boringssl_root)/crypto/dso/dso_err.c',
'<(boringssl_root)/crypto/dso/dso_lib.c',
'<(boringssl_root)/crypto/dso/dso_null.c',
'<(boringssl_root)/crypto/dso/dso_openssl.c',
'<(boringssl_root)/crypto/ebcdic.c',
'<(boringssl_root)/crypto/evp/e_bf.c',
'<(boringssl_root)/crypto/evp/e_old.c',
'<(boringssl_root)/crypto/evp/e_rc2.c',
'<(boringssl_root)/crypto/evp/e_rc4.c',
'<(boringssl_root)/crypto/evp/e_rc4_hmac_md5.c',
'<(boringssl_root)/crypto/evp/e_rc5.c',
'<(boringssl_root)/crypto/evp/e_rc5.c',
'<(boringssl_root)/crypto/evp/m_md4.c',
'<(boringssl_root)/crypto/evp/m_mdc2.c',
'<(boringssl_root)/crypto/evp/m_ripemd.c',
'<(boringssl_root)/crypto/evp/m_wp.c',
'<(boringssl_root)/crypto/krb5/krb5_asn.c',
'<(boringssl_root)/crypto/md4/md4_dgst.c',
'<(boringssl_root)/crypto/md4/md4_one.c',
'<(boringssl_root)/crypto/o_str.c',
'<(boringssl_root)/crypto/pqueue/pqueue.c',
'<(boringssl_root)/crypto/rand/rand_egd.c',
'<(boringssl_root)/crypto/rand/randfile.c',
'<(boringssl_root)/crypto/srp/srp_lib.c',
'<(boringssl_root)/crypto/srp/srp_vfy.c',
'<(boringssl_root)/crypto/ui/ui_compat.c',
'<(boringssl_root)/crypto/ui/ui_err.c',
'<(boringssl_root)/crypto/ui/ui_lib.c',
'<(boringssl_root)/crypto/ui/ui_openssl.c',
'<(boringssl_root)/crypto/ui/ui_util.c',
'<(boringssl_root)/ssl/d1_both.c',
'<(boringssl_root)/ssl/d1_clnt.c',
'<(boringssl_root)/ssl/d1_enc.c',
'<(boringssl_root)/ssl/d1_lib.c',
'<(boringssl_root)/ssl/d1_meth.c',
'<(boringssl_root)/ssl/d1_pkt.c',
'<(boringssl_root)/ssl/kssl.c',
'<(boringssl_root)/ssl/d1_srvr.c',
],
}], # OS == "lb_shell" or OS == "starboard"
],
'include_dirs': [
'.',
'<@(openssl_config_path)',
],
'all_dependent_settings': {
'include_dirs': [
'<@(openssl_config_path)',
],
},
},
'targets': [
{
'target_name': 'crypto',
# 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".
['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", "ia32"]
'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',
],
}],
],
}]
],
}],
],
},
],
}