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 'dependencies': [ 53 '../build/android/ndk.gyp:cpu_features', 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 ], 98 }], 99 [ 'use_openssl==1', { 100 'dependencies': [ 101 '../third_party/boringssl/boringssl.gyp:boringssl', 102 ], 103 # TODO(joth): Use a glob to match exclude patterns once the 104 # OpenSSL file set is complete. 105 'sources!': [ 106 'curve25519-donna.c', 107 'curve25519_nss.cc', 108 'ec_private_key_nss.cc', 109 'ec_signature_creator_nss.cc', 110 'encryptor_nss.cc', 111 'hmac_nss.cc', 112 'rsa_private_key_nss.cc', 113 'secure_hash_default.cc', 114 'signature_creator_nss.cc', 115 'signature_verifier_nss.cc', 116 'symmetric_key_nss.cc', 117 'third_party/nss/chromium-blapi.h', 118 'third_party/nss/chromium-blapit.h', 119 'third_party/nss/chromium-nss.h', 120 'third_party/nss/chromium-prtypes.h', 121 'third_party/nss/chromium-sha256.h', 122 'third_party/nss/pk11akey.cc', 123 'third_party/nss/rsawrapr.c', 124 'third_party/nss/secsign.cc', 125 'third_party/nss/sha512.cc', 126 ], 127 }, { 128 'sources!': [ 129 'aead_openssl.cc', 130 'aead_openssl.h', 131 'curve25519_openssl.cc', 132 'ec_private_key_openssl.cc', 133 'ec_signature_creator_openssl.cc', 134 'encryptor_openssl.cc', 135 'hmac_openssl.cc', 136 'openssl_bio_string.cc', 137 'openssl_bio_string.h', 138 'openssl_util.cc', 139 'openssl_util.h', 140 'rsa_private_key_openssl.cc', 141 'secure_hash_openssl.cc', 142 'signature_creator_openssl.cc', 143 'signature_verifier_openssl.cc', 144 'symmetric_key_openssl.cc', 145 ], 146 },], 147 [ 'use_openssl==1 and use_nss_certs==0', { 148 # Some files are built when NSS is used at all, either for the 149 # internal crypto library or the platform certificate library. 150 'sources!': [ 151 'nss_key_util.cc', 152 'nss_key_util.h', 153 'nss_util.cc', 154 'nss_util.h', 155 'nss_util_internal.h', 156 ], 157 },], 158 ], 159 'sources': [ 160 '<@(crypto_sources)', 161 ], 162 }, 163 { 164 'target_name': 'crypto_unittests', 165 'type': 'executable', 166 'sources': [ 167 'aead_openssl_unittest.cc', 168 'curve25519_unittest.cc', 169 'ec_private_key_unittest.cc', 170 'ec_signature_creator_unittest.cc', 171 'encryptor_unittest.cc', 172 'ghash_unittest.cc', 173 'hkdf_unittest.cc', 174 'hmac_unittest.cc', 175 'nss_key_util_unittest.cc', 176 'nss_util_unittest.cc', 177 'openssl_bio_string_unittest.cc', 178 'p224_unittest.cc', 179 'p224_spake_unittest.cc', 180 'random_unittest.cc', 181 'rsa_private_key_unittest.cc', 182 'secure_hash_unittest.cc', 183 'sha2_unittest.cc', 184 'signature_creator_unittest.cc', 185 'signature_verifier_unittest.cc', 186 'symmetric_key_unittest.cc', 187 ], 188 'dependencies': [ 189 'crypto', 190 'crypto_test_support', 191 '../base/base.gyp:base', 192 '../base/base.gyp:run_all_unittests', 193 '../base/base.gyp:test_support_base', 194 '../testing/gmock.gyp:gmock', 195 '../testing/gtest.gyp:gtest', 196 ], 197 'conditions': [ 198 [ 'use_nss_certs == 1', { 199 'conditions': [ 200 [ 'use_allocator!="none"', { 201 'dependencies': [ 202 '../base/allocator/allocator.gyp:allocator', 203 ], 204 }, 205 ], 206 ], 207 'dependencies': [ 208 '../build/linux/system.gyp:ssl', 209 ], 210 }], 211 [ 'use_openssl == 1 and use_nss_certs == 0', { 212 # Some files are built when NSS is used at all, either for the 213 # internal crypto library or the platform certificate library. 214 'sources!': [ 215 'nss_key_util_unittest.cc', 216 'nss_util_unittest.cc', 217 ], 218 }], 219 [ 'use_openssl == 0 and (OS == "mac" or OS == "ios" or OS == "win")', { 220 'dependencies': [ 221 '../third_party/nss/nss.gyp:nspr', 222 ], 223 }], 224 [ 'OS == "win"', { 225 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 226 'msvs_disabled_warnings': [4267, ], 227 }], 228 [ 'use_openssl==1', { 229 'dependencies': [ 230 '../third_party/boringssl/boringssl.gyp:boringssl', 231 ], 232 }, { 233 'sources!': [ 234 'openssl_bio_string_unittest.cc', 235 ], 236 }], 237 ], 238 }, 239 ], 240 'conditions': [ 241 ['OS == "win" and target_arch=="ia32"', { 242 'targets': [ 243 { 244 'target_name': 'crypto_nacl_win64', 245 # We do not want nacl_helper to depend on NSS because this would 246 # require including a 64-bit copy of NSS. Thus, use the native APIs 247 # for the helper. 248 'type': '<(component)', 249 'dependencies': [ 250 '../base/base.gyp:base_win64', 251 '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations_win64', 252 ], 253 'sources': [ 254 '<@(nacl_win64_sources)', 255 ], 256 'defines': [ 257 'CRYPTO_IMPLEMENTATION', 258 '<@(nacl_win64_defines)', 259 ], 260 'configurations': { 261 'Common_Base': { 262 'msvs_target_platform': 'x64', 263 }, 264 }, 265 }, 266 ], 267 }], 268 ['use_nss_certs==1', { 269 'targets': [ 270 { 271 'target_name': 'crypto_test_support', 272 'type': 'static_library', 273 'dependencies': [ 274 '../base/base.gyp:base', 275 'crypto', 276 ], 277 'sources': [ 278 'scoped_test_nss_db.cc', 279 'scoped_test_nss_db.h', 280 'scoped_test_nss_chromeos_user.cc', 281 'scoped_test_nss_chromeos_user.h', 282 'scoped_test_system_nss_key_slot.cc', 283 'scoped_test_system_nss_key_slot.h', 284 ], 285 'conditions': [ 286 ['use_nss_certs==0', { 287 'sources!': [ 288 'scoped_test_nss_db.cc', 289 'scoped_test_nss_db.h', 290 ], 291 }], 292 [ 'chromeos==0', { 293 'sources!': [ 294 'scoped_test_nss_chromeos_user.cc', 295 'scoped_test_nss_chromeos_user.h', 296 'scoped_test_system_nss_key_slot.cc', 297 'scoped_test_system_nss_key_slot.h', 298 ], 299 }], 300 ], 301 } 302 ]}, { # use_nss_certs==0 303 'targets': [ 304 { 305 'target_name': 'crypto_test_support', 306 'type': 'none', 307 'sources': [], 308 } 309 ]}], 310 ['test_isolation_mode != "noop"', { 311 'targets': [ 312 { 313 'target_name': 'crypto_unittests_run', 314 'type': 'none', 315 'dependencies': [ 316 'crypto_unittests', 317 ], 318 'includes': [ 319 '../build/isolate.gypi', 320 ], 321 'sources': [ 322 'crypto_unittests.isolate', 323 ], 324 }, 325 ], 326 }], 327 ], 328 } 329