Restored the library file intermediate step for symlink dependencies.

diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index c02fe1e..720bc70 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -249,284 +249,377 @@
 	ws2_32.dll$(DLLEXT) \
 	wsock32.dll$(DLLEXT)
 
-# Map library name to directory
+# Map symlink name to the corresponding library
 
-advapi32.dll$(DLLEXT): advapi32
+advapi32.dll$(DLLEXT): advapi32/advapi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) advapi32/advapi32.dll$(DLLEXT) $@
 
-avicap32.dll$(DLLEXT): avicap32
+avicap32.dll$(DLLEXT): avicap32/avicap32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) avicap32/avicap32.dll$(DLLEXT) $@
 
-avifil32.dll$(DLLEXT) avifile.dll$(DLLEXT): avifil32
+avifil32.dll$(DLLEXT) avifile.dll$(DLLEXT): avifil32/avifil32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) avifil32/avifil32.dll$(DLLEXT) $@
 
-comcat.dll$(DLLEXT): comcat
+comcat.dll$(DLLEXT): comcat/comcat.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) comcat/comcat.dll$(DLLEXT) $@
 
-comctl32.dll$(DLLEXT): comctl32
+comctl32.dll$(DLLEXT): comctl32/comctl32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) comctl32/comctl32.dll$(DLLEXT) $@
 
-comdlg32.dll$(DLLEXT) commdlg.dll$(DLLEXT): commdlg
+comdlg32.dll$(DLLEXT) commdlg.dll$(DLLEXT): commdlg/comdlg32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) commdlg/comdlg32.dll$(DLLEXT) $@
 
-crtdll.dll$(DLLEXT): crtdll
+crtdll.dll$(DLLEXT): crtdll/crtdll.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) crtdll/crtdll.dll$(DLLEXT) $@
 
-crypt32.dll$(DLLEXT): crypt32
+crypt32.dll$(DLLEXT): crypt32/crypt32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) crypt32/crypt32.dll$(DLLEXT) $@
 
-dciman32.dll$(DLLEXT): dciman32
+dciman32.dll$(DLLEXT): dciman32/dciman32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) dciman32/dciman32.dll$(DLLEXT) $@
 
-ddraw.dll$(DLLEXT): ddraw
+ddraw.dll$(DLLEXT): ddraw/ddraw.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) ddraw/ddraw.dll$(DLLEXT) $@
 
-devenum.dll$(DLLEXT): devenum
+devenum.dll$(DLLEXT): devenum/devenum.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) devenum/devenum.dll$(DLLEXT) $@
 
-dinput.dll$(DLLEXT): dinput
+dinput.dll$(DLLEXT): dinput/dinput.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) dinput/dinput.dll$(DLLEXT) $@
 
-dplay.dll$(DLLEXT): dplay
+dplay.dll$(DLLEXT): dplay/dplay.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) dplay/dplay.dll$(DLLEXT) $@
 
-dplayx.dll$(DLLEXT): dplayx
+dplayx.dll$(DLLEXT): dplayx/dplayx.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) dplayx/dplayx.dll$(DLLEXT) $@
 
-dsound.dll$(DLLEXT): dsound
+dsound.dll$(DLLEXT): dsound/dsound.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) dsound/dsound.dll$(DLLEXT) $@
 
 gdi32.dll$(DLLEXT) dispdib.dll$(DLLEXT) gdi.exe$(DLLEXT) \
-  wing.dll$(DLLEXT): gdi
+  wing.dll$(DLLEXT): gdi/gdi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) gdi/gdi32.dll$(DLLEXT) $@
 
-glu32.dll$(DLLEXT): glu32
+glu32.dll$(DLLEXT): glu32/glu32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) glu32/glu32.dll$(DLLEXT) $@
 
-icmp.dll$(DLLEXT): icmp
+icmp.dll$(DLLEXT): icmp/icmp.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) icmp/icmp.dll$(DLLEXT) $@
 
-imaadp32.acm$(DLLEXT): msacm/imaadp32
+imaadp32.acm$(DLLEXT): msacm/imaadp32/imaadp32.acm$(DLLEXT)
 	$(RM) $@ && $(LN_S) msacm/imaadp32/imaadp32.acm$(DLLEXT) $@
 
-imagehlp.dll$(DLLEXT): imagehlp
+imagehlp.dll$(DLLEXT): imagehlp/imagehlp.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) imagehlp/imagehlp.dll$(DLLEXT) $@
 
-imm32.dll$(DLLEXT) imm.dll$(DLLEXT): imm32
+imm32.dll$(DLLEXT) imm.dll$(DLLEXT): imm32/imm32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) imm32/imm32.dll$(DLLEXT) $@
 
-joystick.drv$(DLLEXT): winmm/joystick
+joystick.drv$(DLLEXT): winmm/joystick/joystick.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/joystick/joystick.drv$(DLLEXT) $@
 
 kernel32.dll$(DLLEXT) comm.dll$(DLLEXT) krnl386.exe$(DLLEXT) \
   stress.dll$(DLLEXT) system.dll$(DLLEXT) toolhelp.dll$(DLLEXT) \
-  win87em.dll$(DLLEXT) windebug.dll$(DLLEXT) wprocs.dll$(DLLEXT): kernel
+  win87em.dll$(DLLEXT) windebug.dll$(DLLEXT) wprocs.dll$(DLLEXT): kernel/kernel32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) kernel/kernel32.dll$(DLLEXT) $@
 
-lz32.dll$(DLLEXT) lzexpand.dll$(DLLEXT): lzexpand
+lz32.dll$(DLLEXT) lzexpand.dll$(DLLEXT): lzexpand/lz32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) lzexpand/lz32.dll$(DLLEXT) $@
 
-mapi32.dll$(DLLEXT): mapi32
+mapi32.dll$(DLLEXT): mapi32/mapi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) mapi32/mapi32.dll$(DLLEXT) $@
 
-mcianim.drv$(DLLEXT): winmm/mcianim
+mcianim.drv$(DLLEXT): winmm/mcianim/mcianim.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/mcianim/mcianim.drv$(DLLEXT) $@
 
-mciavi.drv$(DLLEXT): winmm/mciavi
+mciavi.drv$(DLLEXT): winmm/mciavi/mciavi.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/mciavi/mciavi.drv$(DLLEXT) $@
 
-mcicda.drv$(DLLEXT): winmm/mcicda
+mcicda.drv$(DLLEXT): winmm/mcicda/mcicda.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/mcicda/mcicda.drv$(DLLEXT) $@
 
-mciseq.drv$(DLLEXT): winmm/mciseq
+mciseq.drv$(DLLEXT): winmm/mciseq/mciseq.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/mciseq/mciseq.drv$(DLLEXT) $@
 
-mciwave.drv$(DLLEXT): winmm/mciwave
+mciwave.drv$(DLLEXT): winmm/mciwave/mciwave.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/mciwave/mciwave.drv$(DLLEXT) $@
 
-midimap.drv$(DLLEXT): winmm/midimap
+midimap.drv$(DLLEXT): winmm/midimap/midimap.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/midimap/midimap.drv$(DLLEXT) $@
 
-mpr.dll$(DLLEXT): mpr
+mpr.dll$(DLLEXT): mpr/mpr.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) mpr/mpr.dll$(DLLEXT) $@
 
-msacm.drv$(DLLEXT): winmm/wavemap
+msacm.drv$(DLLEXT): winmm/wavemap/msacm.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/wavemap/msacm.drv$(DLLEXT) $@
 
-msacm32.dll$(DLLEXT) msacm.dll$(DLLEXT): msacm
+msacm32.dll$(DLLEXT) msacm.dll$(DLLEXT): msacm/msacm32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msacm/msacm32.dll$(DLLEXT) $@
 
-msadp32.acm$(DLLEXT): msacm/msadp32
+msadp32.acm$(DLLEXT): msacm/msadp32/msadp32.acm$(DLLEXT)
 	$(RM) $@ && $(LN_S) msacm/msadp32/msadp32.acm$(DLLEXT) $@
 
-msdmo.dll$(DLLEXT): msdmo
+msdmo.dll$(DLLEXT): msdmo/msdmo.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msdmo/msdmo.dll$(DLLEXT) $@
 
-msg711.acm$(DLLEXT): msacm/msg711
+msg711.acm$(DLLEXT): msacm/msg711/msg711.acm$(DLLEXT)
 	$(RM) $@ && $(LN_S) msacm/msg711/msg711.acm$(DLLEXT) $@
 
-msimg32.dll$(DLLEXT): msimg32
+msimg32.dll$(DLLEXT): msimg32/msimg32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msimg32/msimg32.dll$(DLLEXT) $@
 
-msisys.ocx$(DLLEXT): msisys
+msisys.ocx$(DLLEXT): msisys/msisys.ocx$(DLLEXT)
 	$(RM) $@ && $(LN_S) msisys/msisys.ocx$(DLLEXT) $@
 
-msnet32.dll$(DLLEXT): msnet32
+msnet32.dll$(DLLEXT): msnet32/msnet32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msnet32/msnet32.dll$(DLLEXT) $@
 
-msrle32.dll$(DLLEXT): msrle32
+msrle32.dll$(DLLEXT): msrle32/msrle32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msrle32/msrle32.dll$(DLLEXT) $@
 
-msvcrt.dll$(DLLEXT): msvcrt
+msvcrt.dll$(DLLEXT): msvcrt/msvcrt.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msvcrt/msvcrt.dll$(DLLEXT) $@
 
-msvcrt20.dll$(DLLEXT): msvcrt20
+msvcrt20.dll$(DLLEXT): msvcrt20/msvcrt20.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msvcrt20/msvcrt20.dll$(DLLEXT) $@
 
-msvfw32.dll$(DLLEXT) msvideo.dll$(DLLEXT): msvideo
+msvfw32.dll$(DLLEXT) msvideo.dll$(DLLEXT): msvideo/msvfw32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) msvideo/msvfw32.dll$(DLLEXT) $@
 
-netapi32.dll$(DLLEXT): netapi32
+netapi32.dll$(DLLEXT): netapi32/netapi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) netapi32/netapi32.dll$(DLLEXT) $@
 
-ntdll.dll$(DLLEXT): ntdll
+ntdll.dll$(DLLEXT): ntdll/ntdll.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) ntdll/ntdll.dll$(DLLEXT) $@
 
-odbc32.dll$(DLLEXT): odbc32
+odbc32.dll$(DLLEXT): odbc32/odbc32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) odbc32/odbc32.dll$(DLLEXT) $@
 
 ole32.dll$(DLLEXT) compobj.dll$(DLLEXT) ole2.dll$(DLLEXT) \
   ole2conv.dll$(DLLEXT) ole2nls.dll$(DLLEXT) ole2prox.dll$(DLLEXT) \
-  ole2thk.dll$(DLLEXT) storage.dll$(DLLEXT): ole32
+  ole2thk.dll$(DLLEXT) storage.dll$(DLLEXT): ole32/ole32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) ole32/ole32.dll$(DLLEXT) $@
 
-oleaut32.dll$(DLLEXT) ole2disp.dll$(DLLEXT) typelib.dll$(DLLEXT): oleaut32
+oleaut32.dll$(DLLEXT) ole2disp.dll$(DLLEXT) typelib.dll$(DLLEXT): oleaut32/oleaut32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) oleaut32/oleaut32.dll$(DLLEXT) $@
 
-olecli32.dll$(DLLEXT) olecli.dll$(DLLEXT): olecli
+olecli32.dll$(DLLEXT) olecli.dll$(DLLEXT): olecli/olecli32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) olecli/olecli32.dll$(DLLEXT) $@
 
-oledlg.dll$(DLLEXT): oledlg
+oledlg.dll$(DLLEXT): oledlg/oledlg.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) oledlg/oledlg.dll$(DLLEXT) $@
 
-olepro32.dll$(DLLEXT): olepro32
+olepro32.dll$(DLLEXT): olepro32/olepro32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) olepro32/olepro32.dll$(DLLEXT) $@
 
-olesvr32.dll$(DLLEXT) olesvr.dll$(DLLEXT): olesvr
+olesvr32.dll$(DLLEXT) olesvr.dll$(DLLEXT): olesvr/olesvr32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) olesvr/olesvr32.dll$(DLLEXT) $@
 
-opengl32.dll$(DLLEXT): opengl32
+opengl32.dll$(DLLEXT): opengl32/opengl32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) opengl32/opengl32.dll$(DLLEXT) $@
 
-psapi.dll$(DLLEXT): psapi
+psapi.dll$(DLLEXT): psapi/psapi.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) psapi/psapi.dll$(DLLEXT) $@
 
-qcap.dll$(DLLEXT): qcap
+qcap.dll$(DLLEXT): qcap/qcap.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) qcap/qcap.dll$(DLLEXT) $@
 
-quartz.dll$(DLLEXT): quartz
+quartz.dll$(DLLEXT): quartz/quartz.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) quartz/quartz.dll$(DLLEXT) $@
 
-rasapi32.dll$(DLLEXT) rasapi16.dll$(DLLEXT): rasapi32
+rasapi32.dll$(DLLEXT) rasapi16.dll$(DLLEXT): rasapi32/rasapi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) rasapi32/rasapi32.dll$(DLLEXT) $@
 
-riched32.dll$(DLLEXT): richedit
+riched32.dll$(DLLEXT): richedit/riched32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) richedit/riched32.dll$(DLLEXT) $@
 
-rpcrt4.dll$(DLLEXT): rpcrt4
+rpcrt4.dll$(DLLEXT): rpcrt4/rpcrt4.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) rpcrt4/rpcrt4.dll$(DLLEXT) $@
 
-serialui.dll$(DLLEXT): serialui
+serialui.dll$(DLLEXT): serialui/serialui.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) serialui/serialui.dll$(DLLEXT) $@
 
-setupapi.dll$(DLLEXT) setupx.dll$(DLLEXT): setupapi
+setupapi.dll$(DLLEXT) setupx.dll$(DLLEXT): setupapi/setupapi.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) setupapi/setupapi.dll$(DLLEXT) $@
 
-shdocvw.dll$(DLLEXT): shdocvw
+shdocvw.dll$(DLLEXT): shdocvw/shdocvw.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) shdocvw/shdocvw.dll$(DLLEXT) $@
 
-shell32.dll$(DLLEXT) shell.dll$(DLLEXT): shell32
+shell32.dll$(DLLEXT) shell.dll$(DLLEXT): shell32/shell32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) shell32/shell32.dll$(DLLEXT) $@
 
-shfolder.dll$(DLLEXT): shfolder
+shfolder.dll$(DLLEXT): shfolder/shfolder.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) shfolder/shfolder.dll$(DLLEXT) $@
 
-shlwapi.dll$(DLLEXT): shlwapi
+shlwapi.dll$(DLLEXT): shlwapi/shlwapi.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) shlwapi/shlwapi.dll$(DLLEXT) $@
 
-snmpapi.dll$(DLLEXT): snmpapi
+snmpapi.dll$(DLLEXT): snmpapi/snmpapi.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) snmpapi/snmpapi.dll$(DLLEXT) $@
 
-sti.dll$(DLLEXT): sti
+sti.dll$(DLLEXT): sti/sti.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) sti/sti.dll$(DLLEXT) $@
 
-tapi32.dll$(DLLEXT): tapi32
+tapi32.dll$(DLLEXT): tapi32/tapi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) tapi32/tapi32.dll$(DLLEXT) $@
 
-ttydrv.dll$(DLLEXT): ttydrv
+ttydrv.dll$(DLLEXT): ttydrv/ttydrv.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) ttydrv/ttydrv.dll$(DLLEXT) $@
 
-twain_32.dll$(DLLEXT): twain
+twain_32.dll$(DLLEXT): twain/twain_32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) twain/twain_32.dll$(DLLEXT) $@
 
-url.dll$(DLLEXT): url
+url.dll$(DLLEXT): url/url.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) url/url.dll$(DLLEXT) $@
 
-urlmon.dll$(DLLEXT): urlmon
+urlmon.dll$(DLLEXT): urlmon/urlmon.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) urlmon/urlmon.dll$(DLLEXT) $@
 
 user32.dll$(DLLEXT) ddeml.dll$(DLLEXT) display.dll$(DLLEXT) \
-  keyboard.dll$(DLLEXT) mouse.dll$(DLLEXT) user.exe$(DLLEXT): user
+  keyboard.dll$(DLLEXT) mouse.dll$(DLLEXT) user.exe$(DLLEXT): user/user32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) user/user32.dll$(DLLEXT) $@
 
-version.dll$(DLLEXT) ver.dll$(DLLEXT): version
+version.dll$(DLLEXT) ver.dll$(DLLEXT): version/version.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) version/version.dll$(DLLEXT) $@
 
-w32skrnl.dll$(DLLEXT) w32sys.dll$(DLLEXT) win32s16.dll$(DLLEXT): win32s
+w32skrnl.dll$(DLLEXT) w32sys.dll$(DLLEXT) win32s16.dll$(DLLEXT): win32s/w32skrnl.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) win32s/w32skrnl.dll$(DLLEXT) $@
 
-winearts.drv$(DLLEXT): winmm/winearts
+winearts.drv$(DLLEXT): winmm/winearts/winearts.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/winearts/winearts.drv$(DLLEXT) $@
 
-winedos.dll$(DLLEXT): winedos
+winedos.dll$(DLLEXT): winedos/winedos.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) winedos/winedos.dll$(DLLEXT) $@
 
-wineoss.drv$(DLLEXT): winmm/wineoss
+wineoss.drv$(DLLEXT): winmm/wineoss/wineoss.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/wineoss/wineoss.drv$(DLLEXT) $@
 
-wineps.dll$(DLLEXT) wineps16.dll$(DLLEXT): wineps
+wineps.dll$(DLLEXT) wineps16.dll$(DLLEXT): wineps/wineps.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) wineps/wineps.dll$(DLLEXT) $@
 
-wininet.dll$(DLLEXT): wininet
+wininet.dll$(DLLEXT): wininet/wininet.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) wininet/wininet.dll$(DLLEXT) $@
 
-winmm.dll$(DLLEXT) mmsystem.dll$(DLLEXT) sound.dll$(DLLEXT): winmm
+winmm.dll$(DLLEXT) mmsystem.dll$(DLLEXT) sound.dll$(DLLEXT): winmm/winmm.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) winmm/winmm.dll$(DLLEXT) $@
 
-winnls32.dll$(DLLEXT) winnls.dll$(DLLEXT): winnls
+winnls32.dll$(DLLEXT) winnls.dll$(DLLEXT): winnls/winnls32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) winnls/winnls32.dll$(DLLEXT) $@
 
-winspool.drv$(DLLEXT): winspool
+winspool.drv$(DLLEXT): winspool/winspool.drv$(DLLEXT)
 	$(RM) $@ && $(LN_S) winspool/winspool.drv$(DLLEXT) $@
 
-wintrust.dll$(DLLEXT): wintrust
+wintrust.dll$(DLLEXT): wintrust/wintrust.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) wintrust/wintrust.dll$(DLLEXT) $@
 
-wnaspi32.dll$(DLLEXT) winaspi.dll$(DLLEXT): winaspi
+wnaspi32.dll$(DLLEXT) winaspi.dll$(DLLEXT): winaspi/wnaspi32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) winaspi/wnaspi32.dll$(DLLEXT) $@
 
-wow32.dll$(DLLEXT): wow32
+wow32.dll$(DLLEXT): wow32/wow32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) wow32/wow32.dll$(DLLEXT) $@
 
-ws2_32.dll$(DLLEXT) winsock.dll$(DLLEXT): winsock
+ws2_32.dll$(DLLEXT) winsock.dll$(DLLEXT): winsock/ws2_32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) winsock/ws2_32.dll$(DLLEXT) $@
 
-wsock32.dll$(DLLEXT): wsock32
+wsock32.dll$(DLLEXT): wsock32/wsock32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) wsock32/wsock32.dll$(DLLEXT) $@
 
-x11drv.dll$(DLLEXT): x11drv
+x11drv.dll$(DLLEXT): x11drv/x11drv.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) x11drv/x11drv.dll$(DLLEXT) $@
 
+# Map library name to the corresponding directory
+
+advapi32/advapi32.dll$(DLLEXT): advapi32
+avicap32/avicap32.dll$(DLLEXT): avicap32
+avifil32/avifil32.dll$(DLLEXT): avifil32
+comcat/comcat.dll$(DLLEXT): comcat
+comctl32/comctl32.dll$(DLLEXT): comctl32
+commdlg/comdlg32.dll$(DLLEXT): commdlg
+crtdll/crtdll.dll$(DLLEXT): crtdll
+crypt32/crypt32.dll$(DLLEXT): crypt32
+dciman32/dciman32.dll$(DLLEXT): dciman32
+ddraw/ddraw.dll$(DLLEXT): ddraw
+devenum/devenum.dll$(DLLEXT): devenum
+dinput/dinput.dll$(DLLEXT): dinput
+dplay/dplay.dll$(DLLEXT): dplay
+dplayx/dplayx.dll$(DLLEXT): dplayx
+dsound/dsound.dll$(DLLEXT): dsound
+gdi/gdi32.dll$(DLLEXT): gdi
+glu32/glu32.dll$(DLLEXT): glu32
+icmp/icmp.dll$(DLLEXT): icmp
+msacm/imaadp32/imaadp32.acm$(DLLEXT): msacm/imaadp32
+imagehlp/imagehlp.dll$(DLLEXT): imagehlp
+imm32/imm32.dll$(DLLEXT): imm32
+winmm/joystick/joystick.drv$(DLLEXT): winmm/joystick
+kernel/kernel32.dll$(DLLEXT): kernel
+lzexpand/lz32.dll$(DLLEXT): lzexpand
+mapi32/mapi32.dll$(DLLEXT): mapi32
+winmm/mcianim/mcianim.drv$(DLLEXT): winmm/mcianim
+winmm/mciavi/mciavi.drv$(DLLEXT): winmm/mciavi
+winmm/mcicda/mcicda.drv$(DLLEXT): winmm/mcicda
+winmm/mciseq/mciseq.drv$(DLLEXT): winmm/mciseq
+winmm/mciwave/mciwave.drv$(DLLEXT): winmm/mciwave
+winmm/midimap/midimap.drv$(DLLEXT): winmm/midimap
+mpr/mpr.dll$(DLLEXT): mpr
+winmm/wavemap/msacm.drv$(DLLEXT): winmm/wavemap
+msacm/msacm32.dll$(DLLEXT): msacm
+msacm/msadp32/msadp32.acm$(DLLEXT): msacm/msadp32
+msdmo/msdmo.dll$(DLLEXT): msdmo
+msacm/msg711/msg711.acm$(DLLEXT): msacm/msg711
+msimg32/msimg32.dll$(DLLEXT): msimg32
+msisys/msisys.ocx$(DLLEXT): msisys
+msnet32/msnet32.dll$(DLLEXT): msnet32
+msrle32/msrle32.dll$(DLLEXT): msrle32
+msvcrt/msvcrt.dll$(DLLEXT): msvcrt
+msvcrt20/msvcrt20.dll$(DLLEXT): msvcrt20
+msvideo/msvfw32.dll$(DLLEXT): msvideo
+netapi32/netapi32.dll$(DLLEXT): netapi32
+ntdll/ntdll.dll$(DLLEXT): ntdll
+odbc32/odbc32.dll$(DLLEXT): odbc32
+ole32/ole32.dll$(DLLEXT): ole32
+oleaut32/oleaut32.dll$(DLLEXT): oleaut32
+olecli/olecli32.dll$(DLLEXT): olecli
+oledlg/oledlg.dll$(DLLEXT): oledlg
+olepro32/olepro32.dll$(DLLEXT): olepro32
+olesvr/olesvr32.dll$(DLLEXT): olesvr
+opengl32/opengl32.dll$(DLLEXT): opengl32
+psapi/psapi.dll$(DLLEXT): psapi
+qcap/qcap.dll$(DLLEXT): qcap
+quartz/quartz.dll$(DLLEXT): quartz
+rasapi32/rasapi32.dll$(DLLEXT): rasapi32
+richedit/riched32.dll$(DLLEXT): richedit
+rpcrt4/rpcrt4.dll$(DLLEXT): rpcrt4
+serialui/serialui.dll$(DLLEXT): serialui
+setupapi/setupapi.dll$(DLLEXT): setupapi
+shdocvw/shdocvw.dll$(DLLEXT): shdocvw
+shell32/shell32.dll$(DLLEXT): shell32
+shfolder/shfolder.dll$(DLLEXT): shfolder
+shlwapi/shlwapi.dll$(DLLEXT): shlwapi
+snmpapi/snmpapi.dll$(DLLEXT): snmpapi
+sti/sti.dll$(DLLEXT): sti
+tapi32/tapi32.dll$(DLLEXT): tapi32
+ttydrv/ttydrv.dll$(DLLEXT): ttydrv
+twain/twain_32.dll$(DLLEXT): twain
+url/url.dll$(DLLEXT): url
+urlmon/urlmon.dll$(DLLEXT): urlmon
+user/user32.dll$(DLLEXT): user
+version/version.dll$(DLLEXT): version
+win32s/w32skrnl.dll$(DLLEXT): win32s
+winmm/winearts/winearts.drv$(DLLEXT): winmm/winearts
+winedos/winedos.dll$(DLLEXT): winedos
+winmm/wineoss/wineoss.drv$(DLLEXT): winmm/wineoss
+wineps/wineps.dll$(DLLEXT): wineps
+wininet/wininet.dll$(DLLEXT): wininet
+winmm/winmm.dll$(DLLEXT): winmm
+winnls/winnls32.dll$(DLLEXT): winnls
+winspool/winspool.drv$(DLLEXT): winspool
+wintrust/wintrust.dll$(DLLEXT): wintrust
+winaspi/wnaspi32.dll$(DLLEXT): winaspi
+wow32/wow32.dll$(DLLEXT): wow32
+winsock/ws2_32.dll$(DLLEXT): winsock
+wsock32/wsock32.dll$(DLLEXT): wsock32
+x11drv/x11drv.dll$(DLLEXT): x11drv
+
 # Inter-dll dependencies
 
 advapi32: kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
@@ -571,7 +664,6 @@
 msvideo:  winmm.dll$(DLLEXT) comctl32.dll$(DLLEXT) version.dll$(DLLEXT) user32.dll$(DLLEXT) \
           gdi32.dll$(DLLEXT) kernel32.dll$(DLLEXT)
 netapi32: kernel32.dll$(DLLEXT)
-ntdll:   
 odbc32:   kernel32.dll$(DLLEXT)
 ole32:    advapi32.dll$(DLLEXT) user32.dll$(DLLEXT) gdi32.dll$(DLLEXT) rpcrt4.dll$(DLLEXT) \
           kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
diff --git a/dlls/make_dlls b/dlls/make_dlls
index 106589a..c448f62 100755
--- a/dlls/make_dlls
+++ b/dlls/make_dlls
@@ -167,7 +167,7 @@
 
 print NEWMAKE <<EOF;
 
-# Map library name to directory
+# Map symlink name to the corresponding library
 
 EOF
 
@@ -183,7 +183,7 @@
             printf NEWMAKE " %s\$(DLLEXT)", $i;
         }
     }
-    printf NEWMAKE ": %s\n", $directories{$mod};
+    printf NEWMAKE ": %s/%s\$(DLLEXT)\n", $directories{$mod}, $mod;
     printf NEWMAKE "\t\$(RM) \$@ && \$(LN_S) %s/%s\$(DLLEXT) \$@\n\n", $directories{$mod}, $mod;
 }
 
@@ -191,11 +191,19 @@
 ################################################################
 # output the inter-dll dependencies and rules
 
-print NEWMAKE "# Inter-dll dependencies\n\n";
+print NEWMAKE "# Map library name to the corresponding directory\n\n";
+
+foreach my $mod (sort keys %directories)
+{
+    printf NEWMAKE "%s/%s\$(DLLEXT): %s\n", $directories{$mod}, $mod, $directories{$mod};
+}
+
+print NEWMAKE "\n# Inter-dll dependencies\n\n";
 
 my @depends = ();
 foreach my $mod (sort keys %imports)
 {
+    next unless @{$imports{$mod}};
     my $count = 0;
     my $dep = sprintf("%s:", $directories{$mod});
     $dep .= " " x (8-length($directories{$mod}));