# $Id: Portfile 53590 2009-07-09 10:53:26Z css@macports.org $

PortSystem 1.0

name			doxygen
version			1.5.9
revision		1
categories		textproc devel
maintainers		css
description		Documentation system for several programming languages
long_description \
	It can generate an on-line documentation browser (in HTML) and/or an \
	off-line reference manual from a set of documented source files. \
	There is also support for generating output in RTF (MS-Word), \
	PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The \
	documentation is extracted directly from the sources, which makes it \
	much easier to keep the documentation consistent with the source code. \
	You can configure doxygen to extract the code structure from \
	undocumented source files. This is very useful to quickly find your \
	way in large source distributions. You can also visualize the \
	relations between the various elements by means of include dependency \
	graphs, inheritance diagrams, and collaboration diagrams, which are \
	all generated automatically.

platforms		darwin

homepage		http://www.doxygen.org/
master_sites		ftp://ftp.stack.nl/pub/users/dimitri/
distfiles		${distname}.src${extract.suffix}

checksums		md5 33c5598fa6d24cbc55849eaf89652557 \
			sha1 6211b850bdaa2198e35546e4299a27774c957ece \
			rmd160 51d79c0f8846f47e9aa8c37cd0eb9db630491885

depends_build-append	bin:perl:perl5 bin:flex:flex bin:bison:bison bin:ginstall:coreutils
depends_lib		port:libpng path:bin/dot:graphviz port:libiconv

universal_variant no

configure.pre_args	--prefix ${prefix}
configure.args		--docdir ${prefix}/share/doc --dot ${prefix}/bin/dot

post-patch {
	# ensure correct compilers and compiler options are used
	reinplace "/^TMAKE_CC\[\[:space:\]\]/s%=.*%= ${configure.cc} ${configure.cppflags}%" ${tmake_conf}
	reinplace "/^TMAKE_CXX\[\[:space:\]\]/s%=.*%= ${configure.cxx} ${configure.cppflags}%" ${tmake_conf}
	reinplace "/^TMAKE_LINK\[\[:space:\]\]/s%=.*%= ${configure.cxx}%" ${tmake_conf}
	reinplace "/^TMAKE_LINK_SHLIB\[\[:space:\]\]/s%=.*%= ${configure.cxx}%" ${tmake_conf}

	# may not be strictly necessary, but remove trailing '/' from DESTDIR
	reinplace "s|\$(DESTDIR)/|\$(DESTDIR)|g" ${worksrcpath}/Makefile.in
}

build.target		all

destroot.target		install
destroot.args		INSTALL=${prefix} \
			DOCDIR=${prefix}/share/doc/doxygen \
			MAN1DIR=share/man/man1

variant docs description {Include the doxygen PDF documentation and LaTeX} {
	build.target-append	pdf
	destroot.target-append	install_docs
	depends_build-append	bin:pdflatex:texlive \
				bin:gs:ghostscript
}

variant wizard description {Include the GUI wizard based on Qt} {
	configure.env-append	QTDIR=${prefix}/libexec/qt4-mac
	build.env-append	QTDIR=${prefix}/libexec/qt4-mac
	depends_lib-append	port:qt4-mac
	configure.args-append	--with-doxywizard

	# on Macs, qmake builds .app directories
	patchfiles-append	patch-Makfile.in.diff

	post-patch {
		# give doxywizard the more mac-like name of DoxyWizard
		reinplace "/^TARGET\[\[:space:\]\]/s%=.*%= DoxyWizard%" ${worksrcpath}/addon/doxywizard/doxywizard.pro.in

		reinplace "s|__APPLICATIONS_DIR__|${applications_dir}|" ${worksrcpath}/addon/doxywizard/Makefile.in
		reinplace "s|\$(INSTALL)|\$(DESTDIR)\$(INSTALL)|g" ${worksrcpath}/addon/doxywizard/Makefile.in
	}

	post-destroot {
		# allow doxywizard to be called from the command line
		ln -s ${applications_dir}/DoxyWizard.app/Contents/MacOS/DoxyWizard ${destroot}${prefix}/bin/doxywizard
	}
}

platform darwin {
	# Specify the platform explicitly to avoid a universal build.
	global tmake_conf

	if { ![variant_isset universal] } {
		set tmake_conf	${worksrcpath}/tmake/lib/macosx-c++/tmake.conf
		configure.args-append	--platform macosx-c++
	} else {
		set tmake_conf	${worksrcpath}/tmake/lib/macosx-uni-c++/tmake.conf
		configure.args-append	--platform macosx-uni-c++
	}
}

platform darwin 10 {
	# Disable invalid "Unsupported OS" error on Snow Leopard
	patchfiles-append patch-qtools_qglobal.h.diff
}
