Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check

ab560078aa build: Fix warnings in x86_64 assembly check (Hennadii Stepanov)

Pull request description:

  On the master branch @ 10dab907e7, the x86_64 assembly check in both the Autotools and CMake build systems can fail depending on externally provided flags. For example:
  ```
  $ env CFLAGS="-Wall -Werror" ./configure --with-asm=x86_64
  <snip>
  checking for x86_64 assembly availability... no
  configure: error: x86_64 assembly requested but not available
  ```
  or
  ```
  $ env CFLAGS="-Wall -Werror" cmake -B build -DSECP256K1_ASM=x86_64
  <snip>
  -- Performing Test HAVE_X86_64_ASM
  -- Performing Test HAVE_X86_64_ASM - Failed
  CMake Error at CMakeLists.txt:111 (message):
    x86_64 assembly requested but not available.

  -- Configuring incomplete, errors occurred!
  ```

  The same issue occurs in CI jobs that build on Windows using clang-cl.

  This PR fixes both build systems.

ACKs for top commit:
  real-or-random:
    utACK ab560078aa
  furszy:
    ACK ab560078aa

Tree-SHA512: d556b642d58c601e7f027ac54975249e05a8b3927c5efd229be43d264b024d00eab9973193adb52f2f60075fca0571644662d61150a19098820091ced2d56fa0
This commit is contained in:
merge-script
2025-09-19 08:35:08 +02:00
2 changed files with 4 additions and 3 deletions

View File

@@ -3,7 +3,7 @@ AC_DEFUN([SECP_X86_64_ASM_CHECK],[
AC_MSG_CHECKING(for x86_64 assembly availability)
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <stdint.h>]],[[
uint64_t a = 11, tmp;
uint64_t a = 11, tmp = 0;
__asm__ __volatile__("movq \@S|@0x100000000,%1; mulq %%rsi" : "+a"(a) : "S"(tmp) : "cc", "%rdx");
]])], [has_x86_64_asm=yes], [has_x86_64_asm=no])
AC_MSG_RESULT([$has_x86_64_asm])

View File

@@ -4,10 +4,11 @@ function(check_x86_64_assembly)
check_c_source_compiles("
#include <stdint.h>
int main()
int main(void)
{
uint64_t a = 11, tmp;
uint64_t a = 11, tmp = 0;
__asm__ __volatile__(\"movq $0x100000000,%1; mulq %%rsi\" : \"+a\"(a) : \"S\"(tmp) : \"cc\", \"%rdx\");
return 0;
}
" HAVE_X86_64_ASM)
set(HAVE_X86_64_ASM ${HAVE_X86_64_ASM} PARENT_SCOPE)