# Automatically generated by make_progs; DO NOT EDIT!!

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

SUBDIRS = \
	avitools \
	clock \
	cmdlgtst \
	control \
	expand \
	hh \
	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 \
	hh \
	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 = \
	msiexec \
	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) \
	hh.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) $@

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