diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2022-02-28 15:49:19 +0400 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2022-03-22 14:46:17 +0400 |
commit | 848126d11e93ff2a13d0d816244ed82aef83854f (patch) | |
tree | 7b0033ab252d05c5a31f20f011f6c0bbf18ec248 | |
parent | 0e8d95e27b607b275ab19d47fd4a61d48e1a90c0 (diff) |
meson: move int128 checks from configure
(note: the test isn't working as intended, the next patches fixes it)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
-rwxr-xr-x | configure | 47 | ||||
-rw-r--r-- | meson.build | 39 |
2 files changed, 39 insertions, 47 deletions
@@ -2481,41 +2481,6 @@ if compile_prog "" "" ; then int128=yes fi -######################################### -# See if 128-bit atomic operations are supported. - -atomic128=no -if test "$int128" = "yes"; then - cat > $TMPC << EOF -int main(void) -{ - unsigned __int128 x = 0, y = 0; - y = __atomic_load(&x, 0); - __atomic_store(&x, y, 0); - __atomic_compare_exchange(&x, &y, x, 0, 0, 0); - return 0; -} -EOF - if compile_prog "" "" ; then - atomic128=yes - fi -fi - -cmpxchg128=no -if test "$int128" = yes && test "$atomic128" = no; then - cat > $TMPC << EOF -int main(void) -{ - unsigned __int128 x = 0, y = 0; - __sync_val_compare_and_swap_16(&x, y, x); - return 0; -} -EOF - if compile_prog "" "" ; then - cmpxchg128=yes - fi -fi - ######################################## # check if ccache is interfering with # semantic analysis of macros @@ -2959,18 +2924,6 @@ if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then echo "CONFIG_TSAN=y" >> $config_host_mak fi -if test "$int128" = "yes" ; then - echo "CONFIG_INT128=y" >> $config_host_mak -fi - -if test "$atomic128" = "yes" ; then - echo "CONFIG_ATOMIC128=y" >> $config_host_mak -fi - -if test "$cmpxchg128" = "yes" ; then - echo "CONFIG_CMPXCHG128=y" >> $config_host_mak -fi - if test "$rdma" = "yes" ; then echo "CONFIG_RDMA=y" >> $config_host_mak echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak diff --git a/meson.build b/meson.build index 282e7c4650..85f3f84ec6 100644 --- a/meson.build +++ b/meson.build @@ -1869,6 +1869,45 @@ config_host_data.set('CONFIG_ATOMIC64', cc.links(''' return 0; }''')) +has_int128 = cc.links(''' + __int128_t a; + __uint128_t b; + int main (void) { + a = a + b; + b = a * b; + a = a * a; + return 0; + }''') + +config_host_data.set('CONFIG_INT128', has_int128) + +if has_int128 + has_atomic128 = cc.links(''' + int main(void) + { + unsigned __int128 x = 0, y = 0; + y = __atomic_load(&x, 0); + __atomic_store(&x, y, 0); + __atomic_compare_exchange(&x, &y, x, 0, 0, 0); + return 0; + }''') + + config_host_data.set('CONFIG_ATOMIC128', has_atomic128) + + if not has_atomic128 + has_cmpxchg128 = cc.links(''' + int main(void) + { + unsigned __int128 x = 0, y = 0; + __sync_val_compare_and_swap_16(&x, y, x); + return 0; + } + ''') + + config_host_data.set('CONFIG_CMPXCHG128', has_cmpxchg128) + endif +endif + config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_source_prefix + ''' #include <sys/auxv.h> int main(void) { |