#makefile for PDF editor
.PHONY: distclean clean pdfedit kernel xpdf kpdf-kde-3.3.2 utils qoutputdevices xpdf_configure install qsa qsa_configure

include Makefile.flags

#make PDF editor - source and documentation
all: pdfedit

#make PDF editor + tests
tests: all kernel-tests

# kernel tests
kernel-tests: kernel
	cd kernel && $(QTDIR)/bin/qmake -o Makefile-tests kernel-tests.pro && make -f Makefile-tests

# PDF editor
pdfedit: ../config.pro utils kernel xpdf qoutputdevices qsa
	cd gui && $(QTDIR)/bin/qmake && make

# QOutputDevices
qoutputdevices: xpdf config_xpdf_variables
	cd kpdf-kde-3.3.2 && $(QTDIR)/bin/qmake && make staticlib

# Utils
utils: xpdf
	cd utils && make

#QSA
qsa: qsa/Makefile.qsa
	cd qsa && make staticlib

qsa/Makefile.qsa: qsa/qsa.pro
	cd qsa && ./configure

# Kernel
kernel: xpdf config_xpdf_variables utils
	cd kernel && $(QTDIR)/bin/qmake && make staticlib

# XPdf
xpdf: xpdf_configure
	cd xpdf && make libxpdf

# XPdf configure
xpdf_configure: xpdf/config.status

#if any of the Makefile.in changes, we need to rebuild corresponding Makefile in xpdf -> we rebuild them all to be sure
xpdf/config.status: xpdf/Makefile.in xpdf/xpdf/Makefile.in xpdf/splash/Makefile.in xpdf/goo/Makefile.in xpdf/fofi/Makefile.in
	cd xpdf && ./configure $(xpdf_configure_flags)

#parsed variables generated by ./configure from xpdf
config_xpdf_variables: xpdf/config.status
	cat xpdf/config.status | grep s,@[^@,]*@, | sed 's/^s,@\([^@,]*\)@,\([^,]*\),.*/config_xpdf_\1=\2/g' > config_xpdf_variables

# Cleanup
clean:
	cd gui && make clean
	cd qsa && make clean || true
	cd kernel && make clean
	cd utils && make clean
	cd xpdf && make clean
	cd kpdf-kde-3.3.2 && make clean
	rm config_xpdf_variables

# Dist Cleanup
distclean:
	cd gui && make distclean
	cd qsa && make distclean || true
	cd kernel && make distclean
	cd utils && make distclean
	cd xpdf && make distclean
	cd kpdf-kde-3.3.2 && make distclean
	rm config_xpdf_variables

# Installation
install:
	cd gui && make install

# Uninstallation
uninstall:
	cd gui && make uninstall
