New loading scheme for Winelib apps, makes them behave like builtin
dlls and takes load order into account. Install them in dlldir.
Improved MODULE_GetBinaryType to recognize ELF binaries.
Added a wrapper script to setup the environment when running directly
from inside the source tree.

diff --git a/Make.rules.in b/Make.rules.in
index a871b18..676cc27 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -68,6 +68,7 @@
 ALLLINTFLAGS = $(LINTFLAGS) $(DEFS) $(OPTIONS) $(DIVINCL)
 MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs
 WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
+WINEWRAPPER  = $(TOPSRCDIR)/tools/winewrapper
 WINEBUILD    = $(TOOLSDIR)/tools/winebuild/winebuild
 MAKEDEP      = $(TOOLSDIR)/tools/makedep
 WRC          = $(TOOLSDIR)/tools/wrc/wrc
@@ -79,11 +80,11 @@
 LIBUNICODE= -L$(TOPOBJDIR)/unicode -lwine_unicode
 LIBUUID   = -L$(TOPOBJDIR)/ole -lwine_uuid
 
-WINETEST     = $(TOPOBJDIR)/programs/winetest/winetest
+WINETEST     = $(TOPOBJDIR)/programs/winetest/winetest.exe$(DLLEXT)
 RUNTEST      = $(TOPSRCDIR)/programs/winetest/runtest
 RUNTESTFLAGS = -q -P wine -M $(MODULE) -T $(TOPOBJDIR)
 TESTRESULTS  = $(PLTESTS:.pl=.ok) $(CTESTS:.c=.ok)
-TESTPROGRAM  = tests/$(MODULE:%.dll=%)_test
+TESTPROGRAM  = tests/$(MODULE:%.dll=%)_test.exe
 TESTLIST     = tests/testlist.c
 TESTOBJS     = $(TESTMAIN) $(TESTLIST:.c=.o) $(CTESTS:.c=.o)
 TESTMAIN     = $(TOPOBJDIR)/programs/winetest/wtmain.o
@@ -150,7 +151,7 @@
 	$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
 
 .c.ok:
-	$(RUNTEST) $(RUNTESTFLAGS) -p $(TESTPROGRAM) $< && touch $@
+	$(RUNTEST) $(RUNTESTFLAGS) -p $(TESTPROGRAM)$(DLLEXT) $< && touch $@
 
 .pl.ok:
 	$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
@@ -256,7 +257,7 @@
 	$(RM) $(TESTRESULTS)
 
 clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
-	$(RM) $(CLEAN_FILES) $(GEN_C_SRCS) $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(TESTRESULTS) $(TESTLIST) $(TESTPROGRAM)$(EXEEXT) $(PROGRAMS)
+	$(RM) $(CLEAN_FILES) $(GEN_C_SRCS) $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(TESTRESULTS) $(TESTLIST) $(TESTPROGRAM) $(PROGRAMS)
 
 # Rules for installing
 
@@ -274,10 +275,10 @@
 	@cd `dirname $@` && $(MAKE) test
 
 $(PLTESTS:.c=.ok): $(WINETEST)
-$(CTESTS:.c=.ok): $(TESTPROGRAM)$(EXEEXT)
+$(CTESTS:.c=.ok): $(TESTPROGRAM)$(DLLEXT)
 
 $(WINETEST):
-	cd $(TOPOBJDIR)/programs/winetest && $(MAKE) winetest
+	cd $(TOPOBJDIR)/programs/winetest && $(MAKE) winetest.exe$(DLLEXT)
 
 $(TESTMAIN):
 	cd $(TOPOBJDIR)/programs/winetest && $(MAKE) wtmain.o
@@ -285,20 +286,17 @@
 $(TESTLIST): Makefile.in
 	$(TOPSRCDIR)/programs/winetest/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST)
 
-$(TESTPROGRAM): $(TESTPROGRAM).exe.so
-	$(RM) $(TESTPROGRAM) && cd tests && $(LN_S) $(TOPOBJDIR)/../wine `basename $(TESTPROGRAM)`
+$(TESTPROGRAM).so: $(TESTPROGRAM).spec.o $(TESTOBJS)
+	$(LDSHARED) $(LDDLLFLAGS) $(TESTPROGRAM).spec.o $(TESTOBJS) -o $@ $(LIBWINE) $(LIBS)
 
-$(TESTPROGRAM).exe.so: $(TESTPROGRAM).exe.spec.o $(TESTOBJS)
-	$(LDSHARED) $(LDDLLFLAGS) $(TESTPROGRAM).exe.spec.o $(TESTOBJS) -o $@ $(LIBWINE) $(LIBS)
-
-$(TESTPROGRAM).exe.tmp.o: $(TESTOBJS)
+$(TESTPROGRAM).tmp.o: $(TESTOBJS)
 	$(LDCOMBINE) $(TESTOBJS) -o $@
 	-$(STRIP) --strip-unneeded $@
 
-$(TESTPROGRAM).exe.spec.c: $(TESTPROGRAM).exe.tmp.o $(WINEBUILD)
-	$(LDPATH) $(WINEBUILD) $(DEFS) -sym $(TESTPROGRAM).exe.tmp.o -o $@ -exe $(TESTPROGRAM).exe -mcui -L$(DLLDIR) $(TESTIMPORTS:%=-l%)
+$(TESTPROGRAM).spec.c: $(TESTPROGRAM).tmp.o $(WINEBUILD)
+	$(LDPATH) $(WINEBUILD) $(DEFS) -sym $(TESTPROGRAM).tmp.o -o $@ -exe $(TESTPROGRAM) -mcui -L$(DLLDIR) $(TESTIMPORTS:%=-l%)
 
-$(TESTPROGRAM).exe: $(TESTOBJS)
+$(TESTPROGRAM): $(TESTOBJS)
 	$(CC) $(TESTOBJS) -o $@ $(TESTIMPORTS:%=-l%) $(LIBWINE) $(LIBS)
 
 # Misc. rules