crt: Build scanf.S as an x86_64 object on ARM64EC

A proper ARM64EC implementation would be tricky, as it would need to handle
a different calling convention and possibly use exit thunks for imported
functions. Instead, we can simply use the x86_64 version.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index ec06e5e..245b920 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -306,7 +306,6 @@
   $(src_msvcrt_common_add_arm64)
 
 src_msvcrt_add_vscanf=\
-  stdio/scanf.S \
   stdio/scanf2-argcount-char.c \
   stdio/scanf2-argcount-wchar.c \
   stdio/vfscanf.c \
@@ -383,7 +382,8 @@
   secapi/rand_s.c \
   secapi/sprintf_s.c \
   secapi/strerror_s.c \
-  secapi/vsprintf_s.c
+  secapi/vsprintf_s.c \
+  stdio/scanf.S
 
 # Files included in libucrt*.a
 src_ucrtbase=\
@@ -629,7 +629,8 @@
   misc/__winitenv.c \
   stdio/_fstat64i32.c \
   stdio/_setmaxstdio.c \
-  stdio/gets.c
+  stdio/gets.c \
+  stdio/scanf.S
 
 if !ENABLE_SOFTMATH
 src_msvcrtarm32+=\
@@ -749,6 +750,12 @@
   stdio/_setmaxstdio.c \
   stdio/gets.c
 
+if ARM64EC
+src_msvcrtarm64_x64=libarm64/stdio/scanf.x86_64.o
+else
+src_msvcrtarm64+=stdio/scanf.S
+endif
+
 src_pre_msvcrt20=\
   misc/__daylight.c \
   misc/__initenv.c \
@@ -848,7 +855,8 @@
   misc/isblank.c \
   misc/iswblank.c \
   misc/wctrans.c \
-  misc/wctype.c
+  misc/wctype.c \
+  stdio/scanf.S
 
 src_pre_msvcr120_post_msvcr71=\
   misc/_isblank_l.c \
@@ -2331,6 +2339,9 @@
 libarm64/%.o: crt/%.c
 	$(AM_V_CC)$(COMPILE) $(CPPFLAGSARM64) -c $< -o $@
 
+libarm64/%.x86_64.o: %.S
+	$(AM_V_CC)$(MKDIR_P) $(@D) && $(COMPILE) $(CPPFLAGSARM64) -target x86_64-windows-gnu -c $< -o $@
+
 # These source files aren't compiled in to any library yet.  I'm not sure how / where to do so.
 # The source files that I did compile somewhere I just guessed at anyway.
 #
@@ -2546,6 +2557,7 @@
 libarm64_libmsvcrt_common_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ $(extra_include) $(sysincludes)
 libarm64_libmsvcrt_extra_a_SOURCES = $(src_msvcrtarm64)
 libarm64_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ -D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
+libarm64_libmsvcrt_extra_a_LIBADD=$(src_msvcrtarm64_x64)
 libarm64_libucrt_extra_a_SOURCES = $(src_ucrtbasearm64)
 libarm64_libucrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ $(extra_include) $(sysincludes)
 libarm64_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)