# -*- mode: python; -*- Import([ "endian", "env", 'get_option', ]) env = env.Clone() env['CCFLAGS_WERROR'] = [] env['CXXFLAGS_WERROR'] = [] env.InjectThirdParty(libraries=['libbson']) env.InjectThirdParty(libraries=['intel_decimal128']) env.Append(CPPDEFINES=[ 'KMS_MSG_STATIC', 'MONGOCRYPT_STATIC_DEFINE', 'MLIB_USER', ]) if endian == "little": env.Append(CPPDEFINES=[ 'MONGOCRYPT_LITTLE_ENDIAN', 'KMS_MESSAGE_LITTLE_ENDIAN', ]) else: env.Append(CPPDEFINES=[ 'MONGOCRYPT_BIG_ENDIAN', 'KMS_MESSAGE_BIG_ENDIAN', ]) env.Append(CPPPATH=[ "src", "kms-message/src", ]) def removeIfPresent(lst, item): try: lst.remove(item) except ValueError: pass for to_remove in [('_GNU_SOURCE', )]: removeIfPresent(env['CPPDEFINES'], to_remove) additional_sources = [] if get_option('ssl') == 'off': env.Append(CPPDEFINES=['MONGOCRYPT_ENABLE_CRYPTO']) additional_sources.append([ 'dist/kms-message/src/kms_crypto_none.c', 'dist/src/crypto/none.c', ]) elif env.TargetOSIs('windows'): env.Append(CPPDEFINES=['KMS_MESSAGE_ENABLE_CRYPTO_CNG']) additional_sources.append([ 'dist/kms-message/src/kms_crypto_windows.c', 'dist/src/crypto/cng.c', ]) elif env.TargetOSIs('darwin'): env.Append(CPPDEFINES=['KMS_MESSAGE_ENABLE_CRYPTO_COMMON_CRYPTO']) additional_sources.append([ 'dist/kms-message/src/kms_crypto_apple.c', 'dist/src/crypto/commoncrypto.c', ]) else: env.Append(CPPDEFINES=['KMS_MESSAGE_ENABLE_CRYPTO_LIBCRYPTO']) additional_sources.append([ 'dist/kms-message/src/kms_crypto_libcrypto.c', 'dist/src/crypto/libcrypto.c', ]) if not env.TargetOSIs('windows'): env.Append(CPPDEFINES=['MLIB_HAVE_STRINGS_H']) additional_sources.append([ 'dist/src/os_posix/os_dll.c', 'dist/src/os_posix/os_mutex.c', ]) else: additional_sources.append([ 'dist/src/os_win/os_dll.c', 'dist/src/os_win/os_mutex.c', ]) # Disable warnings about deprecated functions env.Append(CFLAGS=['/wd4996']) env.Library( target="libmongocrypt", source=[ 'dist/kms-message/src/hexlify.c', 'dist/kms-message/src/kms_azure_request.c', 'dist/kms-message/src/kms_b64.c', 'dist/kms-message/src/kms_caller_identity_request.c', 'dist/kms-message/src/kms_decrypt_request.c', 'dist/kms-message/src/kms_encrypt_request.c', 'dist/kms-message/src/kms_gcp_request.c', 'dist/kms-message/src/kms_kmip_reader_writer.c', 'dist/kms-message/src/kms_kmip_request.c', 'dist/kms-message/src/kms_kmip_response.c', 'dist/kms-message/src/kms_kmip_response_parser.c', 'dist/kms-message/src/kms_kv_list.c', 'dist/kms-message/src/kms_message.c', 'dist/kms-message/src/kms_port.c', 'dist/kms-message/src/kms_request.c', 'dist/kms-message/src/kms_request_opt.c', 'dist/kms-message/src/kms_request_str.c', 'dist/kms-message/src/kms_response.c', 'dist/kms-message/src/kms_response_parser.c', 'dist/kms-message/src/sort.c', 'dist/src/mc-array.c', 'dist/src/mc-efc.c', 'dist/src/mc-fle2-encryption-placeholder.c', 'dist/src/mc-fle2-find-equality-payload.c', 'dist/src/mc-fle2-find-equality-payload-v2.c', 'dist/src/mc-fle2-find-range-payload.c', 'dist/src/mc-fle2-find-range-payload-v2.c', 'dist/src/mc-fle2-insert-update-payload.c', 'dist/src/mc-fle2-insert-update-payload-v2.c', 'dist/src/mc-fle2-payload-iev.c', 'dist/src/mc-fle2-payload-uev.c', 'dist/src/mc-fle2-rfds.c', 'dist/src/mc-range-edge-generation.c', 'dist/src/mc-range-encoding.c', 'dist/src/mc-range-mincover.c', 'dist/src/mc-rangeopts.c', 'dist/src/mc-reader.c', 'dist/src/mc-tokens.c', 'dist/src/mc-writer.c', 'dist/src/mongocrypt-binary.c', 'dist/src/mongocrypt-buffer.c', 'dist/src/mongocrypt-cache-collinfo.c', 'dist/src/mongocrypt-cache-key.c', 'dist/src/mongocrypt-cache-oauth.c', 'dist/src/mongocrypt-cache.c', 'dist/src/mongocrypt-ciphertext.c', 'dist/src/mongocrypt-crypto.c', 'dist/src/mongocrypt-ctx-datakey.c', 'dist/src/mongocrypt-ctx-decrypt.c', 'dist/src/mongocrypt-ctx-encrypt.c', 'dist/src/mongocrypt-ctx-rewrap-many-datakey.c', 'dist/src/mongocrypt-ctx.c', 'dist/src/mongocrypt-endpoint.c', 'dist/src/mongocrypt-kek.c', 'dist/src/mongocrypt-key-broker.c', 'dist/src/mongocrypt-key.c', 'dist/src/mongocrypt-kms-ctx.c', 'dist/src/mongocrypt-log.c', 'dist/src/mongocrypt-marking.c', 'dist/src/mongocrypt-opts.c', 'dist/src/mongocrypt-status.c', 'dist/src/mongocrypt-traverse-util.c', 'dist/src/mongocrypt-util.c', 'dist/src/mongocrypt.c', ] + additional_sources, LIBDEPS_PRIVATE=[ '$BUILD_DIR/third_party/shim_intel_decimal128', '$BUILD_DIR/third_party/shim_libbson', ], LIBDEPS_TAGS=[ 'init-no-global-side-effects', ], )