# Automatically generated by make_progs; DO NOT EDIT!!

TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ..
SRCDIR    = @srcdir@
VPATH     = @srcdir@

SUBDIRS = \
	avitools \
	clock \
	cmdlgtst \
	control \
	expand \
	notepad \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	start \
	taskmgr \
	uninstaller \
	view \
	wcmd \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemenubuilder \
	winemine \
	winepath \
	winetest \
	winevdm \
	winhelp \
	winver

# Sub-directories to run make install into
INSTALLSUBDIRS = \
	avitools \
	clock \
	control \
	expand \
	notepad \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	start \
	taskmgr \
	uninstaller \
	wcmd \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemenubuilder \
	winemine \
	winepath \
	winetest \
	winevdm \
	winhelp \
	winver

# Programs to install in bin directory
INSTALLPROGS = \
	notepad \
	progman \
	regedit \
	regsvr32 \
	uninstaller \
	wcmd \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemine \
	winepath \
	winhelp

# Symlinks to apps that we want to run from inside the source tree
SYMLINKS = \
	aviinfo.exe \
	aviplay.exe \
	clock.exe \
	cmdlgtst.exe \
	control.exe \
	expand.exe \
	icinfo.exe \
	notepad.exe \
	progman.exe \
	regedit.exe \
	regsvr32.exe \
	rpcss.exe \
	rundll32.exe \
	start.exe \
	taskmgr.exe \
	uninstaller.exe \
	view.exe \
	wcmd.exe \
	wineboot.exe \
	winebrowser.exe \
	winecfg.exe \
	wineconsole.exe \
	winedbg.exe \
	winefile.exe \
	winemenubuilder.exe \
	winemine.exe \
	winepath.exe \
	winetest.exe \
	winevdm.exe \
	winhelp.exe \
	winver.exe

@MAKE_RULES@

all: wineapploader winelauncher $(SUBDIRS) $(SYMLINKS:%=%$(DLLEXT))

wineapploader: wineapploader.in
	sed -e 's,@bindir\@,$(bindir),g' $(SRCDIR)/wineapploader.in >$@ || ($(RM) $@ && false)

winelauncher: winelauncher.in
	sed -e 's,@bindir\@,$(bindir),g' -e 's,@libdir\@,$(libdir),g' -e 's,@dlldir\@,$(dlldir),g' $(SRCDIR)/winelauncher.in >$@ || ($(RM) $@ && false)

# Rules for installation

.PHONY: install-apploader install-progs install-progs.so $(INSTALLPROGS:%=%/__installprog__)

install-apploader: wineapploader dummy
	$(MKINSTALLDIRS) $(bindir)
	$(INSTALL_SCRIPT) wineapploader $(bindir)/wineapploader

$(INSTALLPROGS:%=%/__installprog__): install-apploader
	$(RM) $(bindir)/`dirname $@` && $(LN) $(bindir)/wineapploader $(bindir)/`dirname $@`

install-progs.so: $(INSTALLPROGS:%=%/__installprog__)
	$(RM) $(bindir)/wineapploader

install-progs: # nothing to do here

install:: winelauncher install-progs$(DLLEXT)
	$(MKINSTALLDIRS) $(bindir)
	$(INSTALL_SCRIPT) winelauncher $(bindir)/winelauncher

uninstall::
	$(RM) $(bindir)/wineapploader $(bindir)/winelauncher $(INSTALLPROGS:%=$(bindir)/%)
	-rmdir $(dlldir)

clean::
	$(RM) wineapploader winelauncher $(SYMLINKS)

# Rules for testing

check test:: $(SUBDIRS:%=%/__test__)

# Rules for symlinks

aviinfo.exe$(DLLEXT): avitools/aviinfo.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) avitools/aviinfo.exe$(DLLEXT) $@

aviplay.exe$(DLLEXT): avitools/aviplay.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) avitools/aviplay.exe$(DLLEXT) $@

clock.exe$(DLLEXT): clock/clock.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) clock/clock.exe$(DLLEXT) $@

cmdlgtst.exe$(DLLEXT): cmdlgtst/cmdlgtst.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) cmdlgtst/cmdlgtst.exe$(DLLEXT) $@

control.exe$(DLLEXT): control/control.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) control/control.exe$(DLLEXT) $@

expand.exe$(DLLEXT): expand/expand.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) expand/expand.exe$(DLLEXT) $@

icinfo.exe$(DLLEXT): avitools/icinfo.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) avitools/icinfo.exe$(DLLEXT) $@

notepad.exe$(DLLEXT): notepad/notepad.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) notepad/notepad.exe$(DLLEXT) $@

progman.exe$(DLLEXT): progman/progman.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) progman/progman.exe$(DLLEXT) $@

regedit.exe$(DLLEXT): regedit/regedit.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) regedit/regedit.exe$(DLLEXT) $@

regsvr32.exe$(DLLEXT): regsvr32/regsvr32.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) regsvr32/regsvr32.exe$(DLLEXT) $@

rpcss.exe$(DLLEXT): rpcss/rpcss.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) rpcss/rpcss.exe$(DLLEXT) $@

rundll32.exe$(DLLEXT): rundll32/rundll32.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) rundll32/rundll32.exe$(DLLEXT) $@

start.exe$(DLLEXT): start/start.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) start/start.exe$(DLLEXT) $@

taskmgr.exe$(DLLEXT): taskmgr/taskmgr.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) taskmgr/taskmgr.exe$(DLLEXT) $@

uninstaller.exe$(DLLEXT): uninstaller/uninstaller.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) uninstaller/uninstaller.exe$(DLLEXT) $@

view.exe$(DLLEXT): view/view.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) view/view.exe$(DLLEXT) $@

wcmd.exe$(DLLEXT): wcmd/wcmd.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) wcmd/wcmd.exe$(DLLEXT) $@

wineboot.exe$(DLLEXT): wineboot/wineboot.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) wineboot/wineboot.exe$(DLLEXT) $@

winebrowser.exe$(DLLEXT): winebrowser/winebrowser.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winebrowser/winebrowser.exe$(DLLEXT) $@

winecfg.exe$(DLLEXT): winecfg/winecfg.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winecfg/winecfg.exe$(DLLEXT) $@

wineconsole.exe$(DLLEXT): wineconsole/wineconsole.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) wineconsole/wineconsole.exe$(DLLEXT) $@

winedbg.exe$(DLLEXT): winedbg/winedbg.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winedbg/winedbg.exe$(DLLEXT) $@

winefile.exe$(DLLEXT): winefile/winefile.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winefile/winefile.exe$(DLLEXT) $@

winemenubuilder.exe$(DLLEXT): winemenubuilder/winemenubuilder.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winemenubuilder/winemenubuilder.exe$(DLLEXT) $@

winemine.exe$(DLLEXT): winemine/winemine.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winemine/winemine.exe$(DLLEXT) $@

winepath.exe$(DLLEXT): winepath/winepath.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winepath/winepath.exe$(DLLEXT) $@

winetest.exe$(DLLEXT): winetest/winetest.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winetest/winetest.exe$(DLLEXT) $@

winevdm.exe$(DLLEXT): winevdm/winevdm.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winevdm/winevdm.exe$(DLLEXT) $@

winhelp.exe$(DLLEXT): winhelp/winhelp.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winhelp/winhelp.exe$(DLLEXT) $@

winver.exe$(DLLEXT): winver/winver.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winver/winver.exe$(DLLEXT) $@

avitools/aviinfo.exe$(DLLEXT): avitools
avitools/aviplay.exe$(DLLEXT): avitools
clock/clock.exe$(DLLEXT): clock
cmdlgtst/cmdlgtst.exe$(DLLEXT): cmdlgtst
control/control.exe$(DLLEXT): control
expand/expand.exe$(DLLEXT): expand
avitools/icinfo.exe$(DLLEXT): avitools
notepad/notepad.exe$(DLLEXT): notepad
progman/progman.exe$(DLLEXT): progman
regedit/regedit.exe$(DLLEXT): regedit
regsvr32/regsvr32.exe$(DLLEXT): regsvr32
rpcss/rpcss.exe$(DLLEXT): rpcss
rundll32/rundll32.exe$(DLLEXT): rundll32
start/start.exe$(DLLEXT): start
taskmgr/taskmgr.exe$(DLLEXT): taskmgr
uninstaller/uninstaller.exe$(DLLEXT): uninstaller
view/view.exe$(DLLEXT): view
wcmd/wcmd.exe$(DLLEXT): wcmd
wineboot/wineboot.exe$(DLLEXT): wineboot
winebrowser/winebrowser.exe$(DLLEXT): winebrowser
winecfg/winecfg.exe$(DLLEXT): winecfg
wineconsole/wineconsole.exe$(DLLEXT): wineconsole
winedbg/winedbg.exe$(DLLEXT): winedbg
winefile/winefile.exe$(DLLEXT): winefile
winemenubuilder/winemenubuilder.exe$(DLLEXT): winemenubuilder
winemine/winemine.exe$(DLLEXT): winemine
winepath/winepath.exe$(DLLEXT): winepath
winetest/winetest.exe$(DLLEXT): winetest
winevdm/winevdm.exe$(DLLEXT): winevdm
winhelp/winhelp.exe$(DLLEXT): winhelp
winver/winver.exe$(DLLEXT): winver

### Dependencies:
