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