# Automatically generated by make_progs; DO NOT EDIT!!

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

SUBDIRS = \
	avitools \
	clock \
	cmdlgtst \
	control \
	expand \
	msiexec \
	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 \
	msiexec \
	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$(DLLEXT) \
	aviplay.exe$(DLLEXT) \
	clock.exe$(DLLEXT) \
	cmdlgtst.exe$(DLLEXT) \
	control.exe$(DLLEXT) \
	expand.exe$(DLLEXT) \
	icinfo.exe$(DLLEXT) \
	msiexec.exe$(DLLEXT) \
	notepad.exe$(DLLEXT) \
	progman.exe$(DLLEXT) \
	regedit.exe$(DLLEXT) \
	regsvr32.exe$(DLLEXT) \
	rpcss.exe$(DLLEXT) \
	rundll32.exe$(DLLEXT) \
	start.exe$(DLLEXT) \
	taskmgr.exe$(DLLEXT) \
	uninstaller.exe$(DLLEXT) \
	view.exe$(DLLEXT) \
	wcmd.exe$(DLLEXT) \
	wineboot.exe$(DLLEXT) \
	winebrowser.exe$(DLLEXT) \
	winecfg.exe$(DLLEXT) \
	wineconsole.exe$(DLLEXT) \
	winedbg.exe$(DLLEXT) \
	winefile.exe$(DLLEXT) \
	winemenubuilder.exe$(DLLEXT) \
	winemine.exe$(DLLEXT) \
	winepath.exe$(DLLEXT) \
	winetest.exe$(DLLEXT) \
	winevdm.exe$(DLLEXT) \
	winhelp.exe$(DLLEXT) \
	winver.exe$(DLLEXT)

@MAKE_RULES@

all: wineapploader winelauncher $(SUBDIRS) $(SYMLINKS)

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::
	-cd $(bindir) && $(RM) wineapploader winelauncher $(INSTALLPROGS)
	-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) $@

msiexec.exe$(DLLEXT): msiexec/msiexec.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) msiexec/msiexec.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
msiexec/msiexec.exe$(DLLEXT): msiexec
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:
