# 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 \
	winhlp32 \
	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 \
	winhlp32 \
	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

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