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)