blob: 0925b7f549c5e41fa98c7f30368c25c371fc55da [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'variables': {
'chromium_code': 1,
# Put all transitive dependencies for Windows HMAC here.
# This is required so that we can build them for nacl win64.
'hmac_win64_related_sources': [
'hmac.cc',
'hmac.h',
'hmac_win.cc',
'secure_util.cc',
'secure_util.h',
'symmetric_key.h',
'symmetric_key_win.cc',
'third_party/nss/chromium-sha256.h',
'third_party/nss/sha512.cc',
],
},
'targets': [
{
'target_name': 'crypto',
'type': '<(component)',
'product_name': 'crcrypto', # Avoid colliding with OpenSSL's libcrypto
'dependencies': [
'../base/base.gyp:base',
'../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
],
'defines': [
'CRYPTO_IMPLEMENTATION',
],
'msvs_disabled_warnings': [
4018,
],
'conditions': [
[ 'os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and OS != "lb_shell"', {
'dependencies': [
'../build/linux/system.gyp:ssl',
],
'export_dependent_settings': [
'../build/linux/system.gyp:ssl',
],
'conditions': [
[ 'chromeos==1', {
'sources/': [ ['include', '_chromeos\\.cc$'] ]
},
],
],
}, { # os_posix != 1 or OS == "mac" or OS == "ios" or OS == "android"
'sources/': [
['exclude', '_nss\.cc$'],
['include', 'ec_private_key_nss\.cc$'],
['include', 'ec_signature_creator_nss\.cc$'],
['include', 'encryptor_nss\.cc$'],
['include', 'hmac_nss\.cc$'],
['include', 'signature_verifier_nss\.cc$'],
['include', 'symmetric_key_nss\.cc$'],
],
'sources!': [
'hmac_win.cc',
'openpgp_symmetric_encryption.cc',
'openpgp_symmetric_encryption.h',
'symmetric_key_win.cc',
],
}],
[ 'OS != "mac" and OS != "ios"', {
'sources!': [
'apple_keychain.h',
'mock_apple_keychain.cc',
'mock_apple_keychain.h',
],
}],
[ 'OS == "android"', {
'dependencies': [
'../third_party/openssl/openssl.gyp:openssl',
],
'sources/': [
['exclude', 'ec_private_key_nss\.cc$'],
['exclude', 'ec_signature_creator_nss\.cc$'],
['exclude', 'encryptor_nss\.cc$'],
['exclude', 'hmac_nss\.cc$'],
['exclude', 'signature_verifier_nss\.cc$'],
['exclude', 'symmetric_key_nss\.cc$'],
],
}],
[ 'os_bsd==1', {
'link_settings': {
'libraries': [
'-L/usr/local/lib -lexecinfo',
],
},
},
],
[ 'OS == "ios"', {
'sources!': [
# This class is stubbed out on iOS.
'rsa_private_key.cc',
],
}],
[ 'OS == "mac"', {
'link_settings': {
'libraries': [
'$(SDKROOT)/System/Library/Frameworks/Security.framework',
],
},
}, { # OS != "mac"
'sources!': [
'cssm_init.cc',
'cssm_init.h',
'mac_security_services_lock.cc',
'mac_security_services_lock.h',
],
}],
[ 'OS == "mac" or OS == "ios" or OS == "win"', {
'dependencies': [
'../third_party/nss/nss.gyp:nspr',
'../third_party/nss/nss.gyp:nss',
],
'export_dependent_settings': [
'../third_party/nss/nss.gyp:nspr',
'../third_party/nss/nss.gyp:nss',
],
}],
[ 'OS != "win"', {
'sources!': [
'capi_util.h',
'capi_util.cc',
],
}],
['OS == "lb_shell"', {
'dependencies' : [
'<(lbshell_root)/build/projects/posix_emulation.gyp:posix_emulation',
],
}],
['OS == "starboard"', {
'dependencies' : [
'<(DEPTH)/starboard/starboard.gyp:starboard',
],
}],
['OS == "lb_shell" or OS == "starboard"', {
'dependencies' : [
'../third_party/openssl/openssl.gyp:openssl',
],
'sources/': [
['exclude', '_nss.cc$'],
],
}],
[ 'use_openssl==1', {
# TODO(joth): Use a glob to match exclude patterns once the
# OpenSSL file set is complete.
'sources!': [
'ec_private_key_nss.cc',
'ec_signature_creator_nss.cc',
'encryptor_nss.cc',
'hmac_nss.cc',
'nss_util.cc',
'nss_util.h',
'openpgp_symmetric_encryption.cc',
'rsa_private_key_nss.cc',
'secure_hash_default.cc',
'signature_creator_nss.cc',
'signature_verifier_nss.cc',
'symmetric_key_nss.cc',
'third_party/nss/chromium-blapi.h',
'third_party/nss/chromium-blapit.h',
'third_party/nss/chromium-nss.h',
'third_party/nss/chromium-sha256.h',
'third_party/nss/pk11akey.cc',
'third_party/nss/secsign.cc',
'third_party/nss/sha512.cc',
],
}, {
'sources!': [
'ec_private_key_openssl.cc',
'ec_signature_creator_openssl.cc',
'encryptor_openssl.cc',
'hmac_openssl.cc',
'openssl_util.cc',
'openssl_util.h',
'rsa_private_key_openssl.cc',
'secure_hash_openssl.cc',
'signature_creator_openssl.cc',
'signature_verifier_openssl.cc',
'symmetric_key_openssl.cc',
],
},],
],
'sources': [
# NOTE: all transitive dependencies of HMAC on windows need
# to be placed in the source list above.
'<@(hmac_win64_related_sources)',
'apple_keychain.h',
'apple_keychain_ios.mm',
'apple_keychain_mac.mm',
'capi_util.cc',
'capi_util.h',
'crypto_export.h',
'crypto_module_blocking_password_delegate.h',
'cssm_init.cc',
'cssm_init.h',
'ghash.cc',
'ghash.h',
'ec_private_key.h',
'ec_private_key_nss.cc',
'ec_private_key_openssl.cc',
'ec_signature_creator.cc',
'ec_signature_creator.h',
'ec_signature_creator_impl.h',
'ec_signature_creator_nss.cc',
'ec_signature_creator_openssl.cc',
'encryptor.cc',
'encryptor.h',
'encryptor_nss.cc',
'encryptor_openssl.cc',
'hmac_nss.cc',
'hmac_openssl.cc',
'mac_security_services_lock.cc',
'mac_security_services_lock.h',
'mock_apple_keychain.cc',
'mock_apple_keychain.h',
'mock_apple_keychain_ios.cc',
'mock_apple_keychain_mac.cc',
'p224_spake.cc',
'p224_spake.h',
'nss_util.cc',
'nss_util.h',
'nss_util_internal.h',
'openpgp_symmetric_encryption.cc',
'openpgp_symmetric_encryption.h',
'openssl_util.cc',
'openssl_util.h',
'p224.cc',
'p224.h',
'random.h',
'random.cc',
'rsa_private_key.cc',
'rsa_private_key.h',
'rsa_private_key_ios.cc',
'rsa_private_key_mac.cc',
'rsa_private_key_nss.cc',
'rsa_private_key_openssl.cc',
'rsa_private_key_win.cc',
'scoped_capi_types.h',
'scoped_nss_types.h',
'secure_hash.h',
'secure_hash_default.cc',
'secure_hash_openssl.cc',
'sha2.cc',
'sha2.h',
'signature_creator.h',
'signature_creator_mac.cc',
'signature_creator_nss.cc',
'signature_creator_openssl.cc',
'signature_creator_win.cc',
'signature_verifier.h',
'signature_verifier_nss.cc',
'signature_verifier_openssl.cc',
'symmetric_key_nss.cc',
'symmetric_key_openssl.cc',
'third_party/nss/chromium-blapi.h',
'third_party/nss/chromium-blapit.h',
'third_party/nss/chromium-nss.h',
'third_party/nss/pk11akey.cc',
'third_party/nss/secsign.cc',
],
},
{
'target_name': 'crypto_unittests',
'type': '<(gtest_target_type)',
'sources': [
# Infrastructure files.
'run_all_unittests.cc',
# Tests.
'ec_private_key_unittest.cc',
'ec_signature_creator_unittest.cc',
'encryptor_unittest.cc',
'ghash_unittest.cc',
'hmac_unittest.cc',
'nss_util_unittest.cc',
'p224_unittest.cc',
'p224_spake_unittest.cc',
'random_unittest.cc',
'rsa_private_key_unittest.cc',
'rsa_private_key_nss_unittest.cc',
'secure_hash_unittest.cc',
'sha2_unittest.cc',
'signature_creator_unittest.cc',
'signature_verifier_unittest.cc',
'symmetric_key_unittest.cc',
'openpgp_symmetric_encryption_unittest.cc',
],
'dependencies': [
'crypto',
'../base/base.gyp:base',
'../base/base.gyp:test_support_base',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
],
'conditions': [
[ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios" and OS != "lb_shell"', {
'conditions': [
[ 'linux_use_tcmalloc==1', {
'dependencies': [
'../base/allocator/allocator.gyp:allocator',
],
},
],
],
'dependencies': [
'../build/linux/system.gyp:ssl',
],
}, { # os_posix != 1 or OS == "mac" or OS == "android" or OS == "ios"
'sources!': [
'rsa_private_key_nss_unittest.cc',
'openpgp_symmetric_encryption_unittest.cc',
]
}],
[ 'OS == "mac" or OS == "ios" or OS == "win"', {
'dependencies': [
'../third_party/nss/nss.gyp:nss',
],
}],
['OS == "ios"', {
'sources!': [
# These tests are excluded because they test classes that are not
# implemented on iOS.
'rsa_private_key_unittest.cc',
'signature_creator_unittest.cc',
'signature_verifier_unittest.cc',
],
}],
[ 'OS == "mac"', {
'dependencies': [
'../third_party/nss/nss.gyp:nspr',
],
}],
[ 'use_openssl==1', {
'sources!': [
'nss_util_unittest.cc',
'openpgp_symmetric_encryption_unittest.cc',
'rsa_private_key_nss_unittest.cc',
],
}],
],
},
],
'conditions': [
[ 'OS == "win"', {
'targets': [
{
'target_name': 'crypto_nacl_win64',
# We do not want nacl_helper to depend on NSS because this would
# require including a 64-bit copy of NSS. Thus, use the native APIs
# for the helper.
'type': '<(component)',
'dependencies': [
'../base/base.gyp:base_nacl_win64',
'../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations_win64',
],
'sources': [
'<@(hmac_win64_related_sources)',
],
'defines': [
'CRYPTO_IMPLEMENTATION',
'<@(nacl_win64_defines)',
],
'msvs_disabled_warnings': [
4018,
],
'configurations': {
'Common_Base': {
'msvs_target_platform': 'x64',
},
},
},
],
}],
['cobalt==1', {
'targets': [
{
'target_name': 'crypto_unittests_deploy',
'type': 'none',
'dependencies': [
'crypto_unittests',
],
'variables': {
'executable_name': 'crypto_unittests',
},
'includes': [ '../starboard/build/deploy.gypi' ],
},
],
}],
],
}