Currently macro __LIBMSVCRT__ is defined when building any libmsvcr*.a
import library. But header file msvcrt.h contains inline function
__mingw_get_msvcrt_handle() which should be used only from import library
for runtime msvcrt.dll (and not for any other runtime msvcr*.dll) as code
from that header file directly uses msvcrt.dll library.

Protect header file msvcrt.h by a new macro __LIBMSVCRT_OS__ and fix error
message as this header file is for libmsvcrt-os.a import library.
libmsvcrt.a is import library for some msvcr*.dll runtime specified at
MinGW-w64 compile time and does not have to be msvcrt.dll.

Archive libmsvcrt_extra.a is linked only to the libmsvcrt-os.a (import
library for msvcrt.dll) by msvcrt-os.mri script, so define this new macro
__LIBMSVCRT_OS__ when building object files for archive libmsvcrt_extra.a.
---
 mingw-w64-crt/Makefile.am      | 8 ++++----
 mingw-w64-crt/include/msvcrt.h | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index f1381e25a7ad..c669f131c5f1 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -910,7 +910,7 @@ lib32_libcrtdll_extra_a_CPPFLAGS = $(CPPFLAGS32) 
-D__LIBMSVCRT__ $(extra_include
 lib32_libmsvcrt_common_a_SOURCES = $(src_msvcrt_common)
 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__ 
$(extra_include) $(sysincludes)
+lib32_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ 
-D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
 lib32_libmsvcr120_app_extra_a_SOURCES = $(src_msvcr120_app)
 lib32_libmsvcr120_app_extra_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib32_libucrt_extra_a_SOURCES = $(src_ucrtbase)
@@ -1234,7 +1234,7 @@ noinst_LIBRARIES += lib64/libmsvcrt_common.a 
lib64/libmsvcrt_extra.a lib64/libms
 lib64_libmsvcrt_common_a_SOURCES = $(src_msvcrt_common)
 lib64_libmsvcrt_common_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib64_libmsvcrt_extra_a_SOURCES = $(src_msvcrt64)
-lib64_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
+lib64_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
-D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
 lib64_libmsvcr80_extra_a_SOURCES = $(src_msvcr80_64)
 lib64_libmsvcr80_extra_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib64_libmsvcr120_app_extra_a_SOURCES = $(src_msvcr120_app)
@@ -1538,7 +1538,7 @@ noinst_LIBRARIES += libarm32/libmsvcrt_common.a 
libarm32/libmsvcrt_extra.a libar
 libarm32_libmsvcrt_common_a_SOURCES = $(src_msvcrt_common)
 libarm32_libmsvcrt_common_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 libarm32_libmsvcrt_extra_a_SOURCES = $(src_msvcrtarm32)
-libarm32_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
+libarm32_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
-D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
 libarm32_libmsvcr120_app_extra_a_SOURCES = $(src_msvcr120_app)
 libarm32_libmsvcr120_app_extra_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 libarm32_libucrt_extra_a_SOURCES = $(src_ucrtbase)
@@ -1810,7 +1810,7 @@ noinst_LIBRARIES += libarm64/libmsvcrt_common.a 
libarm64/libmsvcrt_extra.a libar
 libarm64_libmsvcrt_common_a_SOURCES = $(src_msvcrt_common)
 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__ 
$(extra_include) $(sysincludes)
+libarm64_libmsvcrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ 
-D__LIBMSVCRT_OS__ $(extra_include) $(sysincludes)
 libarm64_libucrt_extra_a_SOURCES = $(src_ucrtbase)
 libarm64_libucrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 libarm64_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)
diff --git a/mingw-w64-crt/include/msvcrt.h b/mingw-w64-crt/include/msvcrt.h
index d5346254f096..c6f10522471a 100644
--- a/mingw-w64-crt/include/msvcrt.h
+++ b/mingw-w64-crt/include/msvcrt.h
@@ -1,7 +1,7 @@
 #include <winbase.h>
 
-#ifndef __LIBMSVCRT__
-#error "This file should only be used in libmsvcrt.a"
+#ifndef __LIBMSVCRT_OS__
+#error "This file should only be used in libmsvcrt-os.a"
 #endif
 
 static inline HANDLE __mingw_get_msvcrt_handle(void)
-- 
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