Reputation: 441
I'm encountering issues while trying to use BoringSSL as a dependency in my C++ project. I’m using Meson for my build system and Meson CMake Module to handle the BoringSSL dependency. Despite following the guide at Meson CMake Module Documentation, I’m running into numerous undefined reference errors when compiling libssl.so
and libcrypto.so
.
Here’s a overview of my setup:
meson.build:
project('cryptography-ng', 'c', version: '0.1.0')
cc = meson.get_compiler('c')
pthread_dep = cc.find_library('pthread')
cmake = import('cmake')
opt_var = cmake.subproject_options()
opt_var.add_cmake_defines({'BUILD_SHARED_LIBS': 1, 'CMAKE_BUILD_TYPE': 'Release'})
bssl_project = cmake.subproject('bssl', options : opt_var)
message('CMake targets:\n - ' + '\n - '.join(bssl_project.target_list()))
crypto_lib = bssl_project.dependency('crypto')
ssl_lib = bssl_project.dependency('ssl')
bssl.wrap:
[wrap-git]
url = https://boringssl.googlesource.com/boringssl
revision = master
method = cmake
undefined references example:
ninja: Entering directory `build'
[1/7] Linking target subprojects/bssl/libcm_crypto.so
FAILED: subprojects/bssl/libcm_crypto.so
cc -o subprojects/bssl/libcm_crypto.so subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_bitstr.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_bool.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_d2i_fp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_dup.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_gentm.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_i2d_fp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_int.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_mbstr.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_object.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_octet.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_strex.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_strnid.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_time.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_type.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_a_utctm.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_asn1_lib.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_asn1_par.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_asn_pack.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_f_int.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_f_string.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_posix_time.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_dec.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_enc.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_fre.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_new.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_typ.c.o subprojects/bssl/libcm_crypto.so.p/crypto_asn1_tasn_utl.c.o subprojects/bssl/libcm_crypto.so.p/crypto_base64_base64.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_bio.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_bio_mem.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_connect.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_errno.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_fd.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_file.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_hexdump.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_pair.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_printf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_socket.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bio_socket_helper.c.o subprojects/bssl/libcm_crypto.so.p/crypto_blake2_blake2.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bn_extra_bn_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bn_extra_convert.c.o subprojects/bssl/libcm_crypto.so.p/crypto_buf_buf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bytestring_asn1_compat.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bytestring_ber.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bytestring_cbb.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bytestring_cbs.c.o subprojects/bssl/libcm_crypto.so.p/crypto_bytestring_unicode.c.o subprojects/bssl/libcm_crypto.so.p/crypto_chacha_chacha.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_cipher_extra.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_derive_key.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_aesctrhmac.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_aesgcmsiv.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_chacha20poly1305.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_des.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_null.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_rc2.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_rc4.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_e_tls.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cipher_extra_tls_cbc.c.o subprojects/bssl/libcm_crypto.so.p/crypto_conf_conf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_apple.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_fuchsia.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_linux.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_openbsd.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_sysreg.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_aarch64_win.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_arm_freebsd.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_arm_linux.c.o subprojects/bssl/libcm_crypto.so.p/crypto_cpu_intel.c.o subprojects/bssl/libcm_crypto.so.p/crypto_crypto.c.o subprojects/bssl/libcm_crypto.so.p/crypto_curve25519_curve25519.c.o subprojects/bssl/libcm_crypto.so.p/crypto_curve25519_curve25519_64_adx.c.o subprojects/bssl/libcm_crypto.so.p/crypto_curve25519_spake25519.c.o subprojects/bssl/libcm_crypto.so.p/crypto_des_des.c.o subprojects/bssl/libcm_crypto.so.p/crypto_dh_extra_dh_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_dh_extra_params.c.o subprojects/bssl/libcm_crypto.so.p/crypto_digest_extra_digest_extra.c.o subprojects/bssl/libcm_crypto.so.p/crypto_dilithium_dilithium.c.o subprojects/bssl/libcm_crypto.so.p/crypto_dsa_dsa.c.o subprojects/bssl/libcm_crypto.so.p/crypto_dsa_dsa_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ec_extra_ec_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ec_extra_ec_derive.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ec_extra_hash_to_curve.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ecdh_extra_ecdh_extra.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ecdsa_extra_ecdsa_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_engine_engine.c.o subprojects/bssl/libcm_crypto.so.p/crypto_err_err.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_evp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_evp_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_evp_ctx.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_dh.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_dh_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_dsa_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_ec.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_ec_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_ed25519.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_ed25519_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_hkdf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_rsa.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_rsa_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_x25519.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_p_x25519_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_pbkdf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_print.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_scrypt.c.o subprojects/bssl/libcm_crypto.so.p/crypto_evp_sign.c.o subprojects/bssl/libcm_crypto.so.p/crypto_ex_data.c.o subprojects/bssl/libcm_crypto.so.p/crypto_fipsmodule_fips_shared_support.c.o subprojects/bssl/libcm_crypto.so.p/crypto_hpke_hpke.c.o subprojects/bssl/libcm_crypto.so.p/crypto_hrss_hrss.c.o subprojects/bssl/libcm_crypto.so.p/crypto_keccak_keccak.c.o subprojects/bssl/libcm_crypto.so.p/crypto_kyber_kyber.c.o subprojects/bssl/libcm_crypto.so.p/crypto_lhash_lhash.c.o subprojects/bssl/libcm_crypto.so.p/crypto_mem.c.o subprojects/bssl/libcm_crypto.so.p/crypto_obj_obj.c.o subprojects/bssl/libcm_crypto.so.p/crypto_obj_obj_xref.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_all.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_info.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_lib.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_oth.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_pk8.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_pkey.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pem_pem_xaux.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pkcs7_pkcs7.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pkcs7_pkcs7_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pkcs8_p5_pbev2.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pkcs8_pkcs8.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pkcs8_pkcs8_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_poly1305_poly1305.c.o subprojects/bssl/libcm_crypto.so.p/crypto_poly1305_poly1305_arm.c.o subprojects/bssl/libcm_crypto.so.p/crypto_poly1305_poly1305_vec.c.o subprojects/bssl/libcm_crypto.so.p/crypto_pool_pool.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_deterministic.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_forkunsafe.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_getentropy.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_ios.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_passive.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_rand_extra.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_trusty.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rand_extra_windows.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rc4_rc4.c.o subprojects/bssl/libcm_crypto.so.p/crypto_refcount.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rsa_extra_rsa_asn1.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rsa_extra_rsa_crypt.c.o subprojects/bssl/libcm_crypto.so.p/crypto_rsa_extra_rsa_print.c.o subprojects/bssl/libcm_crypto.so.p/crypto_siphash_siphash.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_address.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_fors.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_merkle.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_spx.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_spx_util.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_thash.c.o subprojects/bssl/libcm_crypto.so.p/crypto_spx_wots.c.o subprojects/bssl/libcm_crypto.so.p/crypto_stack_stack.c.o subprojects/bssl/libcm_crypto.so.p/crypto_thread.c.o subprojects/bssl/libcm_crypto.so.p/crypto_thread_none.c.o subprojects/bssl/libcm_crypto.so.p/crypto_thread_pthread.c.o subprojects/bssl/libcm_crypto.so.p/crypto_thread_win.c.o subprojects/bssl/libcm_crypto.so.p/crypto_trust_token_pmbtoken.c.o subprojects/bssl/libcm_crypto.so.p/crypto_trust_token_trust_token.c.o subprojects/bssl/libcm_crypto.so.p/crypto_trust_token_voprf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_a_digest.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_a_sign.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_a_verify.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_algorithm.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_asn1_gen.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_by_dir.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_by_file.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_i2d_pr.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_name_print.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_policy.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_rsa_pss.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_t_crl.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_t_req.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_t_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_t_x509a.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_akey.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_akeya.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_alt.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_bcons.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_bitst.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_conf.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_cpols.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_crld.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_enum.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_extku.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_genn.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_ia5.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_info.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_int.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_lib.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_ncons.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_ocsp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_pcons.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_pmaps.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_prn.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_purp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_skey.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_v3_utl.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_att.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_cmp.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_d2.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_def.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_ext.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_lu.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_obj.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_req.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_set.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_trs.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_txt.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_v3.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_vfy.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509_vpm.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509cset.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509name.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509rset.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x509spki.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_algor.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_all.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_attrib.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_crl.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_exten.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_name.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_pubkey.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_req.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_sig.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_spki.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_val.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_x509.c.o subprojects/bssl/libcm_crypto.so.p/crypto_x509_x_x509a.c.o subprojects/bssl/libcm_crypto.so.p/gen_crypto_err_data.c.o subprojects/bssl/libcm_fipsmodule.a.p/crypto_fipsmodule_bcm.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libcm_crypto.so -lpthread -Wl,--end-group
/usr/bin/ld: subprojects/bssl/libcm_fipsmodule.a.p/crypto_fipsmodule_bcm.c.o: in function `aes_hw_ecb_cipher':
/media/yu/perseus-integration/build/../subprojects/bssl/crypto/fipsmodule/cipher/e_aes.c:812: undefined reference to `aes_hw_ecb_encrypt'
/usr/bin/ld: subprojects/bssl/libcm_fipsmodule.a.p/crypto_fipsmodule_bcm.c.o: in function `ecp_nistz256_mod_inverse_sqr_mont':
/media/yu/perseus-integration/build/../subprojects/bssl/crypto/fipsmodule/ec/p256-nistz.c:128: undefined reference to `ecp_nistz256_sqr_mont'
My question is: is there any way to resolve these undefined reference issues with the current setup?
From what I’ve read in the Mixing Build Systems Documentation, Meson’s compatibility with mixed build systems like this might not be fully guaranteed. Could the mixing of build systems be the root cause, or is there something else I might be missing in my Meson or CMake configuration?
Upvotes: 1
Views: 89