This avoids compiling the object files that go into libmsvcrt*.a
10 times, and object files that go into libucrt*.a twice.

This reduces the number of built object files for a build for i686
from 885 to 747, and shrinks the generate Makefile.in from 9.8 MB
to 8.9 MB, by emitting per-object rules for fewer object files.

This in itself isn't a huge saving, but there's a general trend of
wanting to move more object files from libmingwex.a into libmvscr*.a,
to allow UCRT builds to use the UCRT provided version of functions
instead of statically linking our own version. And moving object files
in that direction is a bit costly currently as each of them end up
compiled multiple times.

Signed-off-by: Martin Storsjö <[email protected]>
---
This builds a separate (non-installed) static library from the def files
(named <libname>_def.a), and then merges that with the intermediate static
libraries containing the shared object files. If there's suggestions on
ways of doing it more straightforwardly, I'm all ears.

FWIW, llvm-ar actually has a (nonstandard/new) option 'L' for merging
one static library into another one, but as GNU ar doesn't have it, we
have to stick to mri scripts for merging static libraries.

We might be able to get away with just creating the target <libname>.a
from the def file and then merging in the object files directly into it
(with "OPEN <target>" instead of "CREATE <target>" in the mri script),
but llvm-ar doesn't support the OPEN command in mri scripts; in practice
those extra intermediate libs aren't an issue.
---
 mingw-w64-crt/Makefile.am                 | 312 +++++++++++-----------
 mingw-w64-crt/lib-common/crtdll.mri       |   5 +
 mingw-w64-crt/lib-common/msvcr100.mri     |   5 +
 mingw-w64-crt/lib-common/msvcr110.mri     |   5 +
 mingw-w64-crt/lib-common/msvcr120.mri     |   5 +
 mingw-w64-crt/lib-common/msvcr120_app.mri |   6 +
 mingw-w64-crt/lib-common/msvcr120d.mri    |   5 +
 mingw-w64-crt/lib-common/msvcr80.mri      |   5 +
 mingw-w64-crt/lib-common/msvcr80_64.mri   |   6 +
 mingw-w64-crt/lib-common/msvcr90.mri      |   5 +
 mingw-w64-crt/lib-common/msvcr90d.mri     |   5 +
 mingw-w64-crt/lib-common/msvcrt-os.mri    |   6 +
 mingw-w64-crt/lib-common/ucrtbase.mri     |   5 +
 13 files changed, 213 insertions(+), 162 deletions(-)
 create mode 100644 mingw-w64-crt/lib-common/crtdll.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr100.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr110.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr120.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr120_app.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr120d.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr80.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr80_64.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr90.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcr90d.mri
 create mode 100644 mingw-w64-crt/lib-common/msvcrt-os.mri
 create mode 100644 mingw-w64-crt/lib-common/ucrtbase.mri

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index edfbfc5f2..4b557105b 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -176,7 +176,6 @@ src_msvcrt_common=\
   math/frexp.c
 
 src_msvcrt=\
-  $(src_msvcrt_common) \
   misc/_configthreadlocale.c \
   misc/invalid_parameter_handler.c \
   misc/output_format.c \
@@ -397,7 +396,6 @@ src_msvcrtarm64=\
   stdio/gets.c
 
 src_msvcr80_64=\
-  $(src_msvcrt_common) \
   misc/__p___argv.c \
   misc/__p__acmdln.c \
   misc/__p__commode.c \
@@ -405,7 +403,6 @@ src_msvcr80_64=\
   misc/__p__wcmdln.c
 
 src_msvcr120_app=\
-  $(src_msvcrt_common) \
   misc/__set_app_type.c \
   misc/_getpid.c
 
@@ -666,11 +663,9 @@ lib32_DATA += lib32/libmsvcrt.a
 lib32/libmsvcrt.a: lib32/@MSVCRT_LIB@
        cp $< $@
 
-lib32_LIBRARIES += lib32/libmsvcrt-os.a
-lib32_libmsvcrt_os_a_SOURCES = $(src_msvcrt32) lib-common/msvcrt.def.in
-lib32_libmsvcrt_os_a_AR = $(DTDEF32) lib32/msvcrt.def && $(AR) $(ARFLAGS)
-lib32_libmsvcrt_os_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcrt_os_a_DEPENDENCIES=lib32/msvcrt.def
+lib32_DATA += lib32/libmsvcrt-os.a
+lib32/libmsvcrt-os.a: lib-common/msvcrt-os.mri lib32/libmsvcrt_def.a 
lib32/libmsvcrt_common.a lib32/libmsvcrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 endif
 
 lib32_LIBRARIES += lib32/libshell32.a
@@ -837,67 +832,54 @@ include lib32/Makefile.am
 if !W32API
 lib32_DATA += lib32/libglut.a lib32/libmsvcp60.a lib32/libmsvcp120_app.a
 
-lib32_LIBRARIES += lib32/libcrtdll.a
-lib32_libcrtdll_a_SOURCES = $(src_msvcrt_common)
-lib32_libcrtdll_a_AR = $(DTDEF32) $(top_srcdir)/lib32/crtdll.def && $(AR) 
$(ARFLAGS)
-lib32_libcrtdll_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-
-lib32_LIBRARIES += lib32/libmsvcr80.a
-lib32_libmsvcr80_a_SOURCES = $(src_msvcrt_common) lib32/msvcr80.def.in
-lib32_libmsvcr80_a_AR = $(DTDEF32) lib32/msvcr80.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr80_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr80_a_DEPENDENCIES=lib32/msvcr80.def
-
-lib32_LIBRARIES += lib32/libmsvcr90.a
-lib32_libmsvcr90_a_SOURCES = $(src_msvcrt_common) lib32/msvcr90.def.in
-lib32_libmsvcr90_a_AR = $(DTDEF32) lib32/msvcr90.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr90_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr90_a_DEPENDENCIES=lib32/msvcr90.def
-
-lib32_LIBRARIES += lib32/libmsvcr90d.a
-lib32_libmsvcr90d_a_SOURCES = $(src_msvcrt_common) lib32/msvcr90d.def.in
-lib32_libmsvcr90d_a_AR = $(DTDEF32) lib32/msvcr90d.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr90d_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr90d_a_DEPENDENCIES=lib32/msvcr90d.def
-
-lib32_LIBRARIES += lib32/libmsvcr100.a
-lib32_libmsvcr100_a_SOURCES = $(src_msvcrt_common) lib32/msvcr100.def.in
-lib32_libmsvcr100_a_AR = $(DTDEF32) lib32/msvcr100.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr100_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr100_a_DEPENDENCIES=lib32/msvcr100.def
-
-lib32_LIBRARIES += lib32/libmsvcr110.a
-lib32_libmsvcr110_a_SOURCES = $(src_msvcrt_common) lib32/msvcr110.def.in
-lib32_libmsvcr110_a_AR = $(DTDEF32) lib32/msvcr110.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr110_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr110_a_DEPENDENCIES=lib32/msvcr110.def
-
-lib32_LIBRARIES += lib32/libmsvcr120.a
-lib32_libmsvcr120_a_SOURCES = $(src_msvcrt_common) lib32/msvcr120.def.in
-lib32_libmsvcr120_a_AR = $(DTDEF32) lib32/msvcr120.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr120_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr120_a_DEPENDENCIES=lib32/msvcr120.def
-
-lib32_LIBRARIES += lib32/libmsvcr120d.a
-lib32_libmsvcr120d_a_SOURCES = $(src_msvcrt_common) lib32/msvcr120d.def.in
-lib32_libmsvcr120d_a_AR = $(DTDEF32) lib32/msvcr120d.def && $(AR) $(ARFLAGS)
-lib32_libmsvcr120d_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libmsvcr120d_a_DEPENDENCIES=lib32/msvcr120d.def
-
-lib32_LIBRARIES += lib32/libmsvcr120_app.a
-lib32_libmsvcr120_app_a_SOURCES = $(src_msvcr120_app) 
lib-common/msvcr120_app.def.in
-lib32_libmsvcr120_app_a_AR = $(DTDEF32) lib32/msvcr120_app.def && $(AR) 
$(ARFLAGS)
-lib32_libmsvcr120_app_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_lib32_libmsvcr120_app_a_DEPENDENCIES=lib32/msvcr120_app.def
-
-lib32_LIBRARIES += lib32/libucrtbase.a
-lib32_libucrtbase_a_SOURCES = $(src_ucrtbase) lib-common/ucrtbase.def.in
-lib32_libucrtbase_a_AR = $(DTDEF32) lib32/ucrtbase.def && $(AR) $(ARFLAGS)
-lib32_libucrtbase_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib32_libucrtbase_a_DEPENDENCIES=lib32/ucrtbase.def
+lib32_DATA += lib32/libcrtdll.a
+lib32/libcrtdll.a: lib-common/crtdll.mri lib32/libcrtdll_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr80.a
+lib32/libmsvcr80.a: lib-common/msvcr80.mri lib32/libmsvcr80_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr90.a
+lib32/libmsvcr90.a: lib-common/msvcr90.mri lib32/libmsvcr90_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr90d.a
+lib32/libmsvcr90d.a: lib-common/msvcr90d.mri lib32/libmsvcr90d_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr100.a
+lib32/libmsvcr100.a: lib-common/msvcr100.mri lib32/libmsvcr100_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr110.a
+lib32/libmsvcr110.a: lib-common/msvcr110.mri lib32/libmsvcr110_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr120.a
+lib32/libmsvcr120.a: lib-common/msvcr120.mri lib32/libmsvcr120_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr120d.a
+lib32/libmsvcr120d.a: lib-common/msvcr120d.mri lib32/libmsvcr120d_def.a 
lib32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libmsvcr120_app.a
+lib32/libmsvcr120_app.a: lib-common/msvcr120_app.mri 
lib32/libmsvcr120_app_def.a lib32/libmsvcrt_common.a 
lib32/libmsvcr120_app_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib32_DATA += lib32/libucrtbase.a
+lib32/libucrtbase.a: lib-common/ucrtbase.mri lib32/libucrtbase_def.a 
lib32/libucrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 lib32_DATA += lib32/libucrt.a lib32/libucrtapp.a
-noinst_LIBRARIES += lib32/libucrt_extra.a lib32/libucrtapp_extra.a
+noinst_LIBRARIES += lib32/libmsvcrt_common.a lib32/libmsvcrt_extra.a 
lib32/libmsvcr120_app_extra.a lib32/libucrt_extra.a lib32/libucrtapp_extra.a
+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_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)
 lib32_libucrt_extra_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
 lib32_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)
@@ -912,6 +894,12 @@ lib32/lib%.a: lib32/%.def
 lib32/lib%.a: lib-common/%.def
        $(DTDEF32) $<
 
+lib32/lib%_def.a: lib32/%.def
+       $(DTDEF32) $<
+
+lib32/lib%_def.a: lib-common/%.def
+       $(DTDEF32) $<
+
 dx32_DATA =
 dx32_DATA += lib32/libxinput.a
 dx32_DATA += lib32/libxapofx.a
@@ -1000,11 +988,9 @@ lib64_DATA += lib64/libmsvcrt.a
 lib64/libmsvcrt.a: lib64/@MSVCRT_LIB@
        cp $< $@
 
-lib64_LIBRARIES += lib64/libmsvcrt-os.a
-lib64_libmsvcrt_os_a_SOURCES = $(src_msvcrt64) lib-common/msvcrt.def.in
-lib64_libmsvcrt_os_a_AR = $(DTDEF64) lib64/msvcrt.def && $(AR) $(ARFLAGS)
-lib64_libmsvcrt_os_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcrt_os_a_DEPENDENCIES=lib64/msvcrt.def
+lib64_DATA += lib64/libmsvcrt-os.a
+lib64/libmsvcrt-os.a: lib-common/msvcrt-os.mri lib64/libmsvcrt_def.a 
lib64/libmsvcrt_common.a lib64/libmsvcrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 endif
 
 lib64_LIBRARIES += lib64/libshell32.a
@@ -1170,67 +1156,56 @@ include lib64/Makefile.am
 if !W32API
 lib64_DATA += lib64/libmsvcp60.a lib64/libmsvcp120_app.a
 
-lib64_LIBRARIES += lib64/libcrtdll.a
-lib64_libcrtdll_a_SOURCES = $(src_msvcrt_common)
-lib64_libcrtdll_a_AR = $(DTDEF64) $(top_srcdir)/lib64/crtdll.def && $(AR) 
$(ARFLAGS)
-lib64_libcrtdll_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-
-lib64_LIBRARIES += lib64/libmsvcr80.a
-lib64_libmsvcr80_a_SOURCES = $(src_msvcr80_64) lib64/msvcr80.def.in
-lib64_libmsvcr80_a_AR = $(DTDEF64) lib64/msvcr80.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr80_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr80_a_DEPENDENCIES=lib64/msvcr80.def
-
-lib64_LIBRARIES += lib64/libmsvcr90.a
-lib64_libmsvcr90_a_SOURCES = $(src_msvcrt_common) lib64/msvcr90.def.in
-lib64_libmsvcr90_a_AR = $(DTDEF64) lib64/msvcr90.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr90_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr90_a_DEPENDENCIES=lib64/msvcr90.def
-
-lib64_LIBRARIES += lib64/libmsvcr90d.a
-lib64_libmsvcr90d_a_SOURCES = $(src_msvcrt_common) lib64/msvcr90d.def.in
-lib64_libmsvcr90d_a_AR = $(DTDEF64) lib64/msvcr90d.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr90d_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr90d_a_DEPENDENCIES=lib64/msvcr90d.def
-
-lib64_LIBRARIES += lib64/libmsvcr100.a
-lib64_libmsvcr100_a_SOURCES = $(src_msvcrt_common) lib64/msvcr100.def.in
-lib64_libmsvcr100_a_AR = $(DTDEF64) lib64/msvcr100.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr100_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr100_a_DEPENDENCIES=lib64/msvcr100.def
-
-lib64_LIBRARIES += lib64/libmsvcr110.a
-lib64_libmsvcr110_a_SOURCES = $(src_msvcrt_common) lib64/msvcr110.def.in
-lib64_libmsvcr110_a_AR = $(DTDEF64) lib64/msvcr110.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr110_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr110_a_DEPENDENCIES=lib64/msvcr110.def
-
-lib64_LIBRARIES += lib64/libmsvcr120.a
-lib64_libmsvcr120_a_SOURCES = $(src_msvcrt_common) lib64/msvcr120.def.in
-lib64_libmsvcr120_a_AR = $(DTDEF64) lib64/msvcr120.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr120_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr120_a_DEPENDENCIES=lib64/msvcr120.def
-
-lib64_LIBRARIES += lib64/libmsvcr120d.a
-lib64_libmsvcr120d_a_SOURCES = $(src_msvcrt_common) lib64/msvcr120d.def.in
-lib64_libmsvcr120d_a_AR = $(DTDEF64) lib64/msvcr120d.def && $(AR) $(ARFLAGS)
-lib64_libmsvcr120d_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libmsvcr120d_a_DEPENDENCIES=lib64/msvcr120d.def
-
-lib64_LIBRARIES += lib64/libmsvcr120_app.a
-lib64_libmsvcr120_app_a_SOURCES = $(src_msvcr120_app) 
lib-common/msvcr120_app.def.in
-lib64_libmsvcr120_app_a_AR = $(DTDEF64) lib64/msvcr120_app.def && $(AR) 
$(ARFLAGS)
-lib64_libmsvcr120_app_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_lib64_libmsvcr120_app_a_DEPENDENCIES=lib64/msvcr120_app.def
-
-lib64_LIBRARIES += lib64/libucrtbase.a
-lib64_libucrtbase_a_SOURCES = $(src_ucrtbase) lib-common/ucrtbase.def.in
-lib64_libucrtbase_a_AR = $(DTDEF64) lib64/ucrtbase.def && $(AR) $(ARFLAGS)
-lib64_libucrtbase_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
-EXTRA_lib64_libucrtbase_a_DEPENDENCIES=lib64/ucrtbase.def
+lib64_DATA += lib64/libcrtdll.a
+lib64/libcrtdll.a: lib-common/crtdll.mri lib64/libcrtdll_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr80.a
+lib64/libmsvcr80.a: lib-common/msvcr80_64.mri lib64/libmsvcr80_def.a 
lib64/libmsvcrt_common.a lib64/libmsvcr80_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr90.a
+lib64/libmsvcr90.a: lib-common/msvcr90.mri lib64/libmsvcr90_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr90d.a
+lib64/libmsvcr90d.a: lib-common/msvcr90d.mri lib64/libmsvcr90d_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr100.a
+lib64/libmsvcr100.a: lib-common/msvcr100.mri lib64/libmsvcr100_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr110.a
+lib64/libmsvcr110.a: lib-common/msvcr110.mri lib64/libmsvcr110_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr120.a
+lib64/libmsvcr120.a: lib-common/msvcr120.mri lib64/libmsvcr120_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr120d.a
+lib64/libmsvcr120d.a: lib-common/msvcr120d.mri lib64/libmsvcr120d_def.a 
lib64/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libmsvcr120_app.a
+lib64/libmsvcr120_app.a: lib-common/msvcr120_app.mri 
lib64/libmsvcr120_app_def.a lib64/libmsvcrt_common.a 
lib64/libmsvcr120_app_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
+
+lib64_DATA += lib64/libucrtbase.a
+lib64/libucrtbase.a: lib-common/ucrtbase.mri lib64/libucrtbase_def.a 
lib64/libucrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 lib64_DATA += lib64/libucrt.a lib64/libucrtapp.a
-noinst_LIBRARIES += lib64/libucrt_extra.a lib64/libucrtapp_extra.a
+noinst_LIBRARIES += lib64/libmsvcrt_common.a lib64/libmsvcrt_extra.a 
lib64/libmsvcr80_extra.a lib64/libmsvcr120_app_extra.a lib64/libucrt_extra.a 
lib64/libucrtapp_extra.a
+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_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)
+lib64_libmsvcr120_app_extra_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 lib64_libucrt_extra_a_SOURCES = $(src_ucrtbase)
 lib64_libucrt_extra_a_CPPFLAGS=$(CPPFLAGS64) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
 lib64_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)
@@ -1245,6 +1220,12 @@ lib64/lib%.a: lib64/%.def
 lib64/lib%.a: lib-common/%.def
        $(DTDEF64) $<
 
+lib64/lib%_def.a: lib64/%.def
+       $(DTDEF32) $<
+
+lib64/lib%_def.a: lib-common/%.def
+       $(DTDEF64) $<
+
 dx64_DATA =
 dx64_DATA += lib64/libxinput.a
 dx64_DATA += lib64/libxapofx.a
@@ -1341,11 +1322,9 @@ libarm32_DATA += libarm32/libmsvcrt.a
 libarm32/libmsvcrt.a: libarm32/@MSVCRT_LIB@
        cp $< $@
 
-libarm32_LIBRARIES += libarm32/libmsvcrt-os.a
-libarm32_libmsvcrt_os_a_SOURCES = $(src_msvcrtarm32) lib-common/msvcrt.def.in
-libarm32_libmsvcrt_os_a_AR = $(DTDEFARM32) libarm32/msvcrt.def && $(AR) 
$(ARFLAGS)
-libarm32_libmsvcrt_os_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_libarm32_libmsvcrt_os_a_DEPENDENCIES=libarm32/msvcrt.def
+libarm32_DATA += libarm32/libmsvcrt-os.a
+libarm32/libmsvcrt-os.a: lib-common/msvcrt-os.mri libarm32/libmsvcrt_def.a 
libarm32/libmsvcrt_common.a libarm32/libmsvcrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 endif
 
 libarm32_LIBRARIES += libarm32/libshell32.a
@@ -1505,25 +1484,26 @@ include libarm32/Makefile.am
 if !W32API
 libarm32_DATA += libarm32/libmsvcp60.a
 
-libarm32_LIBRARIES += libarm32/libmsvcr110.a
-libarm32_libmsvcr110_a_SOURCES = $(src_msvcrt_common)
-libarm32_libmsvcr110_a_AR = $(DTDEFARM32) $(top_srcdir)/libarm32/msvcr110.def 
&& $(AR) $(ARFLAGS)
-libarm32_libmsvcr110_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
+libarm32_DATA += libarm32/libmsvcr110.a
+libarm32/libmsvcr110.a: lib-common/msvcr110.mri libarm32/libmsvcr110_def.a 
libarm32/libmsvcrt_common.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
-libarm32_LIBRARIES += libarm32/libmsvcr120_app.a
-libarm32_libmsvcr120_app_a_SOURCES = $(src_msvcr120_app) 
lib-common/msvcr120_app.def.in
-libarm32_libmsvcr120_app_a_AR = $(DTDEFARM32) libarm32/msvcr120_app.def && 
$(AR) $(ARFLAGS)
-libarm32_libmsvcr120_app_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_libarm32_libmsvcr120_app_a_DEPENDENCIES=libarm32/msvcr120_app.def
+libarm32_DATA += libarm32/libmsvcr120_app.a
+libarm32/libmsvcr120_app.a: lib-common/msvcr120_app.mri 
libarm32/libmsvcr120_app_def.a libarm32/libmsvcrt_common.a 
libarm32/libmsvcr120_app_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
-libarm32_LIBRARIES += libarm32/libucrtbase.a
-libarm32_libucrtbase_a_SOURCES = $(src_ucrtbase) lib-common/ucrtbase.def.in
-libarm32_libucrtbase_a_AR = $(DTDEFARM32) libarm32/ucrtbase.def && $(AR) 
$(ARFLAGS)
-libarm32_libucrtbase_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_libarm32_libucrtbase_a_DEPENDENCIES=libarm32/ucrtbase.def
+libarm32_DATA += libarm32/libucrtbase.a
+libarm32/libucrtbase.a: lib-common/ucrtbase.mri libarm32/libucrtbase_def.a 
libarm32/libucrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 libarm32_DATA += libarm32/libucrt.a libarm32/libucrtapp.a
-noinst_LIBRARIES += libarm32/libucrt_extra.a libarm32/libucrtapp_extra.a
+noinst_LIBRARIES += libarm32/libmsvcrt_common.a libarm32/libmsvcrt_extra.a 
libarm32/libmsvcr120_app_extra.a libarm32/libucrt_extra.a 
libarm32/libucrtapp_extra.a
+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_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)
 libarm32_libucrt_extra_a_CPPFLAGS=$(CPPFLAGSARM32) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 libarm32_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)
@@ -1538,6 +1518,11 @@ libarm32/lib%.a: libarm32/%.def
 libarm32/lib%.a: lib-common/%.def
        $(DTDEFARM32) $<
 
+libarm32/lib%_def.a: libarm32/%.def
+       $(DTDEFARM32) $<
+
+libarm32/lib%_def.a: lib-common/%.def
+       $(DTDEFARM32) $<
 
 dx32_DATA =
 dx32_DATA += libarm32/libxinput.a
@@ -1615,11 +1600,9 @@ libarm64_DATA += libarm64/libmsvcrt.a
 libarm64/libmsvcrt.a: libarm64/@MSVCRT_LIB@
        cp $< $@
 
-libarm64_LIBRARIES += libarm64/libmsvcrt-os.a
-libarm64_libmsvcrt_os_a_SOURCES = $(src_msvcrtarm64) lib-common/msvcrt.def.in
-libarm64_libmsvcrt_os_a_AR = $(DTDEFARM64) libarm64/msvcrt.def && $(AR) 
$(ARFLAGS)
-libarm64_libmsvcrt_os_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_libarm64_libmsvcrt_os_a_DEPENDENCIES=libarm64/msvcrt.def
+libarm64_DATA += libarm64/libmsvcrt-os.a
+libarm64/libmsvcrt-os.a: lib-common/msvcrt-os.mri libarm64/libmsvcrt_def.a 
libarm64/libmsvcrt_common.a libarm64/libmsvcrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 endif
 
 libarm64_LIBRARIES += libarm64/libshell32.a
@@ -1777,14 +1760,16 @@ endif
 include libarm64/Makefile.am
 
 if !W32API
-libarm64_LIBRARIES += libarm64/libucrtbase.a
-libarm64_libucrtbase_a_SOURCES = $(src_ucrtbase) lib-common/ucrtbase.def.in
-libarm64_libucrtbase_a_AR = $(DTDEFARM64) libarm64/ucrtbase.def && $(AR) 
$(ARFLAGS)
-libarm64_libucrtbase_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
-EXTRA_libarm64_libucrtbase_a_DEPENDENCIES=libarm64/ucrtbase.def
+libarm64_DATA += libarm64/libucrtbase.a
+libarm64/libucrtbase.a: lib-common/ucrtbase.mri libarm64/libucrtbase_def.a 
libarm64/libucrt_extra.a
+       cd $(dir $@) && $(AR) -M < $(abspath $<)
 
 libarm64_DATA += libarm64/libucrt.a libarm64/libucrtapp.a
-noinst_LIBRARIES += libarm64/libucrt_extra.a libarm64/libucrtapp_extra.a
+noinst_LIBRARIES += libarm64/libmsvcrt_common.a libarm64/libmsvcrt_extra.a 
libarm64/libucrt_extra.a libarm64/libucrtapp_extra.a
+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_libucrt_extra_a_SOURCES = $(src_ucrtbase)
 libarm64_libucrt_extra_a_CPPFLAGS=$(CPPFLAGSARM64) -D__LIBMSVCRT__ 
$(extra_include) $(sysincludes)
 libarm64_libucrtapp_extra_a_SOURCES = $(src_ucrtapp)
@@ -1799,6 +1784,9 @@ libarm64/lib%.a: libarm64/%.def
 libarm64/lib%.a: lib-common/%.def
        $(DTDEFARM64) $<
 
+libarm64/lib%_def.a: lib-common/%.def
+       $(DTDEFARM64) $<
+
 dx64_DATA =
 dx64_DATA += libarm64/libxinput.a
 dx64_DATA += libarm64/libd3dcompiler.a
diff --git a/mingw-w64-crt/lib-common/crtdll.mri 
b/mingw-w64-crt/lib-common/crtdll.mri
new file mode 100644
index 000000000..7ad3b777b
--- /dev/null
+++ b/mingw-w64-crt/lib-common/crtdll.mri
@@ -0,0 +1,5 @@
+CREATE libcrtdll.a
+ADDLIB libcrtdll_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr100.mri 
b/mingw-w64-crt/lib-common/msvcr100.mri
new file mode 100644
index 000000000..d8eae8a3c
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr100.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr100.a
+ADDLIB libmsvcr100_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr110.mri 
b/mingw-w64-crt/lib-common/msvcr110.mri
new file mode 100644
index 000000000..8be7274f3
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr110.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr110.a
+ADDLIB libmsvcr110_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr120.mri 
b/mingw-w64-crt/lib-common/msvcr120.mri
new file mode 100644
index 000000000..89273be79
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr120.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr120.a
+ADDLIB libmsvcr120_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr120_app.mri 
b/mingw-w64-crt/lib-common/msvcr120_app.mri
new file mode 100644
index 000000000..c4a898cd7
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr120_app.mri
@@ -0,0 +1,6 @@
+CREATE libmsvcr120_app.a
+ADDLIB libmsvcr120_app_def.a
+ADDLIB libmsvcrt_common.a
+ADDLIB libmsvcr120_app_extra.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr120d.mri 
b/mingw-w64-crt/lib-common/msvcr120d.mri
new file mode 100644
index 000000000..7e0e520e5
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr120d.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr120d.a
+ADDLIB libmsvcr120d_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr80.mri 
b/mingw-w64-crt/lib-common/msvcr80.mri
new file mode 100644
index 000000000..16d666843
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr80.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr80.a
+ADDLIB libmsvcr80_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr80_64.mri 
b/mingw-w64-crt/lib-common/msvcr80_64.mri
new file mode 100644
index 000000000..608693706
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr80_64.mri
@@ -0,0 +1,6 @@
+CREATE libmsvcr80.a
+ADDLIB libmsvcr80_def.a
+ADDLIB libmsvcrt_common.a
+ADDLIB libmsvcr80_extra.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr90.mri 
b/mingw-w64-crt/lib-common/msvcr90.mri
new file mode 100644
index 000000000..262cf3eb8
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr90.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr90.a
+ADDLIB libmsvcr90_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcr90d.mri 
b/mingw-w64-crt/lib-common/msvcr90d.mri
new file mode 100644
index 000000000..322f17aaa
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcr90d.mri
@@ -0,0 +1,5 @@
+CREATE libmsvcr90d.a
+ADDLIB libmsvcr90d_def.a
+ADDLIB libmsvcrt_common.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/msvcrt-os.mri 
b/mingw-w64-crt/lib-common/msvcrt-os.mri
new file mode 100644
index 000000000..a55973850
--- /dev/null
+++ b/mingw-w64-crt/lib-common/msvcrt-os.mri
@@ -0,0 +1,6 @@
+CREATE libmsvcrt-os.a
+ADDLIB libmsvcrt_def.a
+ADDLIB libmsvcrt_common.a
+ADDLIB libmsvcrt_extra.a
+SAVE
+END
diff --git a/mingw-w64-crt/lib-common/ucrtbase.mri 
b/mingw-w64-crt/lib-common/ucrtbase.mri
new file mode 100644
index 000000000..c9e3d792a
--- /dev/null
+++ b/mingw-w64-crt/lib-common/ucrtbase.mri
@@ -0,0 +1,5 @@
+CREATE libucrtbase.a
+ADDLIB libucrtbase_def.a
+ADDLIB libucrt_extra.a
+SAVE
+END
-- 
2.25.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to