quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

meson.build (9258B)


      1 project('libsodium', 'c',
      2   default_options : [
      3     'warning_level=0',
      4     'optimization=2',
      5   ],
      6 )
      7 
      8 fs = import('fs')
      9 
     10 c_compiler = meson.get_compiler('c')
     11 
     12 compile_args = []
     13 
     14 # passed to (some) compiler checks
     15 check_args = []
     16 
     17 add_project_arguments('-D_GNU_SOURCE', language: 'c')
     18 
     19 if host_machine.endian() == 'little'
     20   add_project_arguments('-DNATIVE_LITTLE_ENDIAN', language: 'c')
     21   check_args += '-DNATIVE_LITTLE_ENDIAN'
     22 else
     23   add_project_arguments('-DNATIVE_BIG_ENDIAN', language: 'c')
     24   check_args += '-DNATIVE_BIG_ENDIAN'
     25 endif
     26 
     27 if c_compiler.has_header('alloca.h')
     28   add_project_arguments('-DHAVE_ALLOCA_H', language: 'c')
     29 endif
     30 
     31 if c_compiler.has_function('alloca')
     32   add_project_arguments('-DHAVE_ALLOCA', language: 'c')
     33 endif
     34 
     35 if c_compiler.has_function('arc4random')
     36   add_project_arguments('-DHAVE_ARC4RANDOM', language: 'c')
     37 endif
     38 
     39 if c_compiler.has_function('arc4random_buf')
     40   add_project_arguments('-DHAVE_ARC4RANDOM_BUF', language: 'c')
     41 endif
     42 
     43 # FIXME: actually check!
     44 add_project_arguments('-DHAVE_C_VARARRAYS', language: 'c')
     45 
     46 message('check args', check_args)
     47 
     48 add_project_arguments('-DHAVE_PTHREADS', language: 'c')
     49 
     50 add_project_arguments('-DFORTIFY_SOURCE=2', language: 'c')
     51 
     52 if get_option('arch_opt')
     53   compile_args += c_compiler.get_supported_arguments(
     54     '-Ofast',
     55     '-ftree-vectorize',
     56     '-ftree-slp-vectorize',
     57     '-fomit-frame-pointer',
     58     '-march=native',
     59     )
     60 endif
     61 
     62 have_rdrand = c_compiler.compiles(fs.read('checkprogs/rdrand.c'), args : ['-mrdrnd'])
     63 message('have_rdrand:', have_rdrand)
     64 if have_rdrand
     65   compile_args += '-mrdrnd'
     66   add_project_arguments('-DHAVE_RDRAND', language: 'c')
     67 endif
     68 
     69 have_mmx = c_compiler.compiles(fs.read('checkprogs/mmx.c'), args : ['-mmmx'])
     70 message('have_mmx:', have_mmx)
     71 if have_mmx
     72   compile_args += '-mmmx'
     73   add_project_arguments('-DHAVE_MMX', language: 'c')
     74 endif
     75 
     76 if c_compiler.compiles('checkprogs/inline_asm.c')
     77   add_project_arguments('-DHAVE_INLINE_ASM', language: 'c')
     78 endif
     79 
     80 have_ti_mode = c_compiler.compiles(fs.read('checkprogs/ti_mode.c'), args : check_args)
     81 message('have TI mode:', have_ti_mode)
     82 if have_ti_mode
     83   add_project_arguments('-DHAVE_TI_MODE', language: 'c')
     84 endif
     85 
     86 have_cpuid = c_compiler.compiles(fs.read('checkprogs/cpuid.c'))
     87 message('have cpuid:', have_cpuid)
     88 
     89 if have_cpuid
     90   add_project_arguments('-DHAVE_CPUID', language: 'c')
     91 endif
     92 
     93 have_amd64_asm = c_compiler.compiles(fs.read('checkprogs/amd64_asm.c'))
     94 message('have_amd64_asm:', have_amd64_asm)
     95 if have_amd64_asm
     96   add_project_arguments('-DHAVE_AMD64_ASM', language: 'c')
     97 endif
     98 
     99 have_avx_asm = c_compiler.compiles(fs.read('checkprogs/avx_asm.c'))
    100 message('have_avx_asm:', have_avx_asm)
    101 if have_avx_asm
    102   add_project_arguments('-DHAVE_AVX_ASM', language: 'c')
    103 endif
    104 
    105 have_xgetbv = c_compiler.compiles(fs.read('checkprogs/xgetbv.c'))
    106 message('have_xgetbv', have_xgetbv)
    107 if have_xgetbv
    108   add_project_arguments('-DHAVE__XGETBV', language: 'c')
    109 endif
    110 
    111 compile_args += c_compiler.get_supported_arguments(
    112   '-fno-strict-aliasing',
    113 )
    114 
    115 compile_args += c_compiler.first_supported_argument(
    116   '-fno-strict-overflow',
    117   '-fwrapv',
    118 )
    119 
    120 add_project_arguments(compile_args, language: 'c')
    121 
    122 add_project_arguments('-DCONFIGURED', language: 'c')
    123 
    124 
    125 conf_data = configuration_data()
    126 conf_data.set('VERSION', '1.0.20')
    127 conf_data.set('SODIUM_LIBRARY_VERSION_MAJOR', 26)
    128 conf_data.set('SODIUM_LIBRARY_VERSION_MINOR', 2)
    129 conf_data.set('SODIUM_LIBRARY_MINIMAL_DEF', '')
    130 subdir('src/libsodium/include/sodium')
    131 
    132 libsodium_base_src = [
    133   'src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c',
    134   'src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c',
    135   'src/libsodium/crypto_aead/aegis256/aead_aegis256.c',
    136   'src/libsodium/crypto_aead/aegis256/aegis256_soft.c',
    137   'src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c',
    138   'src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c',
    139   'src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c',
    140   'src/libsodium/crypto_auth/crypto_auth.c',
    141   'src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c',
    142   'src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c',
    143   'src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c',
    144   'src/libsodium/crypto_box/crypto_box.c',
    145   'src/libsodium/crypto_box/crypto_box_easy.c',
    146   'src/libsodium/crypto_box/crypto_box_seal.c',
    147   'src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c',
    148   'src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c',
    149   'src/libsodium/crypto_core/hchacha20/core_hchacha20.c',
    150   'src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c',
    151   'src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c',
    152   'src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c',
    153   'src/libsodium/crypto_core/softaes/softaes.c',
    154   'src/libsodium/crypto_generichash/crypto_generichash.c',
    155   'src/libsodium/crypto_generichash/blake2b/generichash_blake2.c',
    156   'src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c',
    157   'src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c',
    158   'src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c',
    159   'src/libsodium/crypto_hash/crypto_hash.c',
    160   'src/libsodium/crypto_hash/sha256/hash_sha256.c',
    161   'src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c',
    162   'src/libsodium/crypto_hash/sha512/hash_sha512.c',
    163   'src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c',
    164   'src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c',
    165   'src/libsodium/crypto_kdf/crypto_kdf.c',
    166   'src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c',
    167   'src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c',
    168   'src/libsodium/crypto_kx/crypto_kx.c',
    169   'src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c',
    170   'src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c',
    171   'src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c',
    172   'src/libsodium/crypto_pwhash/argon2/argon2-core.c',
    173   'src/libsodium/crypto_pwhash/argon2/argon2-encoding.c',
    174   'src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c',
    175   'src/libsodium/crypto_pwhash/argon2/argon2.c',
    176   'src/libsodium/crypto_pwhash/argon2/blake2b-long.c',
    177   'src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c',
    178   'src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c',
    179   'src/libsodium/crypto_pwhash/crypto_pwhash.c',
    180   'src/libsodium/crypto_scalarmult/crypto_scalarmult.c',
    181   'src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c',
    182   'src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c',
    183   'src/libsodium/crypto_secretbox/crypto_secretbox.c',
    184   'src/libsodium/crypto_secretbox/crypto_secretbox_easy.c',
    185   'src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c',
    186   'src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c',
    187   'src/libsodium/crypto_shorthash/crypto_shorthash.c',
    188   'src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c',
    189   'src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c',
    190   'src/libsodium/crypto_sign/crypto_sign.c',
    191   'src/libsodium/crypto_sign/ed25519/sign_ed25519.c',
    192   'src/libsodium/crypto_sign/ed25519/ref10/keypair.c',
    193   'src/libsodium/crypto_sign/ed25519/ref10/open.c',
    194   'src/libsodium/crypto_sign/ed25519/ref10/sign.c',
    195   'src/libsodium/crypto_stream/chacha20/stream_chacha20.c',
    196   'src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c',
    197   'src/libsodium/crypto_stream/crypto_stream.c',
    198   'src/libsodium/crypto_stream/salsa20/stream_salsa20.c',
    199   'src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c',
    200   'src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c',
    201   'src/libsodium/crypto_verify/verify.c',
    202   'src/libsodium/randombytes/randombytes.c',
    203   'src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c',
    204   'src/libsodium/sodium/codecs.c',
    205   'src/libsodium/sodium/core.c',
    206   'src/libsodium/sodium/runtime.c',
    207   'src/libsodium/sodium/utils.c',
    208   'src/libsodium/sodium/version.c',
    209 ]
    210 
    211 libsodium_avx_src = [
    212   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h',
    213   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c',
    214   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h',
    215   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h',
    216   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h',
    217   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c',
    218   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h',
    219   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c',
    220   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h',
    221   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h',
    222   'src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S',
    223 ]
    224 
    225 libsodium_amd64_src = [
    226   'src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S',
    227   'src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c',
    228   'src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h',
    229 ]
    230 
    231 libsodium_all_src = []
    232 libsodium_all_src += libsodium_base_src
    233 
    234 if have_avx_asm
    235   libsodium_all_src += libsodium_avx_src
    236 endif
    237 
    238 if have_amd64_asm
    239   libsodium_all_src += libsodium_amd64_src
    240 endif
    241 
    242 libsodium = static_library('sodium', libsodium_all_src,
    243   include_directories:['src/libsodium/include/sodium'])
    244 
    245 sodium_dep = declare_dependency(
    246   include_directories : ['src/libsodium/include'],
    247   link_with : [libsodium],
    248 )