# This Makefile understands the following targets:
#
# all (default):   build wine
# clean:           remove all intermediate files
# distclean:       also remove all files created by configure
# test:            run tests
# testclean:       clean test results to force running all tests again
# crosstest:       build tests as native windows applications (requires MinGW)
# install-lib:     install libraries needed to run applications
# install-dev:     install development environment
# install:         install everything
# uninstall:       uninstall everything
# depend:          create the dependencies
# ctags:           create a tags file for vim and others.
# etags:           create a TAGS file for Emacs.
# manpages:        compile manpages for Wine API
# htmlpages:       compile html pages for Wine API
# sgmlpages:       compile sgml source for the Wine API Guide
# xmlpages:        compile xml source for the Wine API Guide

# The following variable definitions are copied into all makefiles

prefix          = @prefix@
exec_prefix     = @exec_prefix@
bindir          = @bindir@
libdir          = @libdir@
datarootdir     = @datarootdir@
datadir         = @datadir@
mandir          = @mandir@
fontdir         = ${datadir}/wine/fonts
includedir      = @includedir@/wine
dlldir          = @dlldir@
fakedlldir      = ${dlldir}/fakedlls
top_srcdir      = @top_srcdir@
top_builddir    = @top_builddir@
srcdir          = @srcdir@
SHELL           = /bin/sh
RM              = rm -f
MV              = mv
CC              = @CC@
CXX             = @CXX@
CPPBIN          = @CPPBIN@
CROSSCC         = @CROSSCC@
CFLAGS          = @CFLAGS@
CPPFLAGS        = @CPPFLAGS@
EXTRACFLAGS     = @EXTRACFLAGS@
MSVCRTFLAGS     = @BUILTINFLAG@
TARGETFLAGS     = @TARGETFLAGS@
UNWINDFLAGS     = @UNWINDFLAGS@
LDEXECFLAGS     = @LDEXECFLAGS@
LIBS            = @LIBS@
BISON           = @BISON@
FLEX            = @FLEX@
EXEEXT          = @EXEEXT@
TOOLSEXT        = @TOOLSEXT@
DLLTOOL         = @DLLTOOL@
AR              = @AR@
ARFLAGS         = @ARFLAGS@
RANLIB          = @RANLIB@
STRIP           = @STRIP@
LN_S            = @LN_S@
TOOLSDIR        = @TOOLSDIR@
LD              = @LD@
LDFLAGS         = @LDFLAGS@
DLLFLAGS        = @DLLFLAGS@
PRELINK         = @PRELINK@
FONTFORGE       = @FONTFORGE@
RSVG            = @RSVG@
CONVERT         = @CONVERT@
ICOTOOL         = @ICOTOOL@
MSGFMT          = @MSGFMT@
CROSSTARGET     = @CROSSTARGET@
SUBDIRS         = @SUBDIRS@
RUNTESTFLAGS    = -q -P wine
MAKEDEP         = $(TOOLSDIR)/tools/makedep$(TOOLSEXT)
WINEBUILD       = $(TOOLSDIR)/tools/winebuild/winebuild$(TOOLSEXT)
WRC             = $(TOOLSDIR)/tools/wrc/wrc$(TOOLSEXT)
PACKAGE_VERSION = @PACKAGE_VERSION@
SED_CMD         = LC_ALL=C sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' -e 's,@PACKAGE_VERSION\@,@PACKAGE_VERSION@,g'
LDRPATH_INSTALL = @LDRPATH_INSTALL@
LDRPATH_LOCAL   = @LDRPATH_LOCAL@
INSTALL_PROGRAM = STRIPPROG="$(STRIP)" $(top_srcdir)/tools/install-sh $(INSTALL_PROGRAM_FLAGS)
INSTALL_SCRIPT  = $(top_srcdir)/tools/install-sh $(INSTALL_SCRIPT_FLAGS)
INSTALL_DATA    = $(top_srcdir)/tools/install-sh -m 644 $(INSTALL_DATA_FLAGS)
prog_manext     = 1
api_manext      = 3w
conf_manext     = 5
WINELOADER_PROGRAMS = @WINELOADER_PROGRAMS@
WINELOADER_DEPENDS  = @WINELOADER_DEPENDS@
WINELOADER_INSTALL  = @WINELOADER_INSTALL@
LIBWINE_SHAREDLIB   = @LIBWINE_SHAREDLIB@
LIBWINE_IMPORTLIB   = @LIBWINE_IMPORTLIB@
LIBWINE_INSTALL_LIB = @LIBWINE_INSTALL_LIB@
LIBWINE_INSTALL_DEV = @LIBWINE_INSTALL_DEV@
LIBWINE_LDFLAGS     = @LIBWINE_LDFLAGS@
LIBWINE_DEPENDS     = @LIBWINE_DEPENDS@
ALL_TEST_RESOURCES  = @ALL_TEST_RESOURCES@
DISABLED_SUBDIRS    = @DISABLED_SUBDIRS@
CONFIGURE_TARGETS   = @CONFIGURE_TARGETS@
@ALL_VARS_RULES@
@SET_MAKE@

all: wine
	@echo "Wine build complete."

# Rules for re-running configure

config.status: $(srcdir)/configure
	@./config.status --recheck

include/config.h: include/stamp-h
include/stamp-h: $(srcdir)/include/config.h.in config.status
	@./config.status include/config.h include/stamp-h

# Rules for cleaning

.PHONY: clean distclean __clean__

clean:: __clean__
distclean:: clean
	$(RM) -r autom4te.cache documentation/html documentation/api-guide documentation/api-guide-xml documentation/man$(api_manext)

# Rules for uninstalling

.PHONY: install install-lib install-dev uninstall __uninstall__
uninstall:: __uninstall__
	-rmdir $(DESTDIR)$(fontdir) $(DESTDIR)$(datadir)/wine $(DESTDIR)$(fakedlldir) $(DESTDIR)$(dlldir) $(DESTDIR)$(includedir)/windows/ddk \
	       $(DESTDIR)$(includedir)/windows $(DESTDIR)$(includedir)/msvcrt/sys $(DESTDIR)$(includedir)/msvcrt $(DESTDIR)$(includedir)

# Rules for API documentation

install-manpages:: manpages
	for i in documentation/man$(api_manext)/*.$(api_manext); do $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/$$i; done

.PHONY: install-manpages

# Dependencies between directories

# dependencies needed to build any dll or program
__tooldeps__: libs/port libs/wpp
__builddeps__: __tooldeps__ libs/wine include po
.PHONY: depend dummy check test testclean crosstest __tooldeps__ __builddeps__

dummy:
loader: libs/port libs/wine tools
server: libs/port libs/wine tools include
fonts: tools/sfnt2fon
include: tools tools/widl
libs/wine tools: libs/port
tools/sfnt2fon tools/wmc tools/wrc: tools
tools/widl tools/wmc tools/wrc: libs/wpp
libs/port libs/wine libs/wpp: include/config.h

# Misc rules

TAGSFLAGS = --langmap='c:+.idl.l.rh,make:(Make*.in)'

TAGS etags:
	$(RM) TAGS
	(test -d .git && git ls-files || find -L $(top_srcdir) -name '*.[ch]' -print) | xargs etags -a $(TAGSFLAGS)

tags ctags:
	$(RM) tags
	(test -d .git && git ls-files || find -L $(top_srcdir) -name '*.[ch]' -print) | xargs ctags -a $(TAGSFLAGS)