1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 { 6 'variables': { 7 'chromium_code': 1, 8 }, 9 'includes': [ 10 'crypto.gypi', 11 ], 12 'targets': [ 13 { 14 'target_name': 'crypto', 15 'type': '<(component)', 16 'product_name': 'crcrypto', # Avoid colliding with OpenSSL's libcrypto 17 'dependencies': [ 18 '../base/base.gyp:base', 19 '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', 20 ], 21 'defines': [ 22 'CRYPTO_IMPLEMENTATION', 23 ], 24 'conditions': [ 25 [ 'os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', { 26 'dependencies': [ 27 '../build/linux/system.gyp:ssl', 28 ], 29 'export_dependent_settings': [ 30 '../build/linux/system.gyp:ssl', 31 ], 32 'conditions': [ 33 [ 'chromeos==1', { 34 'sources/': [ ['include', '_chromeos\\.cc$'] ] 35 }, 36 ], 37 ], 38 }, { # os_posix != 1 or OS == "mac" or OS == "ios" or OS == "android" 39 'sources!': [ 40 'hmac_win.cc', 41 'symmetric_key_win.cc', 42 ], 43 }], 44 [ 'OS != "mac" and OS != "ios"', { 45 'sources!': [ 46 'apple_keychain.h', 47 'mock_apple_keychain.cc', 48 'mock_apple_keychain.h', 49 ], 50 }], 51 [ 'OS == "android"', { 52 'includes': [ 53 '../build/android/cpufeatures.gypi', 54 ], 55 }], 56 [ 'os_bsd==1', { 57 'link_settings': { 58 'libraries': [ 59 '-L/usr/local/lib -lexecinfo', 60 ], 61 }, 62 }, 63 ], 64 [ 'OS == "mac"', { 65 'link_settings': { 66 'libraries': [ 67 '$(SDKROOT)/System/Library/Frameworks/Security.framework', 68 ], 69 }, 70 }, { # OS != "mac" 71 'sources!': [ 72 'cssm_init.cc', 73 'cssm_init.h', 74 'mac_security_services_lock.cc', 75 'mac_security_services_lock.h', 76 ], 77 }], 78 [ 'use_openssl == 0 and (OS == "mac" or OS == "ios" or OS == "win")', { 79 'dependencies': [ 80 '../third_party/nss/nss.gyp:nspr', 81 '../third_party/nss/nss.gyp:nss', 82 ], 83 'export_dependent_settings': [ 84 '../third_party/nss/nss.gyp:nspr', 85 '../third_party/nss/nss.gyp:nss', 86 ], 87 }], 88 [ 'OS != "win"', { 89 'sources!': [ 90 'capi_util.h', 91 'capi_util.cc', 92 ], 93 }], 94 [ 'OS == "win"', { 95 'msvs_disabled_warnings': [ 96 4267, # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 97 4018, 98 ], 99 }], 100 [ 'use_openssl==1', { 101 'dependencies': [ 102 '../third_party/boringssl/boringssl.gyp:boringssl', 103 ], 104 # TODO(joth): Use a glob to match exclude patterns once the 105 # OpenSSL file set is complete. 106 'sources!': [ 107 'ec_private_key_nss.cc', 108 'ec_signature_creator_nss.cc', 109 'encryptor_nss.cc', 110 'hmac_nss.cc', 111 'nss_util.cc', 112 'nss_util.h', 113 'nss_util_internal.h', 114 'rsa_private_key_nss.cc', 115 'secure_hash_default.cc', 116 'signature_creator_nss.cc', 117 'signature_verifier_nss.cc', 118 'symmetric_key_nss.cc', 119 'third_party/nss/chromium-blapi.h', 120 'third_party/nss/chromium-blapit.h', 121 'third_party/nss/chromium-nss.h', 122 'third_party/nss/chromium-prtypes.h', 123 'third_party/nss/chromium-sha256.h', 124 'third_party/nss/pk11akey.cc', 125 'third_party/nss/rsawrapr.c', 126 'third_party/nss/secsign.cc', 127 'third_party/nss/sha512.cc', 128 ], 129 }, { 130 'sources!': [ 131 'ec_private_key_openssl.cc', 132 'ec_signature_creator_openssl.cc', 133 'encryptor_openssl.cc', 134 'hmac_openssl.cc', 135 'openssl_bio_string.cc', 136 'openssl_bio_string.h', 137 'openssl_util.cc', 138 'openssl_util.h', 139 'rsa_private_key_openssl.cc', 140 'secure_hash_openssl.cc', 141 'signature_creator_openssl.cc', 142 'signature_verifier_openssl.cc', 143 'symmetric_key_openssl.cc', 144 ], 145 },], 146 ], 147 'sources': [ 148 '<@(crypto_sources)', 149 ], 150 }, 151 { 152 'target_name': 'crypto_unittests', 153 'type': 'executable', 154 'sources': [ 155 'curve25519_unittest.cc', 156 'ec_private_key_unittest.cc', 157 'ec_signature_creator_unittest.cc', 158 'encryptor_unittest.cc', 159 'ghash_unittest.cc', 160 'hkdf_unittest.cc', 161 'hmac_unittest.cc', 162 'nss_util_unittest.cc', 163 'openssl_bio_string_unittest.cc', 164 'p224_unittest.cc', 165 'p224_spake_unittest.cc', 166 'random_unittest.cc', 167 'rsa_private_key_unittest.cc', 168 'rsa_private_key_nss_unittest.cc', 169 'secure_hash_unittest.cc', 170 'sha2_unittest.cc', 171 'signature_creator_unittest.cc', 172 'signature_verifier_unittest.cc', 173 'symmetric_key_unittest.cc', 174 ], 175 'dependencies': [ 176 'crypto', 177 'crypto_test_support', 178 '../base/base.gyp:base', 179 '../base/base.gyp:run_all_unittests', 180 '../base/base.gyp:test_support_base', 181 '../testing/gmock.gyp:gmock', 182 '../testing/gtest.gyp:gtest', 183 ], 184 'conditions': [ 185 [ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', { 186 'conditions': [ 187 [ 'use_allocator!="none"', { 188 'dependencies': [ 189 '../base/allocator/allocator.gyp:allocator', 190 ], 191 }, 192 ], 193 ], 194 'dependencies': [ 195 '../build/linux/system.gyp:ssl', 196 ], 197 }, { # os_posix != 1 or OS == "mac" or OS == "android" or OS == "ios" 198 'sources!': [ 199 'rsa_private_key_nss_unittest.cc', 200 ] 201 }], 202 [ 'use_openssl == 0 and (OS == "mac" or OS == "ios" or OS == "win")', { 203 'dependencies': [ 204 '../third_party/nss/nss.gyp:nspr', 205 ], 206 }], 207 [ 'OS == "win"', { 208 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 209 'msvs_disabled_warnings': [4267, ], 210 }], 211 [ 'use_openssl==1', { 212 'dependencies': [ 213 '../third_party/boringssl/boringssl.gyp:boringssl', 214 ], 215 'sources!': [ 216 'nss_util_unittest.cc', 217 'rsa_private_key_nss_unittest.cc', 218 ], 219 }, { 220 'sources!': [ 221 'openssl_bio_string_unittest.cc', 222 ], 223 }], 224 ], 225 }, 226 ], 227 'conditions': [ 228 ['OS == "win" and target_arch=="ia32"', { 229 'targets': [ 230 { 231 'target_name': 'crypto_nacl_win64', 232 # We do not want nacl_helper to depend on NSS because this would 233 # require including a 64-bit copy of NSS. Thus, use the native APIs 234 # for the helper. 235 'type': '<(component)', 236 'dependencies': [ 237 '../base/base.gyp:base_win64', 238 '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations_win64', 239 ], 240 'sources': [ 241 '<@(hmac_win64_related_sources)', 242 ], 243 'defines': [ 244 'CRYPTO_IMPLEMENTATION', 245 '<@(nacl_win64_defines)', 246 ], 247 'msvs_disabled_warnings': [ 248 4018, 249 ], 250 'configurations': { 251 'Common_Base': { 252 'msvs_target_platform': 'x64', 253 }, 254 }, 255 }, 256 ], 257 }], 258 ['use_nss==1', { 259 'targets': [ 260 { 261 'target_name': 'crypto_test_support', 262 'type': 'static_library', 263 'dependencies': [ 264 '../base/base.gyp:base', 265 'crypto', 266 ], 267 'sources': [ 268 'scoped_test_nss_db.cc', 269 'scoped_test_nss_db.h', 270 'scoped_test_nss_chromeos_user.cc', 271 'scoped_test_nss_chromeos_user.h', 272 'scoped_test_system_nss_key_slot.cc', 273 'scoped_test_system_nss_key_slot.h', 274 ], 275 'conditions': [ 276 ['use_nss==0', { 277 'sources!': [ 278 'scoped_test_nss_db.cc', 279 'scoped_test_nss_db.h', 280 ], 281 }], 282 [ 'chromeos==0', { 283 'sources!': [ 284 'scoped_test_nss_chromeos_user.cc', 285 'scoped_test_nss_chromeos_user.h', 286 'scoped_test_system_nss_key_slot.cc', 287 'scoped_test_system_nss_key_slot.h', 288 ], 289 }], 290 ], 291 } 292 ]}, { # use_nss==0 293 'targets': [ 294 { 295 'target_name': 'crypto_test_support', 296 'type': 'none', 297 'sources': [], 298 } 299 ]}], 300 ], 301 } 302