# 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 \
	uninstaller \
	view \
	wcmd \
	wineboot \
	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 \
	uninstaller \
	wcmd \
	wineboot \
	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 \
	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 \
	uninstaller.exe \
	view.exe \
	wcmd.exe \
	wineboot.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) $@

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) $@

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
uninstaller/uninstaller.exe$(DLLEXT): uninstaller
view/view.exe$(DLLEXT): view
wcmd/wcmd.exe$(DLLEXT): wcmd
wineboot/wineboot.exe$(DLLEXT): wineboot
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:
