Skip to content

Commit

Permalink
meson: move int128 checks from configure
Browse files Browse the repository at this point in the history
(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>
  • Loading branch information
elmarco committed Mar 22, 2022
1 parent 0e8d95e commit 848126d
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 47 deletions.
47 changes: 0 additions & 47 deletions configure
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
39 changes: 39 additions & 0 deletions meson.build
Expand Up @@ -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) {
Expand Down

0 comments on commit 848126d

Please sign in to comment.