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

SUBDIRS = \
	avitools \
	clock \
	cmdlgtst \
	control \
	expand \
	notepad \
	osversioncheck \
	progman \
	regapi \
	regedit \
	regsvr32 \
	regtest \
	rpcss \
	rundll32 \
	start \
	uninstaller \
	view \
	wcmd \
	wineboot \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemine \
	winepath \
	winhelp \
	winver

# Sub-directories to run make install into
INSTALLSUBDIRS = \
	avitools \
	clock \
	control \
	expand \
	notepad \
	progman \
	regedit \
	regsvr32 \
	rpcss \
	rundll32 \
	start \
	uninstaller \
	wcmd \
	wineboot \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemine \
	winepath \
	winhelp \
	winver

# Programs to install in bin directory
# We don't install everything to avoid polluting /usr/bin too much
INSTALLPROGS = \
	notepad \
	progman \
	regedit \
	regsvr32 \
	uninstaller \
	wcmd \
	wineboot \
	winecfg \
	wineconsole \
	winedbg \
	winefile \
	winemine \
	winepath \
	winhelp

# Symlinks to apps that we want to run from inside the source tree
SYMLINKS = \
	rpcss.exe \
	wcmd.exe \
	wineconsole.exe \
	winedbg.exe \
	winhelp.exe

@MAKE_RULES@

all: wineapploader winelauncher $(SUBDIRS) $(SYMLINKS:%=%$(DLLEXT))

wineapploader: wineapploader.in
	sed -e 's,@bindir\@,$(bindir),g' $(SRCDIR)/wineapploader.in >$@ || $(RM) $@

winelauncher: winelauncher.in
	sed -e 's,@bindir\@,$(bindir),g' -e 's,@libdir\@,$(libdir),g' -e 's,@dlldir\@,$(dlldir),g' $(SRCDIR)/winelauncher.in >$@ || $(RM) $@

# Rules for installation

.PHONY: install-apploader install-progs install-progs.so $(INSTALLPROGS:%=%/__installprog__)

install-apploader: wineapploader dummy
	$(MKINSTALLDIRS) $(bindir)
	$(INSTALL_SCRIPT) wineapploader $(bindir)/wineapploader

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

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

install-progs: # nothing to do here

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

uninstall::
	$(RM) $(bindir)/wineapploader $(bindir)/winelauncher $(INSTALLPROGS:%=$(bindir)/%)
	-rmdir $(dlldir)

clean::
	$(RM) wineapploader winelauncher $(SYMLINKS)

# Rules for testing

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

# Rules for symlinks

rpcss.exe$(DLLEXT): rpcss/rpcss.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) rpcss/rpcss.exe$(DLLEXT) $@

wcmd.exe$(DLLEXT): wcmd/wcmd.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) wcmd/wcmd.exe$(DLLEXT) $@

wineconsole.exe$(DLLEXT): wineconsole/wineconsole.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) wineconsole/wineconsole.exe$(DLLEXT) $@

winedbg.exe$(DLLEXT): winedbg/winedbg.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winedbg/winedbg.exe$(DLLEXT) $@

winhelp.exe$(DLLEXT): winhelp/winhelp.exe$(DLLEXT)
	$(RM) $@ && $(LN_S) winhelp/winhelp.exe$(DLLEXT) $@

wcmd/wcmd.exe$(DLLEXT): wcmd
wineconsole/wineconsole.exe$(DLLEXT): wineconsole
winedbg/winedbg.exe$(DLLEXT): winedbg
winhelp/winhelp.exe$(DLLEXT): winhelp

### Dependencies:
