# -*- makefile -*-
#
# Main Makefile for building the Qt library, examples and tutorial.

init: FORCE
	@$(MAKE) all
uninstall: FORCE
	@$(MAKE) qt.uninstall
install: FORCE
	@$(MAKE) qt.install

all: symlinks src-qmake src-moc sub-src sub-tools sub-tutorial sub-examples
	@echo.
	@echo "The Qt library is now built in ./lib"
	@echo "The Qt examples are built in the directories in ./examples"
	@echo "The Qt tutorials are built in the directories in ./tutorial"
	@echo.
	@echo "Enjoy!   - the Trolltech team"
	@echo.

qt.install: qmake-install moc-install src-install tools-install plugins-install
qt.uninstall: qmake-uninstall moc-uninstall src-uninstall tools-uninstall plugins-uninstall

#moc
moc-uninstall: .qmake.cache
	(cd src\moc & $(MAKE) uninstall & cd ..\..)
moc-install: src-moc
	(cd src\moc & $(MAKE) install & cd ..\..)
src-moc: src-qmake FORCE
	(cd src\moc & $(MAKE) & cd ..\..)

#Qt
src-uninstall: .qmake.cache
	(cd src & $(MAKE) uninstall & cd ..)
	(cd src & $(MAKE) -f Makefile.main uninstall & cd ..)
src-install: sub-src
	(cd src & $(MAKE) install & cd ..)
	(cd src & $(MAKE) -f Makefile.main install & cd ..)
sub-src: src-moc .qmake.cache FORCE
	(cd src & $(MAKE) & cd ..)
	(cd src & $(MAKE) -f Makefile.main & cd ..)

#qmake
qmake-uninstall: .qmake.cache
	(cd qmake & $(MAKE) uninstall & cd ..)
qmake-install: src-qmake
	(cd qmake & $(MAKE) install & cd ..)
src-qmake: symlinks FORCE
	(cd qmake & $(MAKE) & cd ..)

#tools
tools-uninstall: .qmake.cache
	(cd tools & $(MAKE) uninstall & cd ..)
tools-install: sub-tools
	(cd tools & $(MAKE) install & cd ..)
sub-tools: sub-plugins FORCE
	(cd tools & $(MAKE) & cd ..)

#plugins
plugins-uninstall: .qmake.cache
	(cd plugins\src & $(MAKE) uninstall & cd ..\..)
plugins-install: sub-plugins
	(cd plugins\src & $(MAKE) install & cd ..\..)
sub-plugins: sub-src .qmake.cache FORCE
	(cd plugins\src & $(MAKE) & cd ..\..)

#tutorials
sub-tutorial: sub-src FORCE
	(cd tutorial & $(MAKE) & cd ..)


#examples
sub-examples: sub-tools FORCE
	(cd examples & $(MAKE) & cd ..)

#docs
doc: FORCE
	qdoc util/qdoc/qdoc.conf

symlinks: .qmake.cache
        #	@(cd include & rm -f q*.h; ln -s ../src/*/q*.h .; ln -s ../extensions/*/src/q*.h .; rm -f q*_p.h)

clean: distclean
uiclean: distclean
mocclean: distclean
distclean:
	(cd tools & $(MAKE) $@ & cd ..)
	(cd src\moc & $(MAKE) $@ & cd ..\..)
	(cd src & $(MAKE) $@ & cd ..)
	(cd src && $(MAKE) -f Makefile.main $@ & cd ..)
	(cd tutorial & $(MAKE) $@ & cd ..)
	(cd plugins\src & $(MAKE) $@ & cd ..\..)
	(cd examples & $(MAKE) $@ & cd ..)

#confclean is actually the same as distclean, except qmake and moc
#are not cleaned.
confclean:
	(cd tools & $(MAKE) distclean & cd ..)
	(cd src & $(MAKE) distclean & cd ..)
	(cd tutorial & $(MAKE) distclean & cd ..)
	(cd plugins\src & $(MAKE) distclean & cd ..\..)
	(cd examples & $(MAKE) distclean & cd ..)

.qmake.cache:
	@echo.
	@echo '  Qt must first be configured using the "configure" script.'
	@echo.
        #	@test ! /bin/true

FORCE:
        @cd .
