# Automatically generated by make_progs; DO NOT EDIT!!

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

SUBDIRS = \
	clock \
	cmd \
	cmdlgtst \
	control \
	eject \
	expand \
	explorer \
	hh \
	icinfo \
	iexplore \
	msiexec \
	notepad \
	oleview \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	start \
	taskmgr \
	uninstaller \
	view \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemenubuilder \
	winemine \
	winepath \
	winetest \
	winevdm \
	winhelp \
	winver \
	wordpad

# Sub-directories to run make install into
INSTALLSUBDIRS = \
	clock \
	cmd \
	control \
	eject \
	expand \
	explorer \
	hh \
	icinfo \
	iexplore \
	msiexec \
	notepad \
	oleview \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	start \
	taskmgr \
	uninstaller \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemenubuilder \
	winemine \
	winepath \
	winevdm \
	winhelp \
	winver \
	wordpad

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

INSTALLDIRS = $(DESTDIR)$(bindir)

@MAKE_RULES@

all: wineapploader winelauncher $(SUBDIRS)

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 $(INSTALLDIRS) dummy
	$(INSTALL_SCRIPT) wineapploader $(DESTDIR)$(bindir)/wineapploader

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

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

install-progs: # nothing to do here

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

uninstall::
	-cd $(DESTDIR)$(bindir) && $(RM) wineapploader winelauncher $(INSTALLPROGS)
	-rmdir $(DESTDIR)$(dlldir)

clean::
	$(RM) wineapploader winelauncher

# Rules for testing

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