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

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
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:
