libmsvcrtd.a is import library for msvcrtd.dll and therefore it cannot
include libmsvcrt_extra.a library which object files are compiled with
-D__LIBMSVCRT_OS__ which instruct code to access msvcrt.dll library.

Add a new static library libmsvcrtd_extra.a which is compiled from subset
of libmsvcrt_extra.a sources which does not depend on msvcrt.dll and
compile them without -D__LIBMSVCRT_OS__ option. Then use this new static
library libmsvcrtd_extra.a for building the final libmsvcrtd.a import library.
---
 mingw-w64-crt/Makefile.am       | 43 +++++++++++++++++++++++++++++++--
 mingw-w64-crt/lib32/msvcrtd.mri |  2 +-
 2 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 7db657ed7991..58b736d97282 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -898,6 +898,43 @@ src_msvcrt40=\
   stdio/mingw_dummy__lock.c \
   stdio/mingw_lock.c
 
+src_msvcrtd=\
+  math/x86/_copysignf.c \
+  misc/___mb_cur_max_func.c \
+  misc/__p__osplatform.c \
+  misc/__pctype_func.c \
+  misc/__pwctype_func.c \
+  misc/__sys_errlist.c \
+  misc/__sys_nerr.c \
+  misc/_configthreadlocale.c \
+  misc/_get_errno.c \
+  misc/_set_errno.c \
+  misc/btowc.c \
+  misc/imaxabs.c \
+  misc/imaxdiv.c \
+  misc/invalid_parameter_handler.c \
+  misc/isblank.c \
+  misc/iswblank.c \
+  misc/lc_locale_func.c \
+  misc/mbrtowc.c \
+  misc/output_format.c \
+  misc/purecall.c \
+  misc/strnlen.c \
+  misc/strtoimax.c \
+  misc/strtoumax.c \
+  misc/wassert.c \
+  misc/wcrtomb.c \
+  misc/wcsnlen.c \
+  misc/wcstoimax.c \
+  misc/wcstoumax.c \
+  misc/wctob.c \
+  misc/wctrans.c \
+  misc/wctype.c \
+  stdio/_scprintf.c \
+  stdio/_vscprintf.c \
+  stdio/fseeki64.c \
+  stdio/mingw_lock.c
+
 src_msvcr70=\
   misc/__p__osplatform.c \
   misc/__sys_errlist.c \
@@ -1462,7 +1499,7 @@ lib32/libmsvcr40d.a: lib32/msvcr40d.mri 
lib32/libmsvcr40d_def.a lib32/libmsvcrt_
        cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 lib32_DATA += lib32/libmsvcrtd.a
-lib32/libmsvcrtd.a: lib32/msvcrtd.mri lib32/libmsvcrtd_def.a 
lib32/libmsvcrt_common.a lib32/libmsvcrt_extra.a
+lib32/libmsvcrtd.a: lib32/msvcrtd.mri lib32/libmsvcrtd_def.a 
lib32/libmsvcrt_common.a lib32/libmsvcrtd_extra.a
        cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 lib32_DATA += lib32/libmsvcr70.a
@@ -1534,7 +1571,7 @@ lib32/libucrtbased.a: lib-common/ucrtbased.mri 
lib32/libucrtbased_def.a lib32/li
        cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 lib32_DATA += lib32/libucrt.a lib32/libucrtapp.a
-noinst_LIBRARIES += lib32/libcrtdll_extra.a lib32/libmsvcrt10_extra.a 
lib32/libmsvcrt20_extra.a lib32/libmsvcrt40_extra.a lib32/libmsvcrt_common.a 
lib32/libmsvcrt_extra.a lib32/libmsvcr70_extra.a lib32/libmsvcr71_extra.a 
lib32/libmsvcr80_extra.a lib32/libmsvcr90_extra.a lib32/libmsvcr100_extra.a 
lib32/libmsvcr110_extra.a lib32/libmsvcr120_extra.a 
lib32/libmsvcr120_app_extra.a lib32/libucrt_extra.a lib32/libucrtapp_extra.a
+noinst_LIBRARIES += lib32/libcrtdll_extra.a lib32/libmsvcrt10_extra.a 
lib32/libmsvcrt20_extra.a lib32/libmsvcrt40_extra.a lib32/libmsvcrt_common.a 
lib32/libmsvcrt_extra.a lib32/libmsvcrtd_extra.a lib32/libmsvcr70_extra.a 
lib32/libmsvcr71_extra.a lib32/libmsvcr80_extra.a lib32/libmsvcr90_extra.a 
lib32/libmsvcr100_extra.a lib32/libmsvcr110_extra.a lib32/libmsvcr120_extra.a 
lib32/libmsvcr120_app_extra.a lib32/libucrt_extra.a lib32/libucrtapp_extra.a
 lib32_libcrtdll_extra_a_SOURCES = $(src_crtdll)
 lib32_libcrtdll_extra_a_CPPFLAGS = $(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib32_libmsvcrt10_extra_a_SOURCES = $(src_msvcrt10)
@@ -1547,6 +1584,8 @@ lib32_libmsvcrt_common_a_SOURCES = $(src_msvcrt_common32)
 lib32_libmsvcrt_common_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib32_libmsvcrt_extra_a_SOURCES = $(src_msvcrt32)
 lib32_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ 
-D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
+lib32_libmsvcrtd_extra_a_SOURCES = $(src_msvcrtd)
+lib32_libmsvcrtd_extra_a_CPPFLAGS = $(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib32_libmsvcr70_extra_a_SOURCES = $(src_msvcr70)
 lib32_libmsvcr70_extra_a_CPPFLAGS = $(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib32_libmsvcr71_extra_a_SOURCES = $(src_msvcr71)
diff --git a/mingw-w64-crt/lib32/msvcrtd.mri b/mingw-w64-crt/lib32/msvcrtd.mri
index 24e94c2158a8..c2d5b0247881 100644
--- a/mingw-w64-crt/lib32/msvcrtd.mri
+++ b/mingw-w64-crt/lib32/msvcrtd.mri
@@ -1,6 +1,6 @@
 CREATE libmsvcrtd.a
 ADDLIB libmsvcrtd_def.a
 ADDLIB libmsvcrt_common.a
-ADDLIB libmsvcrt_extra.a
+ADDLIB libmsvcrtd_extra.a
 SAVE
 END
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to