# 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 \
	reg \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	secedit \
	services \
	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 \
	reg \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	secedit \
	services \
	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

@MAKE_RULES@

all: $(PROGRAMS) $(SUBDIRS)

wineapploader: wineapploader.in
	sed -e 's,@bindir\@,$(bindir),g' $(SRCDIR)/wineapploader.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:: install-progs$(DLLEXT) $(INSTALLDIRS)

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

# Rules for testing

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