# 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 \
	net \
	notepad \
	oleview \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	spoolsv \
	start \
	svchost \
	taskmgr \
	uninstaller \
	view \
	wineboot \
	winebrowser \
	winecfg \
	wineconsole \
	winedbg \
	winedevice \
	winefile \
	winemenubuilder \
	winemine \
	winepath \
	winetest \
	winevdm \
	winhelp \
	winver \
	wordpad \
	write \
	xcopy

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

# 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)

PROGRAMS = wineapploader winelauncher

@MAKE_RULES@

all: $(PROGRAMS) $(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)

# Rules for testing

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