From d799adc46f07b7a6d6336b7de290367a4a72f339 Mon Sep 17 00:00:00 2001
From: Danny Smith <dannysmith@users.sourceforge.net>
Date: Thu, 27 Nov 2003 02:14:37 +0000
Subject: [PATCH] 	* lib/vfw32.def: Remove, replacing with ... 	*
 lib/msvfw32.def: New file. 	* lib/avicap32.def: New file. 	*
 lib/avifil32.def: New file. 	* lib/vfw32.mri: New file. 	* Makefile.in:
 (MRI_FILES, MIMPLIBS): New vars for 	import libs with multiple dll's. 
 (LIBS): Add MIMPLIBS. 	(DISTFILES): Add MRI_FILES. 	(libvfw32.a): Build
 using mri script.

---
 winsup/w32api/ChangeLog                       | 13 +++++
 winsup/w32api/lib/Makefile.in                 | 15 ++++-
 winsup/w32api/lib/avicap32.def                |  8 +++
 winsup/w32api/lib/{vfw32.def => avifil32.def} | 58 +------------------
 winsup/w32api/lib/msvfw32.def                 | 49 ++++++++++++++++
 winsup/w32api/lib/vfw32.mri                   |  6 ++
 6 files changed, 91 insertions(+), 58 deletions(-)
 create mode 100644 winsup/w32api/lib/avicap32.def
 rename winsup/w32api/lib/{vfw32.def => avifil32.def} (58%)
 create mode 100644 winsup/w32api/lib/msvfw32.def
 create mode 100644 winsup/w32api/lib/vfw32.mri

diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog
index eb9c3a178..4b1d024c2 100644
--- a/winsup/w32api/ChangeLog
+++ b/winsup/w32api/ChangeLog
@@ -1,3 +1,16 @@
+2003-11-27  Danny Smith  <dannysmith@users.sourceforge.net>
+
+	* lib/vfw32.def: Remove, replacing with ...
+	* lib/msvfw32.def: New file.
+	* lib/avicap32.def: New file.
+	* lib/avifil32.def: New file.
+	* lib/vfw32.mri: New file.
+	* Makefile.in: (MRI_FILES, MIMPLIBS): New vars for
+	import libs with multiple dll's.
+	(LIBS): Add MIMPLIBS.
+	(DISTFILES): Add MRI_FILES.
+	(libvfw32.a): Build using mri script.
+
 2003-11-23  Danny Smith  <dannysmith@users.sourceforge.net>
 
 	* include/winnt.h (PAGE_*): Group defines together. Change
diff --git a/winsup/w32api/lib/Makefile.in b/winsup/w32api/lib/Makefile.in
index 5d5581213..ad14441f0 100644
--- a/winsup/w32api/lib/Makefile.in
+++ b/winsup/w32api/lib/Makefile.in
@@ -110,9 +110,11 @@ GL_HEADERS = $(notdir $(wildcard $(srcdir)/../include/GL/*.h))
 # libraries
 
 DEF_FILES = $(notdir $(wildcard $(srcdir)/*.def))
+MRI_FILES = $(notdir $(wildcard $(srcdir)/*.mri))
 IMPLIBS = $(addprefix lib,$(subst .def,.a,$(DEF_FILES)))
+MIMPLIBS = $(addprefix lib,$(subst .mri,.a,$(MRI_FILES)))
 EXTRA_LIBS=libuuid.a libscrnsave.a libscrnsavw.a libdxguid.a liblargeint.a
-LIBS = $(IMPLIBS) $(EXTRA_LIBS)
+LIBS = $(IMPLIBS) $(MIMPLIBS) $(EXTRA_LIBS)
 UUID_OBJS = uuid.o mshtml-uuid.o
 EXTRA_OBJS = shell32.o dxguid.o scrnsave.o scrnsavw.o largeint.o \
 	$(UUID_OBJS) dinput.o kernel32.o
@@ -120,7 +122,7 @@ UUID_SOURCES = uuid.c mshtml-uuid.c
 SOURCES = scrnsave.c shell32.c  largeint.c dinput.c $(UUID_SOURCES)\
 dxguid.c res.rc test.c kernel32.c
 
-DISTFILES = Makefile.in $(DEF_FILES) $(SOURCES)
+DISTFILES = Makefile.in $(DEF_FILES) $(MRI_FILES) $(SOURCES)
 
 .NOTPARALLEL:
 
@@ -166,6 +168,15 @@ libuuid.a : $(UUID_OBJS)
 	$(AR) rc $@ $(UUID_OBJS)
 	$(RANLIB) $@
 
+# libvfw32.a contains import stubs for 3 dll's.  Using an MRI script
+# seems to be the simplest way to combine them into one archive.
+# NB: With older dlltool, the object file members will not have unique
+# names.
+libvfw32.a : libmsvfw32.a libavifil32.a libavicap32.a vfw32.mri
+	rm -f $@
+	$(AR) -M < vfw32.mri
+	$(RANLIB) $@
+
 lib%.a : %.def %.o
 	$(DLLTOOL) $(DLLTOOL_FLAGS) --output-lib $@ --def $(srcdir)/$*.def
 	$(AR) r $@ $*.o
diff --git a/winsup/w32api/lib/avicap32.def b/winsup/w32api/lib/avicap32.def
new file mode 100644
index 000000000..cde12a472
--- /dev/null
+++ b/winsup/w32api/lib/avicap32.def
@@ -0,0 +1,8 @@
+LIBRARY AVICAP32.DLL
+EXPORTS
+videoThunk32@20
+capGetDriverDescriptionW@20
+capGetDriverDescriptionA@20
+capCreateCaptureWindowW@32
+capCreateCaptureWindowA@32
+AppCleanup@4
diff --git a/winsup/w32api/lib/vfw32.def b/winsup/w32api/lib/avifil32.def
similarity index 58%
rename from winsup/w32api/lib/vfw32.def
rename to winsup/w32api/lib/avifil32.def
index 14bcc14fe..32f8cb633 100644
--- a/winsup/w32api/lib/vfw32.def
+++ b/winsup/w32api/lib/avifil32.def
@@ -1,52 +1,5 @@
-LIBRARY MSVFW32.DLL
+LIBRARY AVIFIL32.DLL
 EXPORTS
-VideoForWindowsVersion@0
-StretchDIB@48
-MCIWndRegisterClass
-MCIWndCreateW
-MCIWndCreateA
-MCIWndCreate
-ICSeqCompressFrameStart@8
-ICSeqCompressFrameEnd@4
-ICSeqCompressFrame@20
-ICSendMessage@16
-ICRemove@12
-ICOpenFunction@16
-ICOpen@12
-ICMThunk32@20
-ICLocate@20
-ICInstall@20
-ICInfo@12
-ICImageDecompress@20
-ICImageCompress@28
-ICGetInfo@12
-ICGetDisplayFormat@24
-ICDrawBegin
-ICDraw
-ICDecompress
-ICCompressorFree@4
-ICCompressorChoose@24
-ICCompress
-ICClose@4
-GetSaveFileNamePreviewW@4
-GetSaveFileNamePreviewA@4
-GetOpenFileNamePreviewW@4
-GetOpenFileNamePreviewA@4
-GetOpenFileNamePreview@4
-DrawDibTime@8
-DrawDibStop@4
-DrawDibStart@8
-DrawDibSetPalette@8
-DrawDibRealize@12
-DrawDibProfileDisplay@4
-DrawDibOpen@0
-DrawDibGetPalette@4
-DrawDibGetBuffer@16
-DrawDibEnd@4
-DrawDibDraw@52
-DrawDibClose@4
-DrawDibChangePalette@16
-DrawDibBegin@32
 IID_IGetFrame
 IID_IAVIStream
 IID_IAVIFile
@@ -61,8 +14,6 @@ EditStreamPaste@24
 EditStreamCut@16
 EditStreamCopy@16
 EditStreamClone@8
-DllGetClassObject@12
-DllCanUnloadNow@0
 CreateEditableStream@8
 AVIStreamWriteData@16
 AVIStreamWrite@32
@@ -123,9 +74,4 @@ AVIClearClipboard@0
 AVIBuildFilterW@12
 AVIBuildFilterA@12
 AVIBuildFilter@12
-videoThunk32@20
-capGetDriverDescriptionW@20
-capGetDriverDescriptionA@20
-capCreateCaptureWindowW@32
-capCreateCaptureWindowA@32
-AppCleanup@4
+
diff --git a/winsup/w32api/lib/msvfw32.def b/winsup/w32api/lib/msvfw32.def
new file mode 100644
index 000000000..7428c6e35
--- /dev/null
+++ b/winsup/w32api/lib/msvfw32.def
@@ -0,0 +1,49 @@
+LIBRARY MSVFW32.DLL
+EXPORTS
+VideoForWindowsVersion@0
+StretchDIB@48
+MCIWndRegisterClass
+MCIWndCreateW
+MCIWndCreateA
+MCIWndCreate
+ICSeqCompressFrameStart@8
+ICSeqCompressFrameEnd@4
+ICSeqCompressFrame@20
+ICSendMessage@16
+ICRemove@12
+ICOpenFunction@16
+ICOpen@12
+ICMThunk32@20
+ICLocate@20
+ICInstall@20
+ICInfo@12
+ICImageDecompress@20
+ICImageCompress@28
+ICGetInfo@12
+ICGetDisplayFormat@24
+ICDrawBegin
+ICDraw
+ICDecompress
+ICCompressorFree@4
+ICCompressorChoose@24
+ICCompress
+ICClose@4
+GetSaveFileNamePreviewW@4
+GetSaveFileNamePreviewA@4
+GetOpenFileNamePreviewW@4
+GetOpenFileNamePreviewA@4
+GetOpenFileNamePreview@4
+DrawDibTime@8
+DrawDibStop@4
+DrawDibStart@8
+DrawDibSetPalette@8
+DrawDibRealize@12
+DrawDibProfileDisplay@4
+DrawDibOpen@0
+DrawDibGetPalette@4
+DrawDibGetBuffer@16
+DrawDibEnd@4
+DrawDibDraw@52
+DrawDibClose@4
+DrawDibChangePalette@16
+DrawDibBegin@32
diff --git a/winsup/w32api/lib/vfw32.mri b/winsup/w32api/lib/vfw32.mri
new file mode 100644
index 000000000..ee01b1225
--- /dev/null
+++ b/winsup/w32api/lib/vfw32.mri
@@ -0,0 +1,6 @@
+CREATE libvfw32.a
+ADDLIB libmsvfw32.a
+ADDLIB libavicap32.a
+ADDLIB libavifil32.a
+SAVE
+END