# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
{
  'includes': [
    '../../coreconf/config.gypi'
  ],
  'targets': [
    {
      'target_name': 'intel-gcm-s_lib',
      'type': 'static_library',
      'sources': [
        'intel-aes.s',
        'intel-gcm.s',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'cc_is_clang==1', {
          'cflags': [
            '-no-integrated-as',
          ],
          'cflags_mozilla': [
            '-no-integrated-as',
          ],
          'asflags_mozilla': [
            '-no-integrated-as',
          ],
        }],
      ],
    },
    {
      'target_name': 'intel-gcm-wrap_c_lib',
      'type': 'static_library',
      'sources': [
        'intel-gcm-wrap.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ '(OS=="linux" or OS=="android") and target_arch=="x64"', {
          'dependencies': [
            'intel-gcm-s_lib',
          ],
        }],
      ],
      'cflags': [
        '-mssse3',
      ],
      'cflags_mozilla': [
        '-mssse3'
      ],
    },
    {
      'target_name': 'hw-acc-crypto-avx',
      'type': 'static_library',
      # 'sources': [
      #   All AVX hardware accelerated crypto currently requires x64
      # ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'target_arch=="x64"', {
          'cflags': [
            '-mssse3',
            '-msse4.1',
            '-msse4.2'
          ],
          'cflags_mozilla': [
            '-mssse3',
            '-msse4.1',
            '-msse4.2',
            '-mpclmul',
            '-maes',
            '-mavx',
          ],
          # GCC doesn't define this.
          'defines': [
            '__SSSE3__',
          ],
        }],
        [ 'OS=="linux" or OS=="android" or OS=="dragonfly" or OS=="freebsd" or \
           OS=="netbsd" or OS=="openbsd"', {
          'cflags': [
            '-mpclmul',
            '-maes',
            '-mavx',
          ],
        }],
        # macOS build doesn't use cflags.
        [ 'OS=="mac" or OS=="ios"', {
          'xcode_settings': {
            'OTHER_CFLAGS': [
              '-mssse3',
              '-msse4.1',
              '-msse4.2',
              '-mpclmul',
              '-maes',
              '-mavx',
            ],
          },
        }],
        [ 'target_arch=="arm"', {
          # Gecko doesn't support non-NEON platform on Android, but tier-3
          # platform such as Linux/arm will need it
          'cflags_mozilla': [
            '-mfpu=neon'
          ],
        }],
        [ 'target_arch=="x64"', {
          'sources': [
            'verified/Hacl_Poly1305_128.c',
            'verified/Hacl_Chacha20_Vec128.c',
            'verified/Hacl_Chacha20Poly1305_128.c',
          ],
        }],
      ],
    },
    {
      'target_name': 'hw-acc-crypto-avx2',
      'type': 'static_library',
      # 'sources': [
      #   All AVX2 hardware accelerated crypto currently requires x64
      # ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'target_arch=="x64"', {
          'cflags': [
            '-mssse3',
            '-msse4.1',
            '-msse4.2'
          ],
          'cflags_mozilla': [
            '-mssse3',
            '-msse4.1',
            '-msse4.2',
            '-mpclmul',
            '-maes',
            '-mavx',
            '-mavx2',
          ],
          # GCC doesn't define this.
          'defines': [
            '__SSSE3__',
          ],
        }],
        [ 'OS=="linux" or OS=="android" or OS=="dragonfly" or OS=="freebsd" or \
           OS=="netbsd" or OS=="openbsd"', {
          'cflags': [
            '-mpclmul',
            '-maes',
            '-mavx',
            '-mavx2',
          ],
        }],
        # macOS build doesn't use cflags.
        [ 'OS=="mac" or OS=="ios"', {
          'xcode_settings': {
            'OTHER_CFLAGS': [
              '-mssse3',
              '-msse4.1',
              '-msse4.2',
              '-mpclmul',
              '-maes',
              '-mavx',
              '-mavx2',
            ],
          },
        }],
        [ 'target_arch=="arm"', {
          # Gecko doesn't support non-NEON platform on Android, but tier-3
          # platform such as Linux/arm will need it
          'cflags_mozilla': [
            '-mfpu=neon'
          ],
        }],
        [ 'target_arch=="x64"', {
          'sources': [
            'verified/Hacl_Poly1305_256.c',
            'verified/Hacl_Chacha20_Vec256.c',
            'verified/Hacl_Chacha20Poly1305_256.c',
          ],
        }],
      ],
    },
    {
      'target_name': 'gcm-aes-x86_c_lib',
      'type': 'static_library',
      'sources': [
        'gcm-x86.c', 'aes-x86.c'
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      # Enable isa option for pclmul and aes-ni; supported since gcc 4.4.
      # This is only supported by x84/x64. It's not needed for Windows,
      # unless clang-cl is used.
      'cflags_mozilla': [
        '-mpclmul', '-maes'
      ],
      'conditions': [
        [ 'OS=="linux" or OS=="android" or OS=="dragonfly" or OS=="freebsd" or OS=="netbsd" or OS=="openbsd"', {
          'cflags': [
            '-mpclmul', '-maes'
          ],
        }],
        # macOS build doesn't use cflags.
        [ 'OS=="mac" or OS=="ios"', {
          'xcode_settings': {
            'OTHER_CFLAGS': [
              '-mpclmul', '-maes'
            ],
          },
        }]
      ]
    },
    {
      'target_name': 'sha-x86_c_lib',
      'type': 'static_library',
      'sources': [
        'sha256-x86.c'
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'cflags': [
        '-msha',
        '-mssse3',
        '-msse4.1'
      ],
      'cflags_mozilla': [
        '-msha',
        '-mssse3',
        '-msse4.1'
      ],
      'conditions': [
        # macOS build doesn't use cflags.
        [ 'OS=="mac" or OS=="ios"', {
          'xcode_settings': {
            'OTHER_CFLAGS': [
              '-msha',
              '-mssse3',
              '-msse4.1'
            ],
          },
        }]
      ]
    },
    {
      'target_name': 'gcm-aes-arm32-neon_c_lib',
      'type': 'static_library',
      'sources': [
        'gcm-arm32-neon.c'
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'cflags': [
        '-march=armv7',
        '-mfpu=neon',
        '<@(softfp_cflags)',
      ],
      'cflags_mozilla': [
        '-mfpu=neon',
        '<@(softfp_cflags)',
      ]
    },
    {
      'target_name': 'gcm-aes-aarch64_c_lib',
      'type': 'static_library',
      'sources': [
        'gcm-aarch64.c'
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'cflags': [
        '-march=armv8-a+crypto'
      ],
      'cflags_mozilla': [
        '-march=armv8-a+crypto'
      ]
    },
    {
      'target_name': 'gcm-aes-ppc_c_lib',
      'type': 'static_library',
      'sources': [
        'gcm-ppc.c',
        'sha512-p8.s',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'disable_crypto_vsx==0', {
          'cflags': [
            '-mcrypto',
            '-maltivec'
           ],
           'cflags_mozilla': [
             '-mcrypto',
             '-maltivec'
           ],
        }, 'disable_crypto_vsx==1', {
          'cflags': [
            '-maltivec'
          ],
          'cflags_mozilla': [
            '-maltivec'
          ],
        }]
      ]
    },
    {
      'target_name': 'gcm-aes-ppc_lib',
      'type': 'static_library',
      'sources': [
        'ppc-gcm.s',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'cc_is_clang==1', {
          'cflags': [
            '-no-integrated-as',
          ],
          'cflags_mozilla': [
            '-no-integrated-as',
          ],
          'asflags_mozilla': [
            '-no-integrated-as',
          ],
        }],
      ],
    },
    {
      'target_name': 'ppc-gcm-wrap-nodepend_c_lib',
      'type': 'static_library',
      'sources': [
        'ppc-gcm-wrap.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'gcm-aes-ppc_lib',
      ],
    },
    {
      'target_name': 'ppc-gcm-wrap_c_lib',
      'type': 'static_library',
      'sources': [
        'ppc-gcm-wrap.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'gcm-aes-ppc_lib',
      ],
      'defines!': [
        'FREEBL_NO_DEPEND',
      ],
    },
    {
      'target_name': 'gcm-sha512-nodepend-ppc_c_lib',
      'type': 'static_library',
      'sources': [
        'sha512.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'disable_crypto_vsx==0', {
          'cflags': [
            '-mcrypto',
            '-maltivec',
            '-mvsx',
            '-funroll-loops',
            '-fpeel-loops'
           ],
           'cflags_mozilla': [
            '-mcrypto',
            '-maltivec',
            '-mvsx',
            '-funroll-loops',
            '-fpeel-loops'
           ],
        }, 'disable_crypto_vsx==1', {
          'cflags': [
            '-maltivec',
            '-funroll-loops',
            '-fpeel-loops'
          ],
          'cflags_mozilla': [
            '-maltivec',
            '-funroll-loops',
            '-fpeel-loops'
          ],
        }]
      ]
    },
    {
      'target_name': 'gcm-sha512-ppc_c_lib',
      'type': 'static_library',
      'sources': [
        'sha512.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'disable_crypto_vsx==0', {
          'cflags': [
            '-mcrypto',
            '-maltivec',
            '-mvsx',
            '-funroll-loops',
            '-fpeel-loops'
           ],
           'cflags_mozilla': [
            '-mcrypto',
            '-maltivec',
            '-mvsx',
            '-funroll-loops',
            '-fpeel-loops'
           ],
        }, 'disable_crypto_vsx==1', {
          'cflags': [
            '-maltivec',
            '-funroll-loops',
            '-fpeel-loops'
          ],
          'cflags_mozilla': [
            '-maltivec',
            '-funroll-loops',
            '-fpeel-loops'
          ],
        }]
      ],
      'defines!': [
        'FREEBL_NO_DEPEND',
      ],
    },
    {
      'target_name': 'chacha20-ppc_lib',
      'type': 'static_library',
      'sources': [
        'chacha20poly1305-ppc.c',
        'chacha20-ppc64le.S',
      ]
    },
    {
      'target_name': 'armv8_c_lib',
      'type': 'static_library',
      'sources': [
        'aes-armv8.c',
        'sha1-armv8.c',
        'sha256-armv8.c',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ],
      'conditions': [
        [ 'target_arch=="arm"', {
          'cflags': [
            '-march=armv8-a',
            '-mfpu=crypto-neon-fp-armv8',
            '<@(softfp_cflags)',
          ],
          'cflags_mozilla': [
            '-march=armv8-a',
            '-mfpu=crypto-neon-fp-armv8',
            '<@(softfp_cflags)',
          ],
        }, 'target_arch=="arm64" or target_arch=="aarch64"', {
          'cflags': [
            '-march=armv8-a+crypto'
          ],
          'cflags_mozilla': [
            '-march=armv8-a+crypto'
          ],
        }]
      ]
    },
    {
      'target_name': 'freebl',
      'type': 'static_library',
      'sources': [
        'loader.c'
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports'
      ]
    },
    # Build a static freebl library so we can statically link it into
    # the binary. This way we don't have to dlopen() the shared lib
    # but can directly call freebl functions.
    {
      'target_name': 'freebl_static',
      'type': 'static_library',
      'includes': [
        'freebl_base.gypi',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'hw-acc-crypto-avx',
        'hw-acc-crypto-avx2',
      ],
      'conditions': [
        [ 'target_arch=="ia32" or target_arch=="x64"', {
          'dependencies': [
            'gcm-aes-x86_c_lib',
          ],
        }, '(disable_arm_hw_aes==0 or disable_arm_hw_sha1==0 or disable_arm_hw_sha2==0) and (target_arch=="arm" or target_arch=="arm64" or target_arch=="aarch64")', {
          'dependencies': [
            'armv8_c_lib'
          ],
        }],
        [ '(target_arch=="ia32" or target_arch=="x64") and disable_intel_hw_sha==0', {
          'dependencies': [
            'sha-x86_c_lib',
          ],
        }],
        [ 'disable_arm32_neon==0 and target_arch=="arm"', {
          'dependencies': [
            'gcm-aes-arm32-neon_c_lib',
          ],
        }],
        [ 'disable_arm32_neon==1 and target_arch=="arm"', {
          'defines!': [
            'NSS_DISABLE_ARM32_NEON',
          ],
        }],
        [ 'target_arch=="arm64" or target_arch=="aarch64"', {
          'dependencies': [
            'gcm-aes-aarch64_c_lib',
          ],
        }],
        [ 'disable_altivec==0 and target_arch=="ppc64"', {
          'dependencies': [
            'gcm-aes-ppc_c_lib',
            'gcm-sha512-ppc_c_lib',
          ],
        }],
        [ 'disable_altivec==0 and target_arch=="ppc64le"', {
          'dependencies': [
            'gcm-aes-ppc_c_lib',
            'gcm-sha512-ppc_c_lib',
            'chacha20-ppc_lib',
            'ppc-gcm-wrap_c_lib',
          ],
        }],
        [ 'disable_altivec==1 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
          'defines!': [
            'NSS_DISABLE_ALTIVEC',
          ],
        }],
        [ 'disable_crypto_vsx==1 and (target_arch=="ppc" or target_arch=="ppc64" or target_arch=="ppc64le")', {
          'defines!': [
            'NSS_DISABLE_CRYPTO_VSX',
          ],
        }],
        [ 'OS=="linux"', {
          'defines!': [
            'FREEBL_NO_DEPEND',
            'FREEBL_LOWHASH',
            'USE_HW_AES',
            'INTEL_GCM',
            'PPC_GCM',
          ],
          'conditions': [
            [ 'target_arch=="x64"', {
              # The AES assembler code doesn't work in static builds.
              # The linker complains about non-relocatable code, and I
              # currently don't know how to fix this properly.
              'sources!': [
                'intel-aes.s',
                'intel-gcm.s',
              ],
            }],
          ],
        }],
      ],
    },
    {
      'target_name': '<(freebl_name)',
      'type': 'shared_library',
      'includes': [
        'freebl_base.gypi',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'hw-acc-crypto-avx',
        'hw-acc-crypto-avx2',
      ],
      'conditions': [
        [ 'target_arch=="ia32" or target_arch=="x64"', {
          'dependencies': [
            'gcm-aes-x86_c_lib',
          ]
        }, 'target_arch=="arm" or target_arch=="arm64" or target_arch=="aarch64"', {
          'dependencies': [
            'armv8_c_lib',
          ],
        }],
        [ '(target_arch=="ia32" or target_arch=="x64") and disable_intel_hw_sha==0', {
          'dependencies': [
            'sha-x86_c_lib',
          ],
        }],
        [ 'disable_arm32_neon==0 and target_arch=="arm"', {
          'dependencies': [
            'gcm-aes-arm32-neon_c_lib',
          ],
        }],
        [ 'disable_arm32_neon==1 and target_arch=="arm"', {
          'defines!': [
            'NSS_DISABLE_ARM32_NEON',
          ],
        }],
        [ 'target_arch=="arm64" or target_arch=="aarch64"', {
          'dependencies': [
            'gcm-aes-aarch64_c_lib',
          ],
        }],
        [ 'disable_altivec==0', {
          'conditions': [
            [ 'target_arch=="ppc64"', {
              'dependencies': [
                'gcm-aes-ppc_c_lib',
                'gcm-sha512-nodepend-ppc_c_lib',
              ],
            }, 'target_arch=="ppc64le"', {
               'dependencies': [
                 'gcm-aes-ppc_c_lib',
                 'gcm-sha512-nodepend-ppc_c_lib',
                 'ppc-gcm-wrap-nodepend_c_lib',
               ],
            }],
          ],
        }],
        [ 'disable_altivec==1 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
          'defines!': [
            'NSS_DISABLE_ALTIVEC',
          ],
        }],
        [ 'disable_crypto_vsx==1 and (target_arch=="ppc" or target_arch=="ppc64" or target_arch=="ppc64le")', {
          'defines!': [
            'NSS_DISABLE_CRYPTO_VSX',
          ],
        }],
        [ 'OS!="linux"', {
          'conditions': [
            [ 'moz_fold_libs==0', {
              'dependencies': [
                '<(DEPTH)/lib/util/util.gyp:nssutil3',
              ],
            }, {
              'libraries': [
                '<(moz_folded_library_name)',
              ],
            }],
          ],
        }],
        [ '(OS=="linux" or OS=="android") and target_arch=="x64"', {
          'dependencies': [
            'intel-gcm-wrap_c_lib',
          ],
        }],
        [ 'OS=="win" and (target_arch=="ia32" or target_arch=="x64") and cc_is_clang==1', {
          'dependencies': [
            'intel-gcm-wrap_c_lib',
          ],
        }],
        [ 'OS=="linux"', {
          'sources': [
            'nsslowhash.c',
            'stubs.c',
          ],
        }],
      ],
      'variables': {
       'conditions': [
         [ 'OS=="linux"', {
           'mapfile': 'freebl_hash_vector.def',
         }, {
           'mapfile': 'freebl.def',
         }],
       ]
      },
    },
    {
      'target_name': 'freebl_64int_3',
      'includes': [
        'freebl_base.gypi',
      ],
      'type': 'shared_library',
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'hw-acc-crypto-avx',
        'hw-acc-crypto-avx2',
      ],
    },
    {
      'target_name': 'freebl_64fpu_3',
      'includes': [
        'freebl_base.gypi',
      ],
      'type': 'shared_library',
      'sources': [
        'mpi/mpi_sparc.c',
        'mpi/mpv_sparcv9.s',
        'mpi/montmulfv9.s',
      ],
      'dependencies': [
        '<(DEPTH)/exports.gyp:nss_exports',
        'hw-acc-crypto-avx',
        'hw-acc-crypto-avx2',
      ],
      'asflags_mozilla': [
        '-mcpu=v9', '-Wa,-xarch=v9a'
      ],
      'defines': [
        'MP_NO_MP_WORD',
        'MP_USE_UINT_DIGIT',
        'MP_ASSEMBLY_MULTIPLY',
        'MP_USING_MONT_MULF',
        'MP_MONT_USE_MP_MUL',
      ],
    },
  ],
  'conditions': [
    [ 'OS=="linux"', {
      # stub build
      'targets': [
        {
          'target_name': 'freebl3',
          'type': 'shared_library',
          'defines': [
            'FREEBL_NO_DEPEND',
          ],
          'sources': [
            'lowhash_vector.c'
          ],
          'dependencies': [
            '<(DEPTH)/exports.gyp:nss_exports'
          ],
          'variables': {
            'mapfile': 'freebl_hash.def'
          }
        },
      ],
    }],
  ],
  'target_defaults': {
    'include_dirs': [
      'mpi',
      'ecl',
      'verified',
      'verified/kremlin/include',
      'verified/kremlin/kremlib/dist/minimal',
      'deprecated',
    ],
    'defines': [
      'SHLIB_SUFFIX=\"<(dll_suffix)\"',
      'SHLIB_PREFIX=\"<(dll_prefix)\"',
      'SHLIB_VERSION=\"3\"',
      'SOFTOKEN_SHLIB_VERSION=\"3\"',
      'RIJNDAEL_INCLUDE_TABLES',
      'MP_API_COMPATIBLE'
    ],
    'conditions': [
      [ 'OS=="win" and target_arch=="ia32"', {
        'msvs_settings': {
          'VCCLCompilerTool': {
            #TODO: -Ox optimize flags
            'PreprocessorDefinitions': [
              'MP_ASSEMBLY_MULTIPLY',
              'MP_ASSEMBLY_SQUARE',
              'MP_ASSEMBLY_DIV_2DX1D',
              'MP_USE_UINT_DIGIT',
              'MP_NO_MP_WORD',
              'USE_HW_AES',
              'INTEL_GCM',
            ],
          },
        },
      }],
      [ 'OS=="win" and target_arch=="x64"', {
        'msvs_settings': {
          'VCCLCompilerTool': {
            #TODO: -Ox optimize flags
            'PreprocessorDefinitions': [
              # Should be copied to mingw defines below
              'MP_IS_LITTLE_ENDIAN',
              'NSS_BEVAND_ARCFOUR',
              'MPI_AMD64',
              'MP_ASSEMBLY_MULTIPLY',
              'NSS_USE_COMBA',
              'USE_HW_AES',
              'INTEL_GCM',
            ],
          },
        },
      }],
      [ '(OS=="win" or OS=="mac" or OS=="ios") and (target_arch=="ia32" or target_arch=="x64") and disable_intel_hw_sha==0', {
        'defines': [
          'USE_HW_SHA2',
        ],
      }],
      [ '(OS=="win" or OS=="mac" or OS=="ios") and (target_arch=="arm64" or target_arch=="aarch64") and disable_arm_hw_aes==0', {
        'defines': [
          'USE_HW_AES',
        ],
      }],
      [ '(OS=="win" or OS=="mac" or OS=="ios") and (target_arch=="arm64" or target_arch=="aarch64") and disable_arm_hw_sha1==0', {
        'defines': [
          'USE_HW_SHA1',
        ],
      }],
      [ '(OS=="win" or OS=="mac" or OS=="ios") and (target_arch=="arm64" or target_arch=="aarch64") and disable_arm_hw_sha2==0', {
        'defines': [
          'USE_HW_SHA2',
        ],
      }],
      [ 'cc_use_gnu_ld==1 and OS=="win" and target_arch=="x64"', {
        # mingw x64
        'defines': [
          'MP_IS_LITTLE_ENDIAN',
         ],
      }],
      # MSVC has no __int128 type. Use emulated int128 and leave
      # have_int128_support as-is for Curve25519 impl. selection.
      [ 'have_int128_support==1 and (OS!="win" or cc_is_clang==1 or cc_is_gcc==1)', {
        'defines': [
          # The Makefile does version-tests on GCC, but we're not doing that here.
          'HAVE_INT128_SUPPORT',
        ],
      }, {
        'defines': [
          'KRML_VERIFIED_UINT128',
        ],
      }],
      [ 'OS=="linux"', {
        'defines': [
          'FREEBL_LOWHASH',
          'FREEBL_NO_DEPEND',
        ],
        'conditions': [
          [ 'disable_altivec==0 and target_arch=="ppc64le"', {
            'defines': [
              'PPC_GCM',
            ],
          }],
        ],
      }],
      [ 'OS=="linux" or OS=="android"', {
        'conditions': [
          [ 'target_arch=="x64"', {
            'defines': [
              'MP_IS_LITTLE_ENDIAN',
              'NSS_BEVAND_ARCFOUR',
              'MPI_AMD64',
              'MP_ASSEMBLY_MULTIPLY',
              'NSS_USE_COMBA',
            ],
          }],
          [ 'target_arch=="x64"', {
            'defines': [
              'USE_HW_AES',
              'INTEL_GCM',
            ],
          }],
          [ 'target_arch=="ia32"', {
            'defines': [
              'MP_IS_LITTLE_ENDIAN',
              'MP_ASSEMBLY_MULTIPLY',
              'MP_ASSEMBLY_SQUARE',
              'MP_ASSEMBLY_DIV_2DX1D',
              'MP_USE_UINT_DIGIT',
            ],
          }],
          [ 'target_arch=="arm"', {
            'defines': [
              'MP_ASSEMBLY_MULTIPLY',
              'MP_ASSEMBLY_SQUARE',
              'MP_USE_UINT_DIGIT',
              'SHA_NO_LONG_LONG',
              'ARMHF',
            ],
          }],
          [ 'disable_intel_hw_sha==0 and (target_arch=="ia32" or target_arch=="x64")', {
            'defines': [
              'USE_HW_SHA2',
            ],
          }],
          [ 'disable_arm_hw_aes==0 and (target_arch=="arm" or target_arch=="arm64" or target_arch=="aarch64")', {
            'defines': [
              'USE_HW_AES',
            ],
          }],
          [ 'disable_arm_hw_sha1==0 and (target_arch=="arm" or target_arch=="arm64" or target_arch=="aarch64")', {
            'defines': [
              'USE_HW_SHA1',
            ],
          }],
          [ 'disable_arm_hw_sha2==0 and (target_arch=="arm" or target_arch=="arm64" or target_arch=="aarch64")', {
            'defines': [
              'USE_HW_SHA2',
            ],
          }],
        ],
      }],
    ],
  },
  'variables': {
    'module': 'nss',
    'conditions': [
      [ 'target_arch=="x64" or target_arch=="arm64" or target_arch=="aarch64"', {
        'have_int128_support%': 1,
      }, {
        'have_int128_support%': 0,
      }],
      [ 'target_arch=="arm"', {
        # When the compiler uses the softfloat ABI, we want to use the compatible softfp ABI when enabling NEON for these objects.
        # Confusingly, __SOFTFP__ is the name of the define for the softfloat ABI, not for the softfp ABI.
        'softfp_cflags': '<!(${CC:-cc} -o - -E -dM - ${CFLAGS} < /dev/null | grep __SOFTFP__ > /dev/null && echo -mfloat-abi=softfp || true)',
      }],
    ],
  }
}
